Gérer le bouton annuler ImputBox

mll-sandiih Messages postés 10 Statut Membre -  
mll-sandiih Messages postés 10 Statut Membre -
Bonjour tout le monde,

J'aimerais gérer le bouton annuler de mon imputbox et j'ai trouvé une solution mais elle ne fonctionne pas trop, si j'appuie sur annuler, ma msgbox s'affiche et ça quitte, jusque là tout va bien
mais même si je rentre ce qu'il faut et que j'appuie sur OK ma msgbox de mon annuler s'affiche et ça quitte :(

VOICI MON CODE
_____________________________________________
Dim adresse As String, compteur As Integer

compteur = 1 'permet de gérer le bouton annuler sans boucle infinie (genre case absolument obligatoire -- )

adresse = InputBox("Veuillez entrer le nom et l'adresse du chantier étudié svp", "Nom et adresse") 'La variable adresse reçoit la valeur entrée dans l'InputBox
Worksheets("Extraction").Activate
Cells(1, 2).Value = adresse
Worksheets("Soufflage").Activate
Cells(1, 2).Value = adresse 'ces 4 lignes permettent de copier le contenu dans une ou plusieurs cellules
Do While Len(adresse) = 0
compteur = compteur + 1
If compteur = 2 Then GoTo NePasContinuer
MsgBox "Cette donnée est obligatoire. Plus que " & 2 - compteur & " essais."
adresse = InputBox("Veuillez entrer le nom et l'adresse du chantier étudié svp", "Nom et adresse") 'La variable adresse reçoit la valeur entrée dans l'InputBox
Worksheets("Extraction").Activate
Cells(1, 2).Value = adresse
Worksheets("Soufflage").Activate

Loop
NePasContinuer:
MsgBox "Ok, on verra ça plus tard."

Exit Sub

__________________________________________________

J'imagine que l'erreur viens du Exit Sub mais je sais pas :(

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un exemple

    Const NbEssaisMax = 3

    Public Sub OK()
    Dim compteur As Long, adresse As String
    adresse = ""
    compteur = NbEssaisMax
    While adresse = "" And compteur <> 0
    adresse = InputBox("Chantier étudié", "Nim et adresse ?")
    If adresse = "" Then
    compteur = compteur - 1
    If compteur <> 0 Then MsgBox "il vous reste " & compteur & " essais"
    End If
    Wend
    If adresse = "" Then
    MsgBox "on verra plus tard"
    Else
    Sheets("Extraction").Cells(1, 2) = adresse
    Sheets("Soufflage").Cells(1, 2) = adresse
    End If
    End Sub

    Cdlmnt
    0
    1. mll-sandiih
       
      Merci infiniment ça fonctionne ;)
      Mais mtn questions pr comprendre ... Que signifie le "Public Sub OK()" et le "<>" dans "compteur <> 0" ?
      Je ne veux pas juste copier coller :p

      Thanks :)
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    1. Public Sub OK()
    C'est la déclaration de la procedure OK, je l'ai mise dans un module général (Module 1 par exemple) et déclarée publique pour qu'on puisse y avoir accès de n'importe où.
    2. compteur <> 0
    Pour compteur différent de 0
    Au départ, compteur = nombre d'essais maxi
    puis
    Tant que adresse est vide et que compteur est différent de 0
    on fait un truc
    on décrémente compteur (compteur = comteur-1)
    Donc la boucle est terminée dès que adresse n'est pas vide ou que compteur est egal à 0

    Cdlmnt
    0
    1. mll-sandiih Messages postés 10 Statut Membre
       
      Merci beaucoup !! En revanche le Public Sub me pose pb car j'ai l'impression qu'il fait doublon avec mon Sub Bouton, du coup ça ne fonctionne pas
      Voici une partie de mon code du coup

      Sub Bouton1_Clic()
      MsgBox "Bienvenue dans l'outils bilan aéraulique." & Chr(10) & Chr(10) & "Laissez-vous guider par les instructions :)"
      'petit message de bienvenue
      
      [Plein d'autres lignes]
      
      Public Sub OK()
      Dim adresse As String, compteur As Integer
      
          Const NbEssaisMax = 2 'représente le nbr de fois ou il faut annuler pr quitter
      
      
      Dim compteur As Long, adresse As String
      adresse = ""
      compteur = NbEssaisMax
      While adresse = "" And compteur <> 0
        adresse = InputBox("Chantier étudié", "Nom et adresse ?")
        If adresse = "" Then
          compteur = compteur - 1
          If compteur <> 0 Then MsgBox "il vous reste " & compteur & " essais"
        End If
      Wend
      If adresse = "" Then
        MsgBox "Ok, on verra ça plus tard"
      Else
        Sheets("Extraction").Cells(1, 2) = adresse 'Permet d'entrer le nom et l'adresse du chantier dans la cellule B1
        Sheets("Soufflage").Cells(1, 2) = adresse
      End If
      End Sub
           
          
       MsgBox "Commençons par regarder le soufflage:"
      
      [Plein d'autres lignes]
      0