Language vba excel - boucle
Résolu
galt19
-
galt19 -
galt19 -
Bonjour à tous,
Je suis en train de mettre au point un programme concernant une facture et une base de donnée de produit à vendre. Mon objectif est de faire une demande msgbox pour entrer la référence d'un produit, et afficher la désignation et le prix unitaire, et cela ligne après ligne sur le devis jusqu'à ce que la réponse au msxbox soit "non".
Mon programme fonctionne pour la première ligne, et lorsque je dis non cela s'arrête. En revanche, lorsque je dis oui pour entrer un nouveau produit, (à la deuxième ligne donc) la boucle devient infinie et les caractéristiques ne s'affichent pas.
Voici mon programme :
réponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE")
m = 3
n = 15
x = 1
If réponse = vbYes Then
Do While x > 0
plante = InputBox("Entrez la référence de la plante : ", "PLANTE", "ALB")
Worksheets("Devis").Cells(n, 1).Value = plante
Do While trouvé <> True
m = m + 1
If plante = Worksheets("Plantes").Cells(m, 1).Value Then
trouvé = True
Worksheets("Devis").Cells(n, 2).Value = Worksheets("Plantes").Cells(m, 2).Value
Worksheets("Devis").Cells(n, 4).Value = Worksheets("Plantes").Cells(m, 3).Value
n = n + 1
x = 1
réponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE")
End If
If réponse = vbNo Then
x = -1
End If
Loop
Loop
ElseIf réponse = vbNo Then
x = -1
End If
Qu'est ce qui pourrait justifier le fait que la boucle ne redémarre pas du début ?
Merci d'avance
Je suis en train de mettre au point un programme concernant une facture et une base de donnée de produit à vendre. Mon objectif est de faire une demande msgbox pour entrer la référence d'un produit, et afficher la désignation et le prix unitaire, et cela ligne après ligne sur le devis jusqu'à ce que la réponse au msxbox soit "non".
Mon programme fonctionne pour la première ligne, et lorsque je dis non cela s'arrête. En revanche, lorsque je dis oui pour entrer un nouveau produit, (à la deuxième ligne donc) la boucle devient infinie et les caractéristiques ne s'affichent pas.
Voici mon programme :
réponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE")
m = 3
n = 15
x = 1
If réponse = vbYes Then
Do While x > 0
plante = InputBox("Entrez la référence de la plante : ", "PLANTE", "ALB")
Worksheets("Devis").Cells(n, 1).Value = plante
Do While trouvé <> True
m = m + 1
If plante = Worksheets("Plantes").Cells(m, 1).Value Then
trouvé = True
Worksheets("Devis").Cells(n, 2).Value = Worksheets("Plantes").Cells(m, 2).Value
Worksheets("Devis").Cells(n, 4).Value = Worksheets("Plantes").Cells(m, 3).Value
n = n + 1
x = 1
réponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE")
End If
If réponse = vbNo Then
x = -1
End If
Loop
Loop
ElseIf réponse = vbNo Then
x = -1
End If
Qu'est ce qui pourrait justifier le fait que la boucle ne redémarre pas du début ?
Merci d'avance
1 réponse
-
Bonjour,
Essais comme ça:
réponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE") encore = True While encore <> False m = 3 n = 15 x = 1 If réponse = vbYes Then Do While x > 0 plante = InputBox("Entrez la référence de la plante : ", "PLANTE", "ALB") Worksheets("Devis").Cells(n, 1).Value = plante Do While trouvé <> True m = m + 1 If plante = Worksheets("Plantes").Cells(m, 1).Value Then trouvé = True Worksheets("Devis").Cells(n, 2).Value = Worksheets("Plantes").Cells(m, 2).Value Worksheets("Devis").Cells(n, 4).Value = Worksheets("Plantes").Cells(m, 3).Value n = n + 1 x = 1 réponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE") If reponse = vbYes Then encore = False Else encore = True x = x - 1 End If End If Loop Loop ElseIf réponse = vbNo Then encore = True x = -1 End If Wend
-
Bonjour,
Merci, j'ai essayé comme ça, par contre ça fonctionne pas. J'ai toujours le problème de boucle infinie dès la deuxième référence.
Pour décrire : voulez vous indiquer une nouvelle réf => oui, Entrez la ref : j'entre la réf et tout s'affiche. Voulez vous entrez une nouvelle réf => oui ; entrer la ref = et la il n'y a que la réf qui s'affiche et "entrez la ref" se repose automatiquement. Et quand je mets annuler, cela me supprime la 2eme réf mais la boucle repart de nouveau sur la question. Je ne sais pas comment résoudre ce problème, ca me paraît compliquer. -
Bonjour,
dsl, je n'avais pas fait de test hier soir. Effectivement ça boucle pas comme il faudrait :(
Avec ça doit mieux tourner:
encore = True While encore <> False n = 15 x = 1 Do While x > 0 m = 3 trouvé = False plante = InputBox("Entrez la référence de la plante : ", "PLANTE", "ALB") Worksheets("Devis").Cells(n, 1).Value = plante Do While trouvé <> True If plante = Worksheets("Plantes").Cells(m, 1).Value Then trouvé = True Worksheets("Devis").Cells(n, 2).Value = Worksheets("Plantes").Cells(m, 2).Value Worksheets("Devis").Cells(n, 4).Value = Worksheets("Plantes").Cells(m, 3).Value n = n + 1 reponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE") If reponse = vbYes Then encore = True Else encore = False x = x - 1 End If End If m = m + 1 Loop Loop Wend -
S'il faut passer d'abord par le message "Voulez-vous indiquer une nouvelle référence de plante ?"
encore = True n = 15 While encore <> False reponse = MsgBox("Voulez-vous indiquer une nouvelle référence de plante ?", vbYesNo, "PLANTE") If reponse = vbYes Then x = 1 Do While x > 0 m = 3 trouvé = False plante = InputBox("Entrez la référence de la plante : ", "PLANTE", "ALB") Worksheets("Devis").Cells(n, 1).Value = plante Do While trouvé <> True If plante = Worksheets("Plantes").Cells(m, 1).Value Then trouvé = True Worksheets("Devis").Cells(n, 2).Value = Worksheets("Plantes").Cells(m, 2).Value Worksheets("Devis").Cells(n, 4).Value = Worksheets("Plantes").Cells(m, 3).Value n = n + 1 x = -1 End If m = m + 1 Loop Loop Else encore = False x = x - 1 End If Wend -
-