Problème de boucle sur ouverture msgbox
Bonsoir à tous,
Quelqu'un pourrait'il éclairer ma lanterne?
J'ai beau cherché, je ne comprend pas pourquoi dans ce code, l'ouverture de la boite de message se fait 50 fois (on dirait mon chiffre définit par k) alors qu'elle ne devrait se faire qu'une fois. Quelqu'un aurait 'il une idée et la solution pour remédier à ce problème, je m'arrache les cheveux.
D'avance, merci.
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
'on regarde de la première ligne à la derniere ligne de la listbox
'si oui, on copie les données existantes dans le tsa mais manquantes dans la psr
Dim k As Integer
For k = 0 To 49
Dim L As Integer
If TextBox5 = TextBox9 Then
'si le numero d'item est identique mais que le nom n'est pas pareil on demande si c la même chose
If Me.ListBox1.List(i, 6) <> Me.ListBox2.List(i, 6) And Me.ListBox1.List(i, 5) = Me.ListBox2.List(i, 5) Then
Dim Rep As Integer
Rep = MsgBox("The Item named " & "'" & Me.ListBox2.List(i, 6) & "'" & "on the line N°" & "'" & Me.ListBox1.List(i, 5) & "'" & "has changed for " & "'" & Me.ListBox1.List(i, 6) , vbYesNo + vbQuestion, "Update Process")
If Rep = vbYes Then
If Me.ListBox3.List(i, k) = "" And Me.ListBox4.List(i, k) <> "" Then
Sheets("PMC_TSA").Cells(i + 5, k + 2) = Me.ListBox4.List(i, k)
'on va copier les modif dans la feuille modifications
L = Sheets("Modification").Range("a65000").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = " The info " & "'" & Me.ListBox4.List(i, k) & "'" & " in the column: " & "'" & Sheets("PMC_TSA").Cells(3, k + 2) & "'" & " for the item: " & "'" & Sheets("PMC_TSA").Cells(i + 5, 20) & "'" & " was missing. It has been copied from the PSR Monitoring Chart."
End If
End If
End If
End If
Next k
Next i
Désolé, cela fait pourtant 1 heure que je tourne en rond. C’était pourtant tout bête et c'est en simplifiant mon code pour vous le soumettre que je viens de trouver la solution.
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
'on regarde de la première ligne à la derniere ligne de la listbox
'si oui, on copie les données existantes dans le tsa mais manquantes dans la psr
Dim k As Integer
Dim L As Integer
If TextBox5 = TextBox9 Then
'si le numero d'item est identique mais que le nom n'est pas pareil on demande si c la même chose
If Me.ListBox1.List(i, 6) <> Me.ListBox2.List(i, 6) And Me.ListBox1.List(i, 5) = Me.ListBox2.List(i, 5) Then
If MsgBox("The Item named " & "'" & Me.ListBox2.List(i, 6) & "'" & "on the line N°" & "'" & Me.ListBox1.List(i, 5) & "'" & "has changed for " & "'" & Me.ListBox1.List(i, 6) & "'" & "." & Chr(10) & "Is it the same item but named differently?" ", vbYesNo + vbQuestion, "Update Process") = vbYes Then
For k = 0 To 49
If Me.ListBox3.List(i, k) = "" And Me.ListBox4.List(i, k) <> "" Then
Sheets("PMC_TSA").Cells(i + 5, k + 2) = Me.ListBox4.List(i, k)
'on va copier les modif dans la feuille modifications
L = Sheets("Modification").Range("a65000").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = " The info " & "'" & Me.ListBox4.List(i, k) & "'" & " in the column: " & "'" & Sheets("PMC_TSA").Cells(3, k + 2) & "'" & " for the item: " & "'" & Sheets("PMC_TSA").Cells(i + 5, 20) & "'" & " was missing. It has been copied from the PSR Monitoring Chart."
End If
Next k
End If
End If
End If
Next i
Tu reçois le msgbox, qui s'affiche lorsque la condition basé sur i est vraie,50 fois car il est dans la boucle k.
pour moi difficile de t'aider sur base de ce seul code, car je n'ai pas compris (malgré tes commentaires, ce que tu essaies de faire).
peut-être avec ton fichier et quelques explications ....
Bonsoir Fouxien, bonsoir le forum,
Un code avec une bonne indentation permet de se repérer bien plus facilement !
Tu fais deux boucles :
• Une premières sur tous les éléments i de le ListBox1
• Une seconde sur cinquante colonnes k des ListBox3 et ListBox4
Ton message se trouvant à l'intérieur de la seconde boucle va logiquement être répéter 50 fois !
Ne sachant pas ce que doit faire ton code je ne peux te proposer de solution mais il me semble qu'un Exit For pourrait faire l'affaire...
À tout hasard à la ligne 25 :
Sub Macro1()
Dim i As Integer
Dim k As Integer
Dim L As Integer
Dim Rep As Integer
For i = 0 To ListBox1.ListCount - 1
'on regarde de la première ligne à la derniere ligne de la listbox
'si oui, on copie les données existantes dans le tsa mais manquantes dans la psr
For k = 0 To 49
If TextBox5 = TextBox9 Then
'si le numero d'item est identique mais que le nom n'est pas pareil on demande si c la même chose
If Me.ListBox1.List(i, 6) <> Me.ListBox2.List(i, 6) And Me.ListBox1.List(i, 5) = Me.ListBox2.List(i, 5) Then
Rep = MsgBox("The Item named " & "'" & Me.ListBox2.List(i, 6) & "'" & "on the line N°" & "'" & _
Me.ListBox1.List(i, 5) & "'" & "has changed for " & "'" & Me.ListBox1.List(i, 6), vbYesNo + vbQuestion, _
"Update Process")
If Rep = vbYes Then
If Me.ListBox3.List(i, k) = "" And Me.ListBox4.List(i, k) <> "" Then
Sheets("PMC_TSA").Cells(i + 5, k + 2) = Me.ListBox4.List(i, k)
'on va copier les modif dans la feuille modifications
L = Sheets("Modification").Range("a65000").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = " The info " & "'" & Me.ListBox4.List(i, k) & "'" & " in the column: " & "'" _
& Sheets("PMC_TSA").Cells(3, k + 2) & "'" & " for the item: " & "'" & Sheets("PMC_TSA").Cells(i + 5, 20) _
& "'" & " was missing. It has been copied from the PSR Monitoring Chart."
Exit For
End If
End If
End If
End If
Next k
Next i
End Sub
[Édition]
Bonsoir H2SO4 on s'est croisé...
Merci h2So4, Merci Thauthème (Thau comme l'étang? Je suis de Sète),
En effet, mon problème venait du fait que mon Rep était pris dans la boucle K, d'ou une répétition du message 50 fois. Merci pour vos réponses.
Bon weekend
Bonsoir le fil, bonsoir le forum,
Ho p... Fouxien ! Un autre Setoy... Originaire d'Agde (ouais... Je sais, par la plage...) mais fou amoureux de Sète !