Code VBA LostFocus

ButteDuLac Messages postés 534 Statut Membre -  
yg_be Messages postés 24281 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 24 Statut Membre 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 534 Statut Membre 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 534 Statut Membre 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 24 Statut Membre 1 > ButteDuLac Messages postés 534 Statut Membre
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
bonsoir, je suggère
isnull(Me.Numero_formation)
au lieu de
Me.Numero_formation = Null
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
Et, si tu trouves plus clair, tu peux faire
Not Formation_annulee
au lieu de
Formation_annulee = False
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
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 534 Statut Membre 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 17414 Date d'inscription   Statut Membre Dernière intervention   1 715 > ButteDuLac Messages postés 534 Statut Membre
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585 > ButteDuLac Messages postés 534 Statut Membre
 
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