Code VBA LostFocus

ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans une BDD Access, j'ai un événement LostFocus :
If Date_formation <> "" And Formation_annulee = False And Me.Numero_formation = Null Then


Qu'est-ce qui cloche?

Sachant que j'en ai un autre qui fonctionne très bien, je ne comprends pas pourquoi celui-là ne veut pas s'activer...

Merci!

2 réponses

DSBix Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Tu veux dire que le code n'est pas du tout exécuté ?
Un peu comme si les macros n'étaient pas activées pour cette BDD.
C'est ça ?
0
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   40
 
Non, comme je le dis dans ma deuxième partie : j'en ai une autre (sur LostFocus d'un autre contrôle) qui fonctionne très bien.
0
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   40
 
Voici le code complet (anonymisé) :

Private Sub Titre_formation_LostFocus()

If Date_formation <> "" And Formation_annulee = False And Numero_formation = Null Then
If MsgBox("Attention!" & Chr(10) & "Demander numéro de formation aux RH", vbExclamation, "NUMÉRO DE FORMATION") = vbOK Then
MsgBox "ENVOYER COURRIEL À :" & Chr(10) & "...@..." & Chr(10) & Chr(10) & "Date : " & Date_formation & " Heure : " & Heure_debut _
& Chr(10) & Chr(10) & "Titre : " & Titre_formation & Chr(10) & Chr(10) & "Type de formation : " & Type_formation
End If
End If

End Sub


Et l'autre, qui fonctionne super bien :


Private Sub Type_formation_LostFocus()

If Date_formation <> "" And Agenda = False And Formation_annulee = False Then
If MsgBox("Attention!" & Chr(10) & "Ne pas oublier d'inscrire à l'agenda", vbExclamation, "AGENDA") = vbOK Then
MsgBox "INFORMATIONS POUR L'AGENDA" & Chr(10) & Chr(10) & "Date : " & Date_formation & " Heure : " & Heure_debut _
& Chr(10) & Chr(10) & "Titre : " & Titre_formation & Chr(10) & Chr(10) & "Type de formation : " & Type_formation _
& Chr(10) & Chr(10) & "(Ne pas oubliser de cocher « Agenda » par la suite.)"
Me.Agenda_Étiquette.ForeColor = 3937500
End If

Else: Me.Agenda_Étiquette.ForeColor = 8355711

End If

End Sub
0
DSBix Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   1 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
OK.
Il faudrait que tu sois plus précis. En fait, si je comprends, le code de LostFocus est exécuté, mais il ne fait pas ce que tu attends. Genre il ne rentre jamais dans le "If Date_formation <> "" And Formation_annulee = False And Numero_formation = Null".
Si c'est ça, je rejoins yg_be sur l'utilisation de IsNull(Numero_formation), c'est le seul critère différent entre les deux codes.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, je suggère
isnull(Me.Numero_formation)
au lieu de
Me.Numero_formation = Null
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Et, si tu trouves plus clair, tu peux faire
Not Formation_annulee
au lieu de
Formation_annulee = False
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Une autre fois, ce serait bien que tu expliques ce qui ne va pas, par exemple nous dire que le code suivant le
if
n'est pas exécuté alors que tu penses qu'il devrait l'être.
0
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   40
 
Bonjour vous deux,
Merci pour vos réponses.
En fait, il ne se passe rien du tout, lorsque je sors du contrôle. Difficile pour moi de vous dire où ça bogue!
Je vais essayer lundi (de retour au bureau), avec IsNull(Me.Numero_formation)...
À suivre...
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Excusez l'incruste, textbox ou autre objet, chaine de caractère donc test "vide" si Numero_formation est une textebox:
ex:
Numero_formation=""

Si c'st un numérique test < a la valeur souhaitée
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour, tu peux mettre un point d'arrêt sur la première instruction de Titre_formation_LostFocus(), cela te permettra de suivre ce que fait ton code.
Vois, par exemple, "Définition de point d'arrêt" dans https://cafeine.developpez.com/access/tutoriel/debugprint/
0