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

Spoutnik.1 Messages postés 4 Statut Membre -  
Spoutnik.1 Messages postés 4 Statut Membre -
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

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

    oui ?!
    0
  2. 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
  3. Spoutnik.1 Messages postés 4 Statut Membre
     
    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
  4. Spoutnik.1 Messages postés 4 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Spoutnik.1 Messages postés 4 Statut Membre
     
    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