Boucle d'affichage contrôlé par un msgBox

cw79

XLDnaute Nouveau
Bonjour,
je rencontre un problème que je n'arrive pas à résoudre... En effet je souhaite qu'à partir d'un msgBox je puisse afficher l'userform si l'utilisateur clic sur le bouton vbYes du msgBox et autant de fois qu'il clic sur ce bouton.
J'ai du rajouter la ligne suivante dans mon code "If i > 1 Then Exit Do" pour contourner le problème d'affichage mais cela ne me convient car cela s'apparente à du bricolage. Sans cette ligne la procédure se comporte de façon anormal en effet sur une demande d'arret de la boucle bouton vbNo cliqué la procédure sort bien de la boucle mais une fois sortie y retourne !...
Voici le code de ma procédure :
Code:
Sub traitementRepetionUserform1()

Dim test As Integer
Dim i As Integer

i = 0
Do
i = i + 1
If i > 1 Then Exit Do 'j'ai du rajouter cette ligne, mais cela ne me convient pasn sinon la procédure ne fonctionne pas correctemente

test = MsgBox("Souhaitez-vous refaire une autre planification ? ", vbYesNo + vbQuestion, "REFAIRE UNE PLANIFICATION")
If test = vbYes Then

  Unload UserForm1
  UserForm1.Show
End If
 
If test = 7 Then
  Unload UserForm1
  Exit Do
End If

Loop

End Sub
Encore merci d'avance pour votre aide.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour CW79,
Et en faisant simplement ça :
VB:
Sub traitementRepetionUserform1()
Dim test As Integer
Encore:
test = MsgBox("Souhaitez-vous refaire une autre planification ? ", vbYesNo + vbQuestion, "REFAIRE UNE PLANIFICATION")
If test = vbYes Then
  UserForm1.Show
Else
    Unload UserForm1
    Exit Sub
End If
GoTo Encore
End Sub
Ca a l'air de restecter les exigences.
 

sousou

XLDnaute Barbatruc
Bonjour
Tu ne traites pas la réponse négative
essai comme ceci
Sub user()
Do
test = MsgBox("Souhaitez-vous refaire une autre planification ? ", vbYesNo + vbQuestion, "REFAIRE UNE PLANIFICATION")
If test = vbYes Then
Unload UserForm1
UserForm1.Show
Else
Exit Do
End If
Loop
End Sub
 

cw79

XLDnaute Nouveau
Bonjour
Tu ne traites pas la réponse négative
essai comme ceci
Sub user()
Do
test = MsgBox("Souhaitez-vous refaire une autre planification ? ", vbYesNo + vbQuestion, "REFAIRE UNE PLANIFICATION")
If test = vbYes Then
Unload UserForm1
UserForm1.Show
Else
Exit Do
End If
Loop
End Sub

Merci de m'avoir répondu aussi rapidement. Mais ça ne fonctionne pas chez moi. Si je clic 3 fois sur le bouton Valider du userForm1 (ce qui équivaut à vbYes) la procédure m'affiche 3 fois le message : Souhaitez-vous refaire une autre planification ? Et si clic 4 fois l'application répétera 4 fois le message.
Le problème pourrait peut-être provenir d'une sub en amont qui contient l'instruction : UserForm1.show. Ce qui à pour conséquence que l'UserForm1 est activé lorsque il arrive dans la sub traitementRepetionUserform1() ? En vous remerciant pour votre aide.
 

cw79

XLDnaute Nouveau
Re bonjour le fil,
Dans ce cas faisons minimaliste, voir PJ.
Est cela que vous vouliez ? Si oui alors quelque chose quelque part cloche dans votre code. Sinon on n'a pas compris la problématique.
Encore merci pour l'aide que vous m'avez apporté. Votre code fonctionne parfaitement après adaptation de mon application à votre code il à fallu que je revois en particulier des appels à l'userForm1 qui n'étaient pas corrects. Encore merci à tous. Comment faire pour dire que c'est résolu ?
 

Discussions similaires

Réponses
8
Affichages
447

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo