Premier message puis second

Voilà, dans un userform, j'ai un message qui s'affiche en cas d'erreur. Je voudrais qu'un autre message s'affiche si on réalise une seconde erreur. Mais voilà, j'ai déclaré la variable "truc" mais rien y fait, elle reste à 0 et c'est le premier message qui ne cesse de s'afficher.

Comment faire ?

If TextBox1.Value <> "" Then

        If MsgBox("Concentrez-vous " & truc & " !", vbExclamation, "pouet") = vbOK Then
            truc = truc + 1
        End If

        If truc = 1 Then
            Unload Me
                If MsgBox("Bien essayé " & truc & ", mais ce n'est toujours pas ça, au revoir !", vbCritical, "pouet") = vbOK Then
                End If
            ActiveWorkbook.Close savechanges:=False
        End If

End If

Bonjour,

En essayant une boucle, j'ai vu que c'était faisable

https://www.excel-pratique.com/fr/vba/boucles.php

Sub boucle_for()

    For i = 1 To 2
        MsgBox i
    Next

End Sub

crdlt,

André

Peux-tu m'aider, car j'ai déjà essayé avec une boucle For et je n'obtiens pas de résultat, je ne sais pas si j'ai bien réalisé celle-ci...

Bonjour,

déclarer Static truc

Et la remettre à 0 quand elle a atteint 2.

eric

Re,

Je ne te garantie rien

bon d'après ce que j'ai compris, faut déclaré

1/ truc

Franchement, si vous ne m'écrivez pas le code, je ne comprends pas...

Re,

je supprime pour pas mettre en confusion les futurs posts

En fait, "truc" je m'en fiche, c'était juste pour constater que cette variable ne s'incrémentait pas.

Donc j'ai repris ce que tu as mis sans truc, et ça ne marche pas (avec non plus d'ailleurs). Et je retombe sur un code que j'ai déjà essayé plusieurs fois, par moi même d'ailleurs...

      Dim i As Integer

If TextBox1.Value <> "" Then

            i = 1
           For i = 1 To 2

            If MsgBox("Concentrez-vous " & Application.UserName & " !", vbExclamation, "pouet") = vbOK Then
                    MsgBox i
            End If

            If i = 2 Then
                Unload Me
                    If MsgBox("Bien essayé " & Application.UserName & ", mais ce n'est toujours pas ça, au revoir !", vbCritical, "pouet") = vbOK Then
                MsgBox i
            End If
            ActiveWorkbook.Close savechanges:=False
        End If
Next
End If

Les deux messages s'enchaînent... Ce que je ne souhaite pas ! Je veux d'abord le premier, puis le second si je clique à nouveau.


L'ensemble étant dans :

Private Sub CommandButton2_Click()

End Sub

Re,

je supprime pour pas mettre en confusion les autres posts

Honnêtement cela doit être tout bête mais là moi je suis dans une impasse et pourtant çà à l'ai r d'être simple, je vais regardé çà à tête reposé

Ca ne fonctionne pas...


Ca ne fonctionne pas...

bonjour,

essaie ceci avec static comme eriiic te l'a suggéré

Static truc
If TextBox1.Value <> "" Then
        If truc = 0 Then
        If MsgBox("Concentrez-vous " & truc & " !", vbExclamation, "pouet") = vbOK Then
            truc = truc + 1
        End If
        ElseIf truc = 1 Then
            Unload Me
                If MsgBox("Bien essayé " & truc & ", mais ce n'est toujours pas ça, au revoir !", vbCritical, "pouet") = vbOK Then
                End If
            ActiveWorkbook.Close savechanges:=False
        End If

End If

CA FONCTIONNE Merci à vous pour votre aide et merci bien pour la réponse h2so4

En fait je n'avais pas vérifié mais j'ai une erreur à l'exécution, voici mon code dans sa globalité !

Dans ce cas, j'ai erreur d’exécution 458 :

Private Sub CommandButton2_Click()

Static truc '"truc" est une variable pour : si mauvaise réponse, une deuxième chance avant fermeture

If TextBox1.Value = "coucou" Then
 'BLABLABLA
End If

If TextBox1.Value = "" Then
'BLABLABLA
End If

If TextBox1.Value <> "" Then

        If truc = 0 Then '"truc" est une variable pour : si mauvaise réponse, une deuxième chance avant fermeture

        If MsgBox("Concentrez-vous " & Application.UserName & " !", vbExclamation, "Outil Cendre") = vbOK Then
            truc = truc + 1
        End If

        ElseIf truc = 1 Then
            Unload Me
                If MsgBox("Bien essayé " & Application.UserName & ", mais ce n'est toujours pas ça, au revoir !", vbCritical, "Outil Cendre") = vbOK Then
                End If
            ActiveWorkbook.Close savechanges:=False
        End If

End If
End Sub

Avec cette ligne surlignée :

If TextBox1.Value <> "" Then

Et dans ce cas, j'ai erreur d’exécution 13 :

Private Sub CommandButton2_Click()

Static truc '"truc" est une variable pour : si mauvaise réponse, une deuxième chance avant fermeture

If TextBox1.Value = "coucou" Then
 'BLABLABLA
End If

If TextBox1.Value = "" Then
'BLABLABLA
End If

If TextBox1.Value <> "" And "coucou" Then

        If truc = 0 Then '"truc" est une variable pour : si mauvaise réponse, une deuxième chance avant fermeture

        If MsgBox("Concentrez-vous " & Application.UserName & " !", vbExclamation, "Outil Cendre") = vbOK Then
            truc = truc + 1
        End If

        ElseIf truc = 1 Then
            Unload Me
                If MsgBox("Bien essayé " & Application.UserName & ", mais ce n'est toujours pas ça, au revoir !", vbCritical, "Outil Cendre") = vbOK Then
                End If
            ActiveWorkbook.Close savechanges:=False
        End If

End If
End Sub

Avec cette ligne surlignée :

If TextBox1.Value <> "" And "coucou" Then

bonjour,

la syntaxe correcte pour cette instruction

If TextBox1.Value <> "" And "coucou" Then

est

If TextBox1.Value <> "" And TextBox1.value = "coucou" Then

Merveilleux Merci pour ta rapidité

Rechercher des sujets similaires à "premier message puis second"