VB_ Boucle et condition
Résolu
Lamabde
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
A voir également:
- VB_ Boucle et condition
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
4 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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