Code VBA LostFocus

Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 19 janv. 2017 à 15:47
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 - 22 janv. 2017 à 10:30
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 samedi 14 janvier 2017 Statut Membre Dernière intervention 28 janvier 2017 1
19 janv. 2017 à 17:17
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 jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
19 janv. 2017 à 18:02
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 jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
19 janv. 2017 à 18:05
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 samedi 14 janvier 2017 Statut Membre Dernière intervention 28 janvier 2017 1 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
19 janv. 2017 à 20:02
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 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
19 janv. 2017 à 19:18
bonsoir, je suggère
isnull(Me.Numero_formation)
au lieu de
Me.Numero_formation = Null
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
19 janv. 2017 à 19:24
Et, si tu trouves plus clair, tu peux faire
Not Formation_annulee
au lieu de
Formation_annulee = False
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
19 janv. 2017 à 19:26
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 jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 40
22 janv. 2017 à 01:36
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
Modifié par f894009 le 22/01/2017 à 08:57
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 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471 > ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020
22 janv. 2017 à 10:30
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