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. 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. Déjà essayé mais il me prend la ligne juste en dessous et non pas la prochaine ou c'est écrit "assemblage - soudure" !
      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. 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. 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. Merci à vous deux ;) !!!

              Ca fonctionne avec la solution de f894009

              Merci encore