Bonjour à tous,
Je souhaite réaliser les actions suivantes en VBA :
A partir d'une requête contenant une colonne avec des numéros et une colonne avec des dates, Pour chaque numéro, tester l'existence d'une date comprise entre le 1er et le dernier jour d'un mois. Si elle n'existe pas, alors créer une ligne dans une table avec la date en cours, sinon importer dans cette table la ligne testée.
Voici ce que j'ai déjà tapé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub Commande4_Click() DtDeb = Me.DateDeb 'Premier jour du mois sélectionné DtFin = Me.DateFin 'Dernier jour du mois sélectionné DoCmd.SetWarnings False 'désactive les alertes DoCmd.RunSQL ("delete * from [FeuillePresence ]") 'vide la table FeuillePresence For Boucle = 0 To DateDiff("d", DtDeb, DtFin) 'Créé une boucle sur la période du mois en cours MaDate = DtDeb + Boucle If DCount("Dr_id", "R_Feuille_Presence", "Dr_id=" & MaDate) = 0 Then 'teste l'existence d'une date correspondant à la date de la variable en cours DoCmd.RunSQL "INSERT INTO FeuillePresence (Dr_id) Values (#" & Format(MaDate, "mm/dd/yyyy") & "#);" 'insère les lignes voulues End If Next DoCmd.SetWarnings True 'réactive les alertes End Sub
Le soucis est que je ne sais pas comment n'effectuer le test avec Dcount que sur une seule partie des enregistrements à la fois comme il suit :
1 10/10/2014 1 11/10/2014 1 12/10/2014 2 04/10/2014 2 05/10/2014 3 10/10/2014 3 20/10/2014
1) je récupère l'ensemble de ma collection de la colonne 1 (donc 1 2 et 3).
2)Pour le 1er numéro, je parcours tout les jours du mois (donc de 1 à 31) et je vérifie que pour chacun d'eux il y ait une correspondance
3) s'il n'y en a pas, dans la table FeuillePresence, je créé une ligne avec le numéro de l'enregistrement actuellement testé et en valeur date la date testée.
4) si il y en a, dans la table FeuillePresence, je créé une ligne en reprenant les informations de la ligne actuellement testée
5) je passe au numéro suivant et réitère mes tests.
Sauriez-vous comment écrire la 1ère et 2nd étape ?
Merci d'avance,
Sardaucar
Partager