Incrémentaion variable VBA

Résolu
Bonjour,

Mon problème est le suivant :

Dans ma feuille (Donnees) et la colonne (K) j'ai plusieurs données textes.
Je veux que mon programme séléctionne uniquement les lignes où on trouve "assemblage - soudure" dans la colonne (K).
Puis que ces lignes soient copiées dans une autre feuille nommée (Charge Assemblage).

Le code que j'ai écrit si dessous séléctionne bien la première ligne où on trouve "assemblage - soudure" dans la colonne (K).
Comment dois-je incrémenter ma variable "assemblage" afin qu'il passe à la deuxième puis la troisième... jusqu'à la dernière ?

Merci pour votre aide

    donnee = "assemblage - soudure"
                        
    Do

        Sheets("Donnees").Select
        assemblage = Columns(11).Find(What:=donnee, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns).Row
        Rows(assemblage).Select
        Selection.Copy

        Sheets("Charge Assemblage").Select
        v_dligne = Range("$A$65536").End(xlUp).Address
        Range(v_dligne).Offset(1, 0).Select
        ActiveSheet.Paste

        Sheets("Donnees").Select

    Loop Until v_derniere_ligne = Range("$K$65536").End(xlUp).Address

8 réponses

  1. Merci à vous deux ;) !!!

    Ca fonctionne avec la solution de f894009

    Merci encore
    1. Bonjour a vous tous

      une autre facon de voir

      Code a mettre dans un module

      Sub Recherche_Copie()
        Dim Col_K As Range
        Dim DerligK As Integer, DerligA As Integer, Lig As Integer, Iter As Long
        Dim donnee, Nb_Tr As Long
        
        donnee = "assemblage - soudure"
      
        Application.ScreenUpdating = False
        With Worksheets("Donnees")
          'Recherche derniere ligne colonne K
          DerligK = .Columns("K").Find("*", , , , , xlPrevious).Row
          Set Col_K = .Range("K1:K" & DerligK)
          'Pour diminuer le temps de recherche
          Nb_Tr = Application.CountIf(Col_K, donnee)
          If Nb_Tr > 0 Then
            Lig = 1
            For Iter = 1 To Nb_Tr
              'Recherche de la position pour copier la ligne
              'xlWhole recherche une valeur exacte,
              Lig = .Columns("K").Find(donnee, .Cells(Lig, "K"), , xlWhole).Row
              'Ecriture ligne(s)
              With Worksheets("Charge Assemblage")
                'Recherche derniere ligne colonne A
                DerligA = .Range("$A$65536").End(xlUp).Row
                'copie de la ligne
                Worksheets("Donnees").Rows(Lig).Copy .Range("A" & DerligA + 1)
              End With
            Next Iter
          End If
        End With
        
        Application.ScreenUpdating = False
      End Sub
      


      Bonne suite
      1. essais ça:
        Dim c As Variant
        For Each c In Range("")  <- met les coordonnée de ta plage de valeur
            if c.value="assemblage - soudure" then 
                Sheets("Donnees").Select
                    assemblage = Columns(11).Find(What:=donnee, LookIn:=xlFormulas,      
                    LookAt:=xlPart, SearchOrder:=xlByColumns).Row
                    Rows(assemblage).Select
                    Selection.Copy
        
                    Sheets("Charge Assemblage").Select
                    v_dligne = Range("$A$65536").End(xlUp).Address
                    Range(v_dligne).Offset(1, 0).Select
                    ActiveSheet.Paste
        
            end if
        Next c
        1. Voici ce que j'ai fait mais ca ne fonctionne pas :

              donnee = "assemblage - soudure"
              
              For Each donnee In Sheets("Donnees")
                                   
                  While ActiveCell.Value <> ""
          
                      Sheets("Donnees").Select
                      assemblage = Columns(11).Find(What:=donnee, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns).Row
                      Rows(assemblage).Select
                      Selection.Copy
          
                      Sheets("Charge Assemblage").Select
                      v_dligne = Range("$A$65536").End(xlUp).Address
                      Range(v_dligne).Offset(1, 0).Select
                      ActiveSheet.Paste
          
                  Wend
              
              Next
          1. je ne me souvient plus très bien du vba mais
            for each
            marche?

            du genre :

             FOR EACH "assemblage - soudure" IN Sheets("Charge Assemblage")
            
            
            
                    Sheets("Donnees").Select
                    assemblage = Columns(11).Find(What:=donnee, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns).Row
                    Rows(assemblage).Select
                    Selection.Copy
            
                    Sheets("Charge Assemblage").Select
                    v_dligne = Range("$A$65536").End(xlUp).Address
                    Range(v_dligne).Offset(1, 0).Select
                    ActiveSheet.Paste
            
                    Sheets("Donnees").Select
            
            
            NEXT 
            1. Déjà essayé mais il me prend la ligne juste en dessous et non pas la prochaine ou c'est écrit "assemblage - soudure" !