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. 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. 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. Merci à vous deux ;) !!!

              Ca fonctionne avec la solution de f894009

              Merci encore