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 !

Rechercher des sujets similaires à "probleme boucle ouverture msgbox"