Code VBA LostFocus

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

  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 ?
    1. 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.
    2. 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
    3. @ButteDuLacOK.
      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.
  2. Contributeur
    bonsoir, je suggère
    isnull(Me.Numero_formation)
    au lieu de
    Me.Numero_formation = Null
    1. Contributeur
      Et, si tu trouves plus clair, tu peux faire
      Not Formation_annulee
      au lieu de
      Formation_annulee = False
    2. Contributeur
      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.
    3. 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...
    4. @ButteDuLacBonjour,
      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