VB_ Boucle et condition
Résolu
Lamabde
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je suis débutant dans VB et ça fait quelques jours que j'essaie sans y arriver à faire tourner ce programme.
En fait, j'essaie de créer une boucle qui compare une case avec les cases d'une autre feuille et si la cdt est rencontrée alors on copie la ligne sinon, on passe à la vérification de la deuxième ligne et ainsi de suite.
Je suis débutant dans VB et ça fait quelques jours que j'essaie sans y arriver à faire tourner ce programme.
En fait, j'essaie de créer une boucle qui compare une case avec les cases d'une autre feuille et si la cdt est rencontrée alors on copie la ligne sinon, on passe à la vérification de la deuxième ligne et ainsi de suite.
Sub ts2() Dim I As Long Dim j As Long With Worksheets("sheet1") For I = 1 To .Cells(Rows.Count).End(xlUp).Row For j = 1 To .Cells(Rows.Count).End(xlUp).Row If Worksheets("sheet2").Range("G2") = Worksheets("sheet1").Range("B2") Then 'comment faire la boucle de comparaison avec chaque ligne du sheet1 ensuite copier pour chaque ligne sheet2 si la condition est rencontrée .Range("A2" & I).Copy Worksheets("sheet2").Range("A7") 'la boucle ne fonctionne pas ni copier ni coller! .Range("C2").Copy Worksheets("sheet2").Range("B7") .Range("D2").Copy Worksheets("sheet2").Range("C7") .Range("E2").Copy Worksheets("sheet2").Range("D7") .Range("F2").Copy Worksheets("sheet2").Range("E7") .Range("G2").Copy Worksheets("sheet2").Range("F7") .Range("H2").Copy Worksheets("sheet2").Range("G7") j = j + 1 End If Next j Next I End With End Sub
Configuration: Windows / Edge 90.0.818.66
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peut-être plutôt
peut-être plutôt
For i = 1 To Worksheets("sheet1").Cells(Rows.Count).End(xlUp).Row For j = 1 To Worksheets("sheet2").Cells(Rows.Count).End(xlUp).Row If Worksheets("sheet2").cells(j,"G") = Worksheets("sheet1").cells(i,"B") Then
Merci yg_be :-)
je n'arrive pas faire le boucle de comparaison avec copier coller dans l'autre feuille
j'ai inséré quelques lignes en y ajoutant une boucle après else - mais j'ai tjs le même souci.
il copie la première ligne, ça tourne et ça s'arrête.
Merci pour le help :-).
je n'arrive pas faire le boucle de comparaison avec copier coller dans l'autre feuille
j'ai inséré quelques lignes en y ajoutant une boucle après else - mais j'ai tjs le même souci.
il copie la première ligne, ça tourne et ça s'arrête.
Merci pour le help :-).
Sub ts2() Dim I As Integer Dim j As Integer Dim dt As Date dt = Worksheets("sheet2").Range("G2") With Worksheets("sheet1") For I = 1 To Range("A" & Rows.Count).End(xlUp).Row If dt = Worksheets("sheet1").Range("B2") Then 'comment faire la boucle de comparaison avec chaque ligne du sheet1 ensuite copier pour chaque ligne sheet2 si la condition est rencontrée .Range("A2").Copy Worksheets("sheet2").Range("A7") 'la boucle ne fonctionne pas ni copier ni coller! .Range("C2").Copy Worksheets("sheet2").Range("B7") .Range("D2").Copy Worksheets("sheet2").Range("C7") .Range("E2").Copy Worksheets("sheet2").Range("D7") .Range("F2").Copy Worksheets("sheet2").Range("E7") .Range("G2").Copy Worksheets("sheet2").Range("F7") .Range("H2").Copy Worksheets("sheet2").Range("G7") Else Do j = j + 1 Loop End If Next I End With End Sub
Re-Bonjour,
En fait, j'ai un tableau de base avec 7 colonnes dans la feuille 1 - je voudrais copier/coller les lignes dont la date corresponde p/r à la feuille 2. (voir les images ci-dessous).
Dommage, on ne peut pas insérer le fichier excel.
PS: j'ai vérifié ce tu m'as transmis, mais ça ne marchait pas non plus.
Merci :-)


En fait, j'ai un tableau de base avec 7 colonnes dans la feuille 1 - je voudrais copier/coller les lignes dont la date corresponde p/r à la feuille 2. (voir les images ci-dessous).
Dommage, on ne peut pas insérer le fichier excel.
PS: j'ai vérifié ce tu m'as transmis, mais ça ne marchait pas non plus.
Merci :-)


si tu veux partager un fichier, il faut le mettre à disposition sur internet (google drive, one drive, cjoint.com, ...), puis partager ici un lien vers le fichier.
suggestion:
suggestion:
Dim I As long Dim j As long Dim dt As Date dt = Worksheets("sheet2").Range("G2") j=7 For I = 2 To Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Row If dt = Worksheets("sheet1").cells(I,"B") Then Worksheets("sheet2").cells(j,"A")=Worksheets("sheet1").cells(I,"A") Worksheets("sheet2").cells(j,"B")=Worksheets("sheet1").cells(I,"C") Worksheets("sheet2").cells(j,"C")=Worksheets("sheet1").cells(I,"D") ' etc... j = j + 1 End If Next I
Re-Bonjour yg_be
Super gentil - le programme marche :-).
En fait, je ne pensais pas que j'étais aussi vieux ;-) - (la 50) :-).lot
je ferais dorénavant du sport et de l'apprentissage pour vieillir moins vite :-) - un peu d'humour !
en tout cas un très grand merci.
Cordialement
Super gentil - le programme marche :-).
En fait, je ne pensais pas que j'étais aussi vieux ;-) - (la 50) :-).lot
je ferais dorénavant du sport et de l'apprentissage pour vieillir moins vite :-) - un peu d'humour !
en tout cas un très grand merci.
Cordialement