MsgBox qui s'affiche deux fois

Bonjour, je suis en train de créer un formulaire de saisie, et j'aimerais que lorsque l'utilisateur saisie une mission spatiale déjà répertoriée dans mon tableau cela renvoie le message "cette mission existe déjà" et que le userform se ferme tout de suite après. Tout ce déroule bien sauf que, lorsque mon userform se ferme le MsgBox se re affiche. auriez vous une idée de comment résoudre ce problème s'il vous pait.

ci joint une photo du code.

image

Bonjour,

Pour commencer, le "Else" n'est pas utile puisque non utilisé.
Concernant votre demande, le message s'affichera autant de fois que la condition qui le génère est vraie. Pour limiter l'affichage à une occurrence, il y a plusieurs solutions, mais je pense que la plus simple est d'ajouter un Exit For après Unload UserForm1.

Merci.

le problème c'est que avec le "End For" avant le "unload userform1" le userform ne ferme plus et j'aimerai qu'il se ferme apres avoir appuyé sur le "OK" de la MsgBox.

et même avec "end for " après "unloadform1" j'ai le même problème qu'au début

Pas sur de bien saisir, mais j'ai une autre piste. Pouvez vous joindre le code ci dessus en texte et non en image, en utilisant le bouton de mise en forme </> ? Ca m'évitera de tout retaper...

voici le code

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
For i = 2 To Sheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
        If Sheets("DATA").Range("A" & i).Value = TextBox1 Then
            MsgBox ("Cette mission est deja repertoriée. Veuillez saisir une nouvelle mission")
            Unload UserForm1
            End If
        Next
End Sub

2ème essai :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim MsgApparu As Boolean
For i = 2 To Sheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
        If Sheets("DATA").Range("A" & i).Value = TextBox1 And Not MsgApparu Then
            MsgBox ("Cette mission est deja repertoriée. Veuillez saisir une nouvelle mission")
            Unload UserForm1
            MsgApparu = True
         End If
Next
End Sub

...ça ne fonctionne pas non plus.

Un fichier de démo à transmettre (sur lequel le soucis se pose) ?

Désolé pour le temps de réponse, j'ai finis par trouver une solution.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
For i = 2 To Sheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
        If Sheets("DATA").Range("A" & i).Value = TextBox1 Then
            MsgBox ("Cette mission est deja repertoriée. Veuillez saisir une nouvelle mission")
            TextBox=""
            Unload UserForm1
            End If
        Next
End Sub

j'ai juste mis un texte vide dans la textbox.

Merci beaucoup de votre aide Pablo22.

Bonsoir …

[TB [Missions]] désignant la colonne des Missions du tableau TB (évidemment structuré) avec l'utilisation de la variable de sortie Cancel :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Application.CountIf([TB[Missions]], TextBox1) > 0 Then
    MsgBox "Cette mission est déjà répertoriée ! ",, "Veuillez saisir une nouvelle mission"
    TextBox1 = ""
    Cancel = 1 ‘on ne sort pas pour un autre essai
  End If
End Sub

Remarque : =1 pour = True

Rechercher des sujets similaires à "msgbox qui affiche deux fois"