• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Gegevens checken op geldigheid

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.233
Ik moet een aantal excel lijsten van clubs importeren in Access. Die worden niet altijd correct ingevuld. Ik voorzie wel validaties maar als de celinhoud erin wordt gezet via copy-paste is deze natuurlijk weg.

Daarom zou ik in een BeforeSave Macro het volgende willen doen:

-Validaties terug erin
-ongeldige gegevens omcirkelen zodat ze zien wat niet geaccepteerd wordt en kunnen verbeteren


Dat kan geen probleem zijn.

En als er nog ongeldige data inzitten: Cancel = True

Maar codeer ik het feit dat er nog ongeldige gegevens zijn?
 
Maar codeer ik het feit dat er nog ongeldige gegevens zijn?
Is dit een complete zin? Want ik snap 'm niet :). Als je toch een macro maakt, laat die dan ook de validatie uitvoeren. Lijkt mij een stuk logischer dan dat je achteraf validatie op reeds ingevulde cellen gaat zetten. Dan zet je de gebruiker gelijk aan het werk bij het sluiten van het bestand. Met een simpele Userform laat je dan de foutieve waarde zien, eventueel in een label wat de correcte inhoud moet zijn, en in een ander tekstvak laat je ze de juiste waarde invullen. En zo loop je dan met het formulier het hele bestand door tot alles is opgelost. Kortom: leg het werk bij de gebruiker.
 
@Octafish

Om één of andere reden krijg ik geen mailtje meer als iemand gereageerd heeft.
De validatie staan er in het begin als in. Maar als iemand iets in de cellen invoert via copy-paste is die validatie toch weg?
Daarom zet ik ze er op het einde weer in (ondertussen gegoogled, werk met rangex.validation.value
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim c As Range, teller As Integer

ValidateAll

For Each c In LO.Range.Cells

If c.Validation.Value = False Then
    teller = teller + 1
End If

Next c

If teller > 0 Then
MsgBox teller & " Wrong data, file will not be saved :( "
Cancel = True
End If


End Sub

Dus ze zien wat fout is rod omcirkeld - lijkt me eenvoudiger dan een formulier (er zijn er die het presteren om een hele kolom leeg te laten...)

Maar nu is het probleem dat bij toevoegen van een nieuwe rij de validaties niet worden overgenomen. Maar dat probleem heb ik in een nieuwe post gezet)
 
Als je een correcte tabel gebruikt, worden de validaties gewoon doorgezet in de tabel. En als je het werkblad op de juiste manier beveiligt, kun je er toch voor zorgen dat er alleen gegevens geplakt mogen worden?
Ik zou verder een strikt beleid voeren aangaande de aan te leveren data. Als die niet voldoet aan de specificaties: terugsturen naar de afzender. Het is niet jouw verantwoordelijkheid of de aangeleverde data klopt: jij bent hooguit verantwoordelijk voor wat er in de database terecht komt. Dus heb je het volste recht om het terug te sturen:).
 
@Octafish
Als je een correcte tabel gebruikt, worden de validaties gewoon doorgezet in de tabel.
Als je met TAB vanuit de laatste cel werkt wel. Maar niet als je in de nieuwe rij begint te typen :(
Heb nu een knop gemaakt die een nieuwe rij toevoegt, dan wordt de validatie overgenomen.

En als je het werkblad op de juiste manier beveiligt, kun je er toch voor zorgen dat er alleen gegevens geplakt mogen worden?
Hoe doe je dat?

Ik zou verder een strikt beleid voeren aangaande de aan te leveren data. Als die niet voldoet aan de specificaties: terugsturen naar de afzender. Het is niet jouw verantwoordelijkheid of de aangeleverde data klopt: jij bent hooguit verantwoordelijk voor wat er in de database terecht komt. Dus heb je het volste recht om het terug te sturen


Ik heb geen zin om steeds geconfronteerd te worden met problemen bij de invoer in Acces (fouten met validaties, verplichte velden, datums die geen datums zijn enz. ) en dan terug sturen.
Ze moeten van meet af aan correcte lijsten toesturen, punt uit, anders doe ik er niets mee. Ik moet concreet licenties sturen naar leden van een aantal clubs, en één van de voorzitters houdt ervan om dwars te liggen...
 
Maak gebruik van een Userform, dan heb je legio mogelijkheden om het correct invullen af te dwingen.
 
Bedankt voor de reacties.
Een UserForm is niet aangewezen, die clubs hebben hun gegevens al in eigen Excel lijsten, ik kan ze moeilijk vragen alles één voor één naar een UserForm over te brengen als ze veel kunnen kopiëren/plakken.
 
Elke club zal zijn lijst hebben met fouten die jij niet wilt.
Kan je dan niet 1 malig een macro of zoiets maken zodat je wel de gegevens kan invoeren?
Je wilt ze laten kopieren en plakken en dan zal je het probleem blijven houden lijkt me.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan