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

Mettre des données sur plusieurs colonnes les unes à la suite des autres ?

1 réponse
Avatar
clement.mazen
Bonjour,

je recherche un moyen (via une macro VBA) d'automatiser le
regroupement sur une seule colonne des données contenues sur plusieurs
colonnes dans un tableau.


- Exemple de point de départ typique : un tableau de cinquante
colonnes de données par 200 lignes plus une colonne de titre pour
chaque ligne. (le nombre de colonnes et lignes n'est jamais
identique).

- Point d'arrivée souhaité : un tableau de deux colonnes et 10 000
(50x200) lignes
La colonne n°2 doit contenir les cinquante colonnes de données mises à
la suite les une des autres
La colonne n°1 doit contenir le titre correspondant dans le tableau
original à chaque élément de la colonne n°2.

C'est une procédure que je dois faire trop souvent à mon goût et sur
laquelle je m'arrache les cheveux à couper/coller les colonnes pour
les regrouper en une seule (je procède par dichotomie, mais quand
même...)

J'ai essayé de rechercher une solution, mais je ne trouve que des
astuces pour consolider des données sur plusieurs feuilles de travail.
Je débute en VBA et je m'arrache les cheveux à essayer de faire une
procédure pour automatiser ça, si quelqu'un pouvait m'aiguiller, je
lui en serai très reconnaissant !


Merci pour votre aide !

Clément

1 réponse

Avatar
Bourby
bonsoir,

essaye ceci dans un module standard; lancer l'exécution après avoir activé
ta feuille d'origine:

Sub essai()
Dim nouvelleFeuille As Worksheet, ancienneFeuille As Worksheet

Set ancienneFeuille = ActiveSheet
For i = 1 To Sheets.Count
If Sheets(i).Name = "enColonne" Then Sheets(i).Delete
Next i
Set nouvelleFeuille = Sheets.Add(Type:=xlWorksheet)
nouvelleFeuille.Name = "enColonne"

k = 0
For i = 1 To ancienneFeuille.Range("A1").End(xlDown).Row
For j = 2 To ancienneFeuille.Cells(i, 1).End(xlToRight).Column
k = k + 1
nouvelleFeuille.Cells(k, 1) = ancienneFeuille.Cells(i, 1)
nouvelleFeuille.Cells(k, 2) = ancienneFeuille.Cells(i, j)
Next j
Next i

End Sub

Cordialement

Bourby


"Cl?ment" a écrit dans le message news:

Bonjour,

je recherche un moyen (via une macro VBA) d'automatiser le
regroupement sur une seule colonne des données contenues sur plusieurs
colonnes dans un tableau.


- Exemple de point de départ typique : un tableau de cinquante
colonnes de données par 200 lignes plus une colonne de titre pour
chaque ligne. (le nombre de colonnes et lignes n'est jamais
identique).

- Point d'arrivée souhaité : un tableau de deux colonnes et 10 000
(50x200) lignes
La colonne n°2 doit contenir les cinquante colonnes de données mises à
la suite les une des autres
La colonne n°1 doit contenir le titre correspondant dans le tableau
original à chaque élément de la colonne n°2.

C'est une procédure que je dois faire trop souvent à mon goût et sur
laquelle je m'arrache les cheveux à couper/coller les colonnes pour
les regrouper en une seule (je procède par dichotomie, mais quand
même...)

J'ai essayé de rechercher une solution, mais je ne trouve que des
astuces pour consolider des données sur plusieurs feuilles de travail.
Je débute en VBA et je m'arrache les cheveux à essayer de faire une
procédure pour automatiser ça, si quelqu'un pouvait m'aiguiller, je
lui en serai très reconnaissant !


Merci pour votre aide !

Clément