VB_ Boucle et condition [Résolu]

Signaler
-
Messages postés
15964
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juin 2021
-
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.


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

Messages postés
15964
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juin 2021
866
bonjour,
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
Messages postés
4
Date d'inscription
lundi 24 mai 2021
Statut
Membre
Dernière intervention
24 mai 2021

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 :-).


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
Messages postés
15964
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juin 2021
866
tu as totalement ignoré ma suggestion.
décris plus précisément ce que tu veux faire, peut-être avec un exemple.
Messages postés
4
Date d'inscription
lundi 24 mai 2021
Statut
Membre
Dernière intervention
24 mai 2021

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 :-)






Messages postés
15964
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juin 2021
866
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:
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
Messages postés
4
Date d'inscription
lundi 24 mai 2021
Statut
Membre
Dernière intervention
24 mai 2021

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
Messages postés
15964
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
10 juin 2021
866
je pense que l'âge n'y fait rien, il faut simplement rentrer dans la logique de l'outil.
ne dénigre pas les plus vieux que toi, tu serais surpris si plus personne ne voulait t'aider.
bon sport et bon apprentissage!

tu penseras à marquer la discussion comme résolue?