Comment utiliser le bouton annulé d'un Inputbox
Résolu
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
bassmart Messages postés 281 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!
J'ai une macro avec un InputBox, elle marche bien lorsque je saisie une valeur à l'intérieure. Mais lorsque je veux annulé avec le bouton, il me renvoie la valeur faux dans la cellule sélectionnée.
J'ai essayé de lui dire si il y a une valeur pour NewVal alors exécute la macro sinon sort de la macro, mai sans succès!
Je voudrais que lorsque j'appui sur le bouton annulé de l'InputBox, qu'il quitte la macro.
Voici mon code:
J'ai une macro avec un InputBox, elle marche bien lorsque je saisie une valeur à l'intérieure. Mais lorsque je veux annulé avec le bouton, il me renvoie la valeur faux dans la cellule sélectionnée.
J'ai essayé de lui dire si il y a une valeur pour NewVal alors exécute la macro sinon sort de la macro, mai sans succès!
Je voudrais que lorsque j'appui sur le bouton annulé de l'InputBox, qu'il quitte la macro.
Voici mon code:
Private dlig As Long Private PL As Range Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim nValue As String Dim NewVal As String Dim f As Worksheet Dim valueRange As Range Application.ScreenUpdating = False For Each f In ActiveWorkbook.Worksheets f.Unprotect Next nValue = ActiveCell.Value If Not Intersect(Target, Range("c5:c" & [a1048576].End(xlUp).Row + 1)) Is Nothing Then If MsgBox("Voulez-vous mofifier le numéro de ce sondage?", _ vbYesNo + vbQuestion, "MODIFER") = vbYes Then NewVal = UCase$(Application.InputBox("Nouveau numéro de sondage?", "MODIFICATION DE NUMÉRO", Type:=2)) If NewVal = "" Then ActiveCell = NewVal Else ActiveCell.Offset(-1, 0).Select Exit Sub End If If InStr(1, nValue, "C") = 1 Or InStr(1, nValue, "M") = 1 Then Set valueRange = Sheets("CPTU").Columns(1) ElseIf InStr(1, nValue, "F") = 1 Then Set valueRange = Sheets("FORAGE").Columns(1) ElseIf InStr(1, nValue, "Z") = 1 Or InStr(1, nValue, "FZ") = 1 Then Set valueRange = Sheets("Piézomètres").Columns(2) ElseIf InStr(1, nValue, "I") = 1 Then Set valueRange = Sheets("Inclinomètres").Columns(2) Else Set valueRange = Nothing MsgBox "La valeur n'a pas été trouvé dans les autres feuilles! Mettre à jours les feuillets sur la page d'accueil!", vbCritical End If If Not valueRange Is Nothing Then valueRange.Replace nValue, NewVal, LookAt:=xlWhole, SearchOrder:=xlByColumns End If If NewVal <> nValue Then MsgBox "N'oubliez pas de changer le numéro dans la colonne ABRÉVIATION!", vbExclamation, "IMPORTANT" ActiveCell.Offset(-1, 0).Select End If Else ActiveCell.Offset(-1, 0).Select End If End If For Each f In ActiveWorkbook.Worksheets f.Protect Next Application.ScreenUpdating = True Application.EnableEvents = True End Sub
A voir également:
- Vba inputbox annuler
- Annuler offre vinted - Guide
- Annuler fermeture onglet chrome - Guide
- Annuler envoi mail gmail - Guide
- Annuler commande aliexpress - Forum Consommation & Internet
- Find vba - Astuces et Solutions
Mais ça ne marche pas plus! Je n'y comprend rien!
J'ai essayé les 2 codes et dans les 2 cas lorsque je sélectionne le bouton annulé dans l'InputBox, il saute à ligne après le loop. C'est probablement le gars derrière le clavier le problème!
Voici ce que j'ai fait:
Pouvez-vous m'aider, merci!
Pas forcément. Quand on est dedans on ne voit pas tout...
Notamment le traitement d'erreur.
Le Goto doit renvoyer à une étiquette qui "clos" le code. Comme ceci :
Ça ne marche pas comme je veux! Lorsque j'appui sur le bouton annulé dans l'InputBox il continue avec NewVal qui est égale à zéro ou vide et il me renvoie la valeur faux dans la cellule sélectionnée.
Alors que je veux que lorsque j'appui sur cette touche qu'il sorte de la macro.
Merci!
Tu n'as pas utilisé mot pour moi le code donné par mon exemple.
Mea Culpa, je n'avais pas vu que tu utilisais une Application.InputBox de type 2 (chaîne de caractères). Ce type d'InputBox particulier renvoie "Faux" lorsqu'est cliqué le bouton Annuler.
Le test à faire alors pour sortir de la Sub est donc le suivant :
Ce qui te donne, à partir de ton code initial :
Notes :
Si tu veux "donner" plusieurs essais à l'utilisateur, tu peux insérer la boucle Do While avec le compteur (Cpt). Dans le cas contraire, c'est ici inutile.
en fin de code est inutile puisque tu ne le places pas à False en début de code...
C'est exactement ça! Ça fonctionne super!
Pour le , je l'ai placé dans mon code parce que dans ma feuille, j'ai une autre macro qui s'effectue lors d'un changement dans la feuille. Elle se lance, donc à l'intérieure de cette macro lorsque je change la valeur d'une cellule et à la fin de l'exécution des 2 macros, aucune macro ne fonctionnent et en placent cette commande, tout est ok.
Peut-être pas la meilleur méthode, mais ça fonctionne!
Voici les macro en arrière de cette feuille:
Encore merci!