Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro pour reorganiser une liste

2 réponses
Avatar
hobywan
Bonjour, et bonne anne a tous.
je vais essayer de vous exposer mon probleme le plus succintement possible.
J'ai un tableau de 1 colonne et X lignes ( c'est variable mais souvant + de
500)
pour faire simple disons 23 lignes.
je veux creer un nouveau fichier (ou une feuile) avec :
- dans la 1er colonne les 5 premieres valeurs dans les lignes 1 à 5 puis
une copie de ces 5 valeurs dans les lignes de 6 à 10
- dans la 2eme colonne les 5 valeurs suivantes dans les lignes 1 à 5
puis une copie de ces valeurs dans les lignes 6 à 10.
- ainsi de suite dans les colonnes 3 et 4.
- pour la colone 5 dans les lignes 1 à 3 les 3 dernieres valeurs de la
liste, rien dans les lignes 4 et 5 puis la copie des 3 valeurs dans le lignes
6 à 8 et rien dans les lignes 9 et 10.
Ouf !! j'espère que ce n'est pas trop confus.
J'ai fait un tri manuellement pour exemple, je peux éventuellement faire
passer le fichier.
Le top serait que la maro reconnaisse le nombre de valeurs à ranger de façon
automatique.
Merci à tous ceux qui auront au moins pris le temps de me lire j'usqu'au
bout.

2 réponses

Avatar
Gaenonius
Si j'ai bien compris, avec tes 23 lignes exemples en colonne A, de A1 à A23 :

Sub Decoupe()
Dim DerLi As Long
DerLi = Cells(Rows.Count, "A").End(xlUp).Row
j = 1
For i = 4 To DerLi Step 5
j = j + 1
Cells(6, j - 1).Resize(DerLi - i - 1).Cut Cells(1, j)
Next
Range("1:5").Copy Range("6:10")
End Sub

Si les données ne commencent pas en A1, il faudra adapter.

--
Gaenonius

Bonjour, et bonne anne a tous.
je vais essayer de vous exposer mon probleme le plus succintement possible.
J'ai un tableau de 1 colonne et X lignes ( c'est variable mais souvant + de
500)
pour faire simple disons 23 lignes.
je veux creer un nouveau fichier (ou une feuile) avec :
- dans la 1er colonne les 5 premieres valeurs dans les lignes 1 à 5 puis
une copie de ces 5 valeurs dans les lignes de 6 à 10
- dans la 2eme colonne les 5 valeurs suivantes dans les lignes 1 à 5
puis une copie de ces valeurs dans les lignes 6 à 10.
- ainsi de suite dans les colonnes 3 et 4.
- pour la colone 5 dans les lignes 1 à 3 les 3 dernieres valeurs de la
liste, rien dans les lignes 4 et 5 puis la copie des 3 valeurs dans le lignes
6 à 8 et rien dans les lignes 9 et 10.
Ouf !! j'espère que ce n'est pas trop confus.
J'ai fait un tri manuellement pour exemple, je peux éventuellement faire
passer le fichier.
Le top serait que la maro reconnaisse le nombre de valeurs à ranger de façon
automatique.
Merci à tous ceux qui auront au moins pris le temps de me lire j'usqu'au
bout.



Avatar
hobywan
Merci d'avoir répondu aussi vite.
La macro fonctionne a la perfection et je l'ai adaptée car en fait je
fonctionne par lots de 24 lignes et non 5 comme dans mon exemple mais c'était
pour faire court.
Je ne maitrise pas le VBA mais j'ai réussi à adapter.
Mon but est de formater un tableau Excel issu d'un soft pour générer des
étiquettes vers une marqueuse spécifique.
Si je peux abuser de ta patience, il faut que je perfectionne la macro de la
façon suivante :
Fichier brut :
en A1 du texte
de A2 à A n les données.
Fichier rangé :
A1 le texte
de B2 à B25 on range de A2 à A25
de B26 à B49 on recopie B1 à B24
de B50 à B73 on range de A26 à A49
de B74 à B97 on recopie de B49 à B72
de B98 à B121 on range de A50 à A73
de B122 à B145 on recopie de B97 à B120
de B146 à B169 on range de A74 à A96
de B170 à B193 on recopie de B145 à B168
on continue de la même façon de A97 à A193 dans C1 à C193
jusqu'a la fin de la liste en A.
enfin il faut un numéro chrono de 1 à x dans les entêtes de colonnes B1 à
la dernière crée.
Enfin, comment mémoriser la macro dans Excel pour pouvoir l'appliquer sur
n'importe quel fichier?

Par contre, plutôt que de copier bêtement la macro et de l'utiliser, pour
progresser, il faut que je comprenne comment ça marche.
Si c'est possible de me mettre quelques commentaires
Merci de la patience qui m'est accordée.




Si j'ai bien compris, avec tes 23 lignes exemples en colonne A, de A1 à A23 :

Sub Decoupe()
Dim DerLi As Long
DerLi = Cells(Rows.Count, "A").End(xlUp).Row
j = 1
For i = 4 To DerLi Step 5
j = j + 1
Cells(6, j - 1).Resize(DerLi - i - 1).Cut Cells(1, j)
Next
Range("1:5").Copy Range("6:10")
End Sub

Si les données ne commencent pas en A1, il faudra adapter.

--
Gaenonius

Bonjour, et bonne anne a tous.
je vais essayer de vous exposer mon probleme le plus succintement possible.
J'ai un tableau de 1 colonne et X lignes ( c'est variable mais souvant + de
500)
pour faire simple disons 23 lignes.
je veux creer un nouveau fichier (ou une feuile) avec :
- dans la 1er colonne les 5 premieres valeurs dans les lignes 1 à 5 puis
une copie de ces 5 valeurs dans les lignes de 6 à 10
- dans la 2eme colonne les 5 valeurs suivantes dans les lignes 1 à 5
puis une copie de ces valeurs dans les lignes 6 à 10.
- ainsi de suite dans les colonnes 3 et 4.
- pour la colone 5 dans les lignes 1 à 3 les 3 dernieres valeurs de la
liste, rien dans les lignes 4 et 5 puis la copie des 3 valeurs dans le lignes
6 à 8 et rien dans les lignes 9 et 10.
Ouf !! j'espère que ce n'est pas trop confus.
J'ai fait un tri manuellement pour exemple, je peux éventuellement faire
passer le fichier.
Le top serait que la maro reconnaisse le nombre de valeurs à ranger de façon
automatique.
Merci à tous ceux qui auront au moins pris le temps de me lire j'usqu'au
bout.