Transposer / des paquets de 5 sur une ligne en différente ligne

Signaler
Messages postés
4
Date d'inscription
lundi 29 juin 2020
Statut
Membre
Dernière intervention
29 juin 2020
-
Messages postés
4
Date d'inscription
lundi 29 juin 2020
Statut
Membre
Dernière intervention
29 juin 2020
-
Bonjour,
je me permets de venir ici pour une question excel.

je bidouille vba sans être avancé, j'avais repris le travail d'une contribution pour transposer / découper et je tente de l'améliorer mais suis bloqué sur une boucle.





Configuration: Windows / Chrome 83.0.4103.116

5 réponses

Messages postés
604
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
3 juillet 2020
53
Bonjour,

oui ?!
Messages postés
599
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
3 juillet 2020
57
Bonjour
Vos "paquets" de 5 sont séparés comment ?
Les données ont des longueurs fixes, variables ?
La fonction Données, Convertir peut peut être fonctionner parfaitement mais il faudrait "voir" les données ou avoir une copie du fichier (si pas de données privées) avec cjoint.com
A+
Messages postés
4
Date d'inscription
lundi 29 juin 2020
Statut
Membre
Dernière intervention
29 juin 2020

Bonjour,
je me permets de venir ici pour une question excel.

je bidouille vba sans être avancé, j'avais repris le travail d'une contribution pour transposer / découper et je tente de l'adapter mais suis bloqué sur une boucle.

en gros j'ai 2000 ligne avec 14 * 5 arguments qui se suivent.
je souhaite transformer le tout pour avoir 28000 ligne avec 5 cases

grâce à Michel_m sur ce forum, je sais le faire pour une ligne, mais je n'arrive pas à le faire pour passer à la ligne suivante.
le post sur lequel j'avais trouvé de l'aide:

https://forums.commentcamarche.net/forum/affich-14285438-excel-vba-ecel-mise-en-forme-ligne

ma tentative, presque fructueuse. je pense que le probleme vient du range, mais je ne le comprends pas. si qqun à une idée.


Sub transposerligne(deb_lig As Long, deb_col As Long, ColL As String, LigneL As Long)
Dim nbligne As Long
Dim col As Long, lig As Long
Dim tablo(4, 20)
For nbligne = 0 To 1

For col = 0 To 20
For lig = 0 + nbligne * 5 To 4 + nbligne * 5

tablo(lig, col) = Cells(deb_lig, deb_col)
deb_col = deb_col + 1
Next
Next

Range(ColL & LigneL + nbligne * 5).Resize(5, 5) = Application.Transpose(tablo)

Next

End Sub

-----------------------------------------------------------------------

Sub transformer_tableauligne()
transposerligne 1, 1, "aa", 8
End Sub
'pour des paquets de 5 lignes
'Range(cells(ColL & LigneL) pour faire varier range
Messages postés
4
Date d'inscription
lundi 29 juin 2020
Statut
Membre
Dernière intervention
29 juin 2020

pour répondre, les données sont dans des cases séparées.

ligne 1: (il y a toujours le meme nombre de paquets de 5)
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
abcde abcde abcde


et je voudrais

12345
12345
12345
abcde
abcde
abcde
Messages postés
4
Date d'inscription
lundi 29 juin 2020
Statut
Membre
Dernière intervention
29 juin 2020

si ca peut interresser qqun un jour, je pense avoir reussi le test est sur 1 ligne avec 20 cases que je coupe en paquet de 5.

Sub transposerligne(deb_lig As Long, deb_col As Long, ColL As String, LigneL As Long)
Dim nbligne As Long
Dim col As Long, lig As Long
Dim tablo(4, 20)

For col = 0 To 20
For lig = 0 + nbligne * 5 To 4 + nbligne * 5
tablo(lig, col) = Cells(deb_lig, deb_col)
deb_col = deb_col + 1
Next
Next
Range(ColL & LigneL).Resize(5, 5) = Application.Transpose(tablo)


End Sub

Sub transformer_tableauligne()
Dim nbligne As Long
For nbligne = 1 To 4
transposerligne nbligne, 1, "aa", 7 + nbligne * 4


Next
End Sub
'pour des paquets de 5 lignes
'Range(cells(ColL & LigneL) pour faire varier range
'