réorganisation de données - transposer lignes en une colonne

Rhiannon51

XLDnaute Nouveau
Bonjour le forum,

Après plusieurs essais infructueux, je viens vous demander quelques précieux conseils.

Voilà ma problématique :

J'ai des données issues d'une enquête qui se présente comme ça :

domaine1 revue1 revue2 revue3 ...
domaine2 revue1 revue2 ...
...

Je voudrais réorganiser mes données pour obtenir ça :

domaine1 revue1
domaine1 revue2
domaine1 revue3
domaine1 ...
domaine 2 revue1
domaine 2 revue2
domaine 2 ...
...

J'ai essayé avec un code trouvé sur internet en l'adaptant à mon fichier mais je bloque sur la 2ème boucle For. Je sais que la syntaxe est erronée mais je n'arrive à la corriger.

Ci-dessous le code en question :
Code:
'On boucle sur toutes les cellule de la colonne A, on quittera sur contenu cellule vide
For I = 7 To Rows.count
    If Cells(I, "A") = "" Then Exit For
 
    'On regarde le nombre de ligne qui vont etre créer
    NbrSaute = Cells(I, columns.count).End(xlToLeft).Column - 1 '-1 pour ne pas tenir compte de A
    
    'On boucle de la derniere colonne remplie a la colonne B
    For Col = range(cells(i, columns.count).End(xlToLeft),cells(i,"B") Step -1
        'on ajoute une ligne sous la cellule
        Cells(I + 1, "A").EntireRow.Insert
        'on lui donne le meme contenue (n°Insee)
        Cells(I + 1, "A").Value = Cells(I, "A").Value
        'On met le contenue de la colonne Col dans la 2eme colonne de la ligne suivnate
        Cells(I, Col).Cut Cells(I + 1, "B")
    Next
    'On saute les 2 ligne fraichement rajoutées
    I = I + NbrSaute
Next

Je vous joins également un fichier exemple.

J'espère avoir été assez claire dans mes explications.

Merci de votre aide.
Rhiannon.
 

Pièces jointes

  • test réorganisation.xlsx
    11.7 KB · Affichages: 53

CHALET53

XLDnaute Barbatruc
Re : réorganisation de données - transposer lignes en une colonne

Bonjour,

sur le fichier proposé, ce code modifié semble fonctionner

Sub essai()


'On boucle sur toutes les cellule de la colonne A, on quittera sur contenu cellule vide
derligne = Sheets("données brutes").Range("A65536").End(xlUp).Row
For i = 7 To 10000
If Cells(i, "A") = "" Then Exit For

'On regarde le nombre de ligne qui vont etre créer
NbrSaute = Cells(i, Columns.Count).End(xlToLeft).Column - 1 '-1 pour ne pas tenir compte de A
a = Range("IV7").End(xlToLeft).Column ', Cells(i, "B"))
a = Range("IV" & i).End(xlToLeft).Column
'On boucle de la derniere colonne remplie a la colonne B
For col = Range("IV" & i).End(xlToLeft).Column To 3 Step -1

'on ajoute une ligne sous la cellule
Cells(i + 1, "A").EntireRow.Insert
'on lui donne le meme contenue (n°Insee)
Cells(i + 1, "A").Value = Cells(i, "A").Value
'On met le contenue de la colonne Col dans la 2eme colonne de la ligne suivnate
b = Cells(i, col)
Cells(i, col).Cut Cells(i + 1, "B")
c = Cells(i + 1, "B")
Next
Stop
'On saute les 2 ligne fraichement rajoutées
i = i + NbrSaute - 1
Next
End Sub
 

Discussions similaires

Réponses
5
Affichages
226

Statistiques des forums

Discussions
312 111
Messages
2 085 392
Membres
102 882
dernier inscrit
Sultan94