Sortir d'une boucle do loop

Bonsoir,

J'ai créé une application avec une boite de dialogue qui s'affiche lorsque je lance l'impression d'une feuille. Elle demande le nom de la personne (en boucle jusqu'à ce qu'un nom soit rentré) . Jusque là tout va bien. Par contre, si je veux annuler, pour changer de feuille par exemple, je ne peux pas sortir si je clique sur annuler. J'ai tenté avec if...then..exit do, mais ça ne fonctionne pas.

Merci pour votre aide, je rame un peu.

Bonsoir,

Sissi...

if...then exit do ça devrait le faire.

M'enfin... C'est un peu comme un peigne : ça dépend ou on s'en sert !

Exemple :

Sub test()
i = 1
Do Until i = 1000
If i = 3 Then Exit Do
MsgBox i
i = i + 1
Loop
End Sub

...la boucle ne s'exécute que 2 fois.

A+

Bonjour Galopin01 et merci pour ta réponse.

Ta proposition ne fonctionne pas dans mon application, je ne dois pas peigner dans le bon sens -;) . Je la met en exemple dessous tu comprendras mieux. Attention, je suis novice en programmation VBA, je connais les macros en auto mais là je démarre....à taton

Private Sub Workbook_BeforePrint(Cancel As Boolean)

With ActiveSheet.PageSetup

.LeftHeader = Format(Now(), "dddd dd mmmm yyyy hh mm")

Dim Reponse As String

End With

Do

Reponse = InputBox("Quel est votre nom ?", "Votre nom")

Range("D1").Value = Reponse

If vbCancel Then Sheets(" ").Select

Exit Do

Loop Until Reponse <> ""

End Sub

Bonne journée, à+

Bonjour,

Par défaut vbCancel est toujours Vrai donc il faut poser ta condition différemment.

Dans cette situation avec cette boucle Do... Loop tu obliges quasiment l'utilisateur à saisir n'importe quoi sans possibilité d'annuler car la boite de dialogue InputBox renvoie "" si tu annules. Et ça remet 100 balles dans la mécanique...

D plus comme ton ExitDo est placé en dehors du if il s'exécute à tous les coups donc le Do... Loop sert à rien.

Dans tous les cas le Do... Loop sert à rien : soit l'utilisateur rentre un nom, soit il annule...

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Reponse As String
With ActiveSheet.PageSetup
.LeftHeader = Format(Now(), "dddd dd mmmm yyyy hh mm")
End With

Reponse = InputBox("Quel est votre nom ?", "Votre nom")

   'Si l'utilisateur a entré un nom
   If Reponse <> "" Then
      Range("D1").Value = Reponse 'et ça imprime...
   Else 'Si l'utilisateur a échappé ou annulé
      Cancel = True
   End If
End Sub

A+

Bonsoir,

Merci beaucoup pour ton aide, ça marche super.

En fait, j'étais focalisée dans ma boucle alors que c'était bien plus simple.

Bonne fin de soirée, à bientôt...surement

Rechercher des sujets similaires à "sortir boucle loop"