Incrémentaion variable VBA
Résolu
miss_tik76
-
Miss_tik76 Messages postés 27 Statut Membre -
Miss_tik76 Messages postés 27 Statut Membre -
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
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
-
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 -
-
Déjà essayé mais il me prend la ligne juste en dessous et non pas la prochaine ou c'est écrit "assemblage - soudure" !
-
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
Il beug dès la ligne :
For Each donnee In Sheets("Donnees") -
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 -
Merci à vous deux ;) !!!
Ca fonctionne avec la solution de f894009
Merci encore