VB_ Boucle et condition

Résolu
Lamabde -  
yg_be Messages postés 23437 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.

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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    0
  2. Lamabde
     
    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
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu as totalement ignoré ma suggestion.
      décris plus précisément ce que tu veux faire, peut-être avec un exemple.
      0
  3. Lamabde
     
    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 :-)



    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      0
  4. Lamabde
     
    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
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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?
      0