Boucle FOR s'arrêtent après 2 lignes

Bonjour,

J'ai besoin de votre aide pour une boucle qui s'arrête et je n'arrive pas à comprendre pourquoi..

J'aimerais comparer les valeurs des colonnes A dans deux feuilles différentes, (les valeurs sont des chiffres) et si elles correspondent, copier toute la ligne et la coller dans l'autre feuille.

Cependant, en faisant les test ça ne fonctionne pas, car la boucle passe à travers deux lignes (car il y a deux lignes dans la feuille "ECR") et puis sors.

Je vous met le fichier en pièce jointe.

Je reste à votre disposition si vous avez des questions.

Merci,

Kilian

Sub Publi_ECR()

Finalrow = Cells(Rows.Count, 1).End(xlUp).Row
For x = 4 To Finalrow
    For y = 4 To Finalrow

Demande1 = Sheets("ECR").Cells(x, 1).Value
Demande2 = Sheets("Cockpit").Cells(y, 1).Value

        If Demande1 = Demande2 Then
            Sheets("ECR").Cells(x, 1).Resize(1, 19).Copy
            Sheets("Cockpit").Cells(y, 1).PasteSpecial _
            Paste:=xlPasteValues
        End If
Next y
    Next x
End Sub

Salut Kilian,

ainsi, sans doute, en axant le recherche en 'Cockpit' ... jusqu'à SA dernière ligne !

Sub Publi_ECR()
'
Dim sWkECR As Worksheet, sWkCOC As Worksheet
'
Set sWkECR = Worksheets("ECR")
Set sWkCOC = Worksheets("Cockpit")
'
Finalrow = Cells(Rows.Count, 1).End(xlUp).Row
For x = 4 To sWkECR.Range("A" & Rows.Count).End(xlUp).Row
    For y = 4 To sWkCOC.Range("A" & Rows.Count).End(xlUp).Row
        If sWkECR.Cells(x, 1) = sWkCOC.Cells(y, 1) Then _
            sWkCOC.Range("A" & y).Resize(1, 19).Value = sWkECR.Range("A" & x).Resize(1, 19).Value: _
            Exit For
    Next
Next
'
End Sub


A+

Hello Curulis,

Merci pour ta réponse ! Ton code marche très bien.

Cependant, je me demande juste quel est la différence avec le mien ? Car de ce que je vois, tu ne copie pas mais ajoute simplement les valeurs, ce qui est bien plus simple d'ailleurs..

Mais par contre, j'ai l'impression que mon code était relativement similaire..

Merci

A+

Kilian

Salut Kilian,

similaire ne veut pas dire identique !
Tu utilises la même variable Finalrow (= 2) pour tes deux boucles : normal que ta boucle y cale à 2 itérations...

For x = 4 To Finalrow
    For y = 4 To Finalrow

...quand je calcule la hauteur de colonne [A:A] de chaque feuille ECR - COC...

For x = 4 To sWkECR.Range("A" & Rows.Count).End(xlUp).Row
    For y = 4 To sWkCOC.Range("A" & Rows.Count).End(xlUp).Row

CQFD...


A+

Salut Curulis,

Ah oui je comprend mieux maintenant !

En modifiant à peine ton code pour l'adapter à d'autre feuille, le code m'a fait deux chose :

1) Il a supprimer les données de la feuille chef et ne les a pas rempli dans la feuille ECR

2) il saute directement à End sub après le premier for (For x)

Sais-tu pourquoi ?

Merci,

Kilian

Petit comique, Kilian...

En modifiant à peine ton code

Je peux voir ce code et le fichier ?


A+

Et bien, après un nouveau test, ça marche...

Je ne sais pas ce que j'ai fais mais c'est tout bon :)

Encore merci

Kilian

J'a une autre problème, j'aimerai supprimer une ligne sur une des mes feuilles.J'ai utilisé ce code mais il ne fonctionne pas et je ne comprends pas pourquoi.

Sub Supp_lign_Chef()

If MsgBox("Etes-vous sûr de vouloir supprimer la demande numéro " & Refus.ComboBox1.Value & " ?", vbYesNo) = vbYes Then
Rows([A4:A100000].Find(Refus.ComboBox1.Value).row).EntireRow.Delete
End If
Unload Refus
End Sub

D'avance merci.

C'est tout bon, j'ai trouvé.

Sujet désormais clos.

Merci à toi,

Kilian

Rechercher des sujets similaires à "boucle arretent lignes"