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

Spoutnik.1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Spoutnik.1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

Yoyo01000 Messages postés 1639 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

oui ?!
0
Utilisateur anonyme
 
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+
0
Spoutnik.1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Spoutnik.1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Spoutnik.1 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
'
0