If Then à remplacer par boucle Do While ?

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Calvus

XLDnaute Barbatruc
Bonsoir à tous,

Très mauvais en Vba, et procédant plus de façon empirique pour l'instant qu'autre chose, j'ai réussi à faire fonctionner cette macro tant bien que mal.

J'avais essayé de faire une boucle, tenté Do Until While et Loop, en vain ! Dans plein de sens différents, mais jamais de résultat à 100%, seulement partiel. Je suis donc revenu au code ci-dessous, avec If et Then, dont je ne sais même pas si on peut l'optimiser et comment.

Code:
Sub Image_2()
    
    Unprotect      'pour déprotéger l'onglet
       
                        ActiveSheet.DrawingObjects("Image 2").Select
                        Selection.Copy
            
     Protect       'pour protéger
         
                ActiveSheet.Paste
        
                With Selection.ShapeRange
                .Left = ActiveCell.Left
                .Top = ActiveCell.Top
            End With
        
        
                Application.ScreenUpdating = True
        
                Range("b8").Select
  1
       
        rep4 = InputBox("question 1 ?")
        
        
        If rep4 = "non" Then
           rep5 = MsgBox("mauvaise réponse!")
              GoTo 1
        
        Else
        If rep4 = "oui" Then
              GoTo 2
        Else
          rep4 = ""
              GoTo 1
        End If
        
        
        End If
        
2
        ActiveSheet.DrawingObjects.Select
        Selection.Delete
    
        ActiveSheet.Protect "dd", True, True, True
        Image_4
    
End Sub

Alors comment améliorer mon code, et puis-je utiliser une boucle ? Si oui comment ?
En français, mon souhait est que tant que la réponse à la inputbox n'est pas oui, alors on repose la question.

Merci
 
Re : If Then à remplacer par boucle Do While ?

bonjour,

si les deux seules réponses possibles sont oui et non, il me semble préférable d'utiliser plutôt une MsgBox qui permet d'afficher du texte et des boutons réponses, et en l'occurrence les boutons oui et non:
Code:
While rep4 <> vbYes
    rep4 = MsgBox("question 1 ?", 4)
    If rep4 <> vbYes Then MsgBox "mauvaise réponse"
Wend

4 signifiant "affiche les boutons oui et non". voir l'aide VBA pour les autres possibilités

Avec l'InputBox, le test serait sensiblement le même:
Code:
While UCase(rep4) <> "OUI"
    rep4 = InputBox("question 1 ?")
    If UCase(rep4) <> "OUI" Then MsgBox "mauvaise réponse"
Wend

bonne suite
 
Dernière édition:
Re : If Then à remplacer par boucle Do While ?

Bonsoir Paf,

Super, merci. Je vais tester. Je crois avoir compris en lisant et en regardant dans l'aide. Je ne savais pas qu'on pouvait utiliser While tout seul.

Pourquoi mets tu Ucase ?

D'autre part, tu ne mets pas de EndIf dans ton code. Je pensais que c'était obligatoire. Et le Vbyes très pratique en effet. Je vais tenter d'adapter tout ça, et reviendrai certainement avec d'autres questions.

Cordialement
 
Dernière édition:
Re : If Then à remplacer par boucle Do While ?

re,

1) While n'est pas tout seul ! il y a le Wend qui va avec en fin de "boucle"
2) Ucase( chaine) met la chaine en majuscule. ça évite de tester dans le cas présent si chaine = "oui" ou "Oui" ou "OUI" ...
3) Le End If n'est pas obligatoire si après Then il n'y a qu'une instruction sur la même ligne (ou plusieurs instructions séparées de :. voir l'aide sur If )

Bon courage
 
Re : If Then à remplacer par boucle Do While ?

Re,

Je m'étais mal exprimé, je pensais que le While ne s'utilisait qu"avec le Do.
Et je viens de terminer d'essayer de comprendre toutes les nuances de If en consultant l'aide.
Si j'ai bien compris d'ailleurs, je peux ne mettre qu'un seul If avec autant de ElsIf que je veux. Ce serait plus clair. Ca reste dur à structurer mentalement par rapport au Else.

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
3 K
Retour