Bonjour a tous,
Alors voila, j’ai un petit souci VBA.
Je suis débutant, donc j’ai repris un code d’une ancienne base de donnée pour l’approprier à mes besoins.
Je souhaite faire une fonction à « deux conditions » : (si la première condition est vraie alors passer a la deuxième condition et si celle-ci est également vrai alors appliquer la fonction qui est une modification de champs).
Dans mon cas, voici la fonction que je souhaite avoir :
A l’ouverture de la fonction « ComesToEnd », aller chercher dans la DataBase « CalibrationDataBase » la colonne « Status ». Pour chaque ligne, si la valeur de la colonne « Status » est égale a « In Use » ou « Comes To End » et que la valeur de la colonne « CalibrationDueDate » est supérieure a la date d’aujourd’hui, alors modifier le « Status » pour « Expired ».
Voici le code utilisé :
Et le résultat que j’obtiens est qu’il ne prend pas en compte la première condition : La fonction prend en compte toutes les valeurs de « Status » alors qu’il ne devrait prendre en compte que les status « In Use » et « Comes To End ».
Voila si vous avez la solution cela me rendrai un énorme service car je me casse les dents depuis pas mal de temps…
Merci par avance pour votre aide.
Alors voila, j’ai un petit souci VBA.
Je suis débutant, donc j’ai repris un code d’une ancienne base de donnée pour l’approprier à mes besoins.
Je souhaite faire une fonction à « deux conditions » : (si la première condition est vraie alors passer a la deuxième condition et si celle-ci est également vrai alors appliquer la fonction qui est une modification de champs).
Dans mon cas, voici la fonction que je souhaite avoir :
A l’ouverture de la fonction « ComesToEnd », aller chercher dans la DataBase « CalibrationDataBase » la colonne « Status ». Pour chaque ligne, si la valeur de la colonne « Status » est égale a « In Use » ou « Comes To End » et que la valeur de la colonne « CalibrationDueDate » est supérieure a la date d’aujourd’hui, alors modifier le « Status » pour « Expired ».
Voici le code utilisé :
Code:
Sub Expired()
On Error Resume Next
Dim d As DAO.Database
Dim r As Recordset
Dim Status As Field, CalibrationDueDate As Field
Set d = CurrentDb()
Set r = CurrentDb.OpenRecordset("CalibrationDataBase")
Set Status = r.Fields("Status")
Set CalibrationDueDate = r.Fields("CalibrationDueDate")
Do Until r.EOF
If r!Status = "In Use" Or "Comes To End" Then
If DateDiff("d", Date, CalibrationDueDate) < 0 Then
r.Edit
r!Status = "Expired"
r.Update
End If
End If
r.MoveNext
Loop
r.Close
End Sub
Et le résultat que j’obtiens est qu’il ne prend pas en compte la première condition : La fonction prend en compte toutes les valeurs de « Status » alors qu’il ne devrait prendre en compte que les status « In Use » et « Comes To End ».
Voila si vous avez la solution cela me rendrai un énorme service car je me casse les dents depuis pas mal de temps…
Merci par avance pour votre aide.