Sortir de la procédure si inputbox = annuler

Bonjour à tous

Ce bout de code me permet de saisir un chiffre dans un inputbox.

Ensuite ce chiffre remplace un autre chiffre saisi dans un 2nd inputbox, et ce dans la colonne B.

Je souhaiterai ajouter une instruction qui permet de sortir de la procédure si on clique sur annuler dans le 1er inputbox.

Je pensais à un if... = vbno then exit sub.

Seulement, je n'arrive pas à le placer dans mon code car la boucle continue à tourner.

Je m'en remets donc à vous

Merci pour votre aide

Sub Change_code()
'Déclarations
Dim Valeur1, Valeur2
Dim ErrValeur1, ErrValeur2 As Boolean

'Init de la variable erreur 1
ErrValeur1 = True

'Boucle 
Do
     Valeur1 = InputBox("Veuillez rentrer le nouveau code", "Changer code ", "1234") 'Saisir le nouveau code (le code remplaçant)
        If Len(Valeur1) <> 4 Then       
            MsgBox ("Le code doit être de 4 chiffres") 'Message d'erreur
        Else 'Sinon
            ErrValeur1 = False 
            ErrValeur2 = True 'Init de la variable erreur 2

            Do 'Boucle 2
                Valeur2 = InputBox("Veuillez rentrer le code à remplacer", "Changer code ", "Code à remplacer") 'Saisir le code à remplacer
                If Len(Valeur2) <> 4 Then 'si saisie différent de 4 chiffres alors message d'erreur
                    MsgBox ("Le code à remplacer doit être de 4 chiffres")
                Else
                    ErrValeur2 = False
                    'Remplacer ancien code désigné par nouveau code rentré 
                    Columns("B:B").Replace What:=Valeur2, Replacement:=Valeur1, LookAt:=xlPart, SearchOrder:=xlByRows
                End If
            Loop While ErrValeur2 = True
        End If

Loop While ErrValeur1 = True

End Sub

Bonjour,

Si je ne dis pas de bêtises, quand on clique sur annuler dans une inputbox, elle renvoie False, ou "False" si on a mis une catégorie de texte, je vous invite donc à mettre un espion sur les valeurs retournées par les inptubox.

Bonjour Ausecour et merci de ton retour.

lorsque je clique sur false, la macro continue.

qu'entends-tu par mettre un espion ?

Quand je parlais de mettre un espion, c'était pour regarder ce que retournait la inputbox quand on annulait la saisie.

Normalement elle renvoie bien False quand c'est le cas.

Derrière on peut donc écrire:

Valeur2 = InputBox("Veuillez rentrer le code à remplacer", "Changer code ", "Code à remplacer") 
If Valeur2 = False then Exit Sub

Pareil pour Valeur1.

Si on annule la saisie dans la InputBox, elle renvoie False qui est stocké dans la variable Valeur2, il reste ensuite a tester si cette variable est égale à False, et si c'est le cas alors quitter la procédure avec un Exit Sub.

bonjour,

que tu click su Annuler ou OK sans saisir de valeur le résultat est le même input retourne ""

Valeur1 = InputBox("Veuillez rentrer le nouveau code", "Changer code ", "1234") 'Saisir le nouveau code (le code remplaçant)
if Valeur1 ="" then exit sub

bonjour,

que tu click su Annuler ou OK sans saisir de valeur le résultat est le même input retourne ""

Valeur1 = InputBox("Veuillez rentrer le nouveau code", "Changer code ", "1234") 'Saisir le nouveau code (le code remplaçant)
if Valeur1 ="" then exit sub

Bonjour dysorthographie,

En effet j'ai confondu le comportement de InputBox avec celui de Application.InputBox, oups...

Et oui

Merci dysorthographie !

C'était tout simple en fait

Rechercher des sujets similaires à "sortir procedure inputbox annuler"