Macro excel copier des séries de valeurs
RWAN35
Messages postés
1
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà, mon problème :
J’ai une série de tableaux sur une feuil1 excel. Certains de ces tableaux ont une colonne « Step » dont je veux copier le contenu de chaque cellule tant que celle-ci est pleine et coller ce que j’ai trouvé dans une colonne sur une feuil2 (colonne I). Quand j’arrive sur une cellule vide, cela signifie en fait que je suis sorti du tableau et que je n’ai plus qu’à aller à la colonne « Step » du prochain tableau qui en possède une pour ainsi effectuer la même opération et coller ce que j’ai trouvé à la suite de ce que j’ai déjà mis dans ma colonne I de ma feuil2.
Fort heureusement, toutes les colonnes intitulées « Step » sont dans la colonne A de ma Feuil1.
Voilà ce que je veux faire :
Si dans ma Feuil1 sous mon premier « Step » je trouve 5 cellules avec les valeurs A, B, C, D, E, que sous mon deuxième « Step » je trouve 7 cellules A, B, C, D, E, F, G et que sous mon troisième « Step » je trouve 3 cellules A, B, C alors je dois avoir dans ma colonne I sur ma Feuil2 la chose suivante :
A, B, C, D, E, A, B, C, D, E, F, G, A, B, C
et ainsi de suite jusqu’à ce que j’ai récupéré toutes mes valeurs sous chaque « Step »
Voilà mon code. Pour l’instant il ne me permet que de récupérer que les premières valeurs à chaque fois c'est-à-dire A :
Dim source As Range
Dim cible As Range
Set cible = Worksheets(2).Range("I2") ' // la cible commence en I2
For Each source In Worksheets(1).Columns(1).Cells ' // On parcourt la première colonne de la Feuil1
If source.Text = "Step" Then ' // Cette cellule de la colonne 1 contient le mot step
cible.Value = source.Offset(1, 0).Value ' // On se décale d'une cellule vers le bas et on copie la valeur de la cellule vers la cible (Feuil2)
(C’est ici je pense qu’il me faudrait indiquer qu’il faut descendre d’une cellule et que tant que la cellule est non vide copier son contenu à la suite de ce qu’on a copié précédemment sur la Feuil2)
Set cible = cible.Offset(1, 0)
End If
Quelqu’un a t-il une idée ou une autre soluce ? Merci d'avance
Voilà, mon problème :
J’ai une série de tableaux sur une feuil1 excel. Certains de ces tableaux ont une colonne « Step » dont je veux copier le contenu de chaque cellule tant que celle-ci est pleine et coller ce que j’ai trouvé dans une colonne sur une feuil2 (colonne I). Quand j’arrive sur une cellule vide, cela signifie en fait que je suis sorti du tableau et que je n’ai plus qu’à aller à la colonne « Step » du prochain tableau qui en possède une pour ainsi effectuer la même opération et coller ce que j’ai trouvé à la suite de ce que j’ai déjà mis dans ma colonne I de ma feuil2.
Fort heureusement, toutes les colonnes intitulées « Step » sont dans la colonne A de ma Feuil1.
Voilà ce que je veux faire :
Si dans ma Feuil1 sous mon premier « Step » je trouve 5 cellules avec les valeurs A, B, C, D, E, que sous mon deuxième « Step » je trouve 7 cellules A, B, C, D, E, F, G et que sous mon troisième « Step » je trouve 3 cellules A, B, C alors je dois avoir dans ma colonne I sur ma Feuil2 la chose suivante :
A, B, C, D, E, A, B, C, D, E, F, G, A, B, C
et ainsi de suite jusqu’à ce que j’ai récupéré toutes mes valeurs sous chaque « Step »
Voilà mon code. Pour l’instant il ne me permet que de récupérer que les premières valeurs à chaque fois c'est-à-dire A :
Dim source As Range
Dim cible As Range
Set cible = Worksheets(2).Range("I2") ' // la cible commence en I2
For Each source In Worksheets(1).Columns(1).Cells ' // On parcourt la première colonne de la Feuil1
If source.Text = "Step" Then ' // Cette cellule de la colonne 1 contient le mot step
cible.Value = source.Offset(1, 0).Value ' // On se décale d'une cellule vers le bas et on copie la valeur de la cellule vers la cible (Feuil2)
(C’est ici je pense qu’il me faudrait indiquer qu’il faut descendre d’une cellule et que tant que la cellule est non vide copier son contenu à la suite de ce qu’on a copié précédemment sur la Feuil2)
Set cible = cible.Offset(1, 0)
End If
Quelqu’un a t-il une idée ou une autre soluce ? Merci d'avance
A voir également:
- Macro excel copier des séries de valeurs
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment copier une vidéo youtube - Guide
- Si ou excel - Guide
1 réponse
Bonsoir
Essaies cette macro (feuilles et colonnes à adapter)
il est considéré qu'il y a une étiquette de champ dans les lignes1 de chaque feuille
ci joint maquette
https://www.cjoint.com/?hvtibRIDF5
Essaies cette macro (feuilles et colonnes à adapter)
il est considéré qu'il y a une étiquette de champ dans les lignes1 de chaque feuille
Sub stepbystep()
Dim tablo
Dim lig As Long, nbre As Long, cptr As Long
Sheets(1).Activate
nbre = Application.CountIf(Columns(1), "step")
ReDim tablo(0)
'mémorise les positions "step"
lig = 1
While cptr < nbre
lig = Columns(1).Find("step", Cells(lig, 1)).Row
tablo(cptr) = lig
cptr = cptr + 1
ReDim Preserve tablo(cptr)
Wend
'denière ligne du tableau
tablo(cptr) = Range("A65536").End(xlUp).Row + 1
cptr = 0
While cptr < nbre
'sélectionne les données entre 2 steps et les copies à partir de la 1° lig vide dans sheets2
Range(Cells(tablo(cptr) + 1, 1), Cells(tablo(cptr + 1) - 1, 1)).Copy Sheets(2).Cells(Sheets(2).Range("A65536").End(xlUp).Row + 1, 1)
cptr = cptr + 1
Wend
Sheets(2).Activate
End Sub
ci joint maquette
https://www.cjoint.com/?hvtibRIDF5