Transformer un tableau croisé en liste

debutante01

XLDnaute Nouveau
Bonjour,

étant débutante sur excel, j'ai un petit souci que je n'arrive pas à régler, même en ayant visualisé des tutoriels et autres exemples sur le net.

J'ai un tableau avec 5000 lignes et à peu près 200 colonnes, avec des valeurs dans le tableau. Je souhaite transformer ce tableau en liste avec 3 colonnes (1ère colonne avec les données qui étaient en colonne, 2ème colonne avec les données qui étaient déja en colonne et 3ème colonne avec les valeurs du tableau). J'ai mis mon fichier en PJ. Je sais quelles sont les étapes pour entrer une macro, mais je ne connais pas les formules à appliquer... J'ai trouvé des macros sur le forum, mais à chaque fois trés différentes et que je n'arrive pas à adapter à mon cas :(

Est-ce que quelqu'un pourrait m'aider`?

Merci beaucoup
 

debutante01

XLDnaute Nouveau
Re : Transformer un tableau croisé en liste

Ah désolée

mon fichier était trop lourd même compressé alors je l'ai réduit seulement à quelques lignes et quelques colonnes, pour apporter un exemple...

Merci
 

Pièces jointes

  • Exports(exemple).xlsx
    12.3 KB · Affichages: 161

debutante01

XLDnaute Nouveau
Re : Transformer un tableau croisé en liste

Oui Pierrejean tu as tout à fait compris ce que je voulais ;)
J'ai vu le code que tu as entré. Et maintenant j'aimerais l'appliquer à mon fichier d'origine qui est bcp plus lourd (plus de lignes et plus de colonnes). Que dois-je modifier dans la macro :confused: et d'ailleurs puis-je copier coller la macro?
Désolée car je ne sais vraiment pas l'utiliser...
Merci bcp en tout cas :D
 

pierrejean

XLDnaute Barbatruc
Re : Transformer un tableau croisé en liste

Re

A priori il n'y a rien à changer si plus de lignes et plus de colonnes

Pour l'utiliser : Copier / coller l'integraliter du Module1 dans le Module1 de ton fichier
Teste et dis-nous
 

debutante01

XLDnaute Nouveau
Re : Transformer un tableau croisé en liste

Je viens d'essayer mais j'ai une erreur 13 qui s'affiche, et ensuite sur le module, j'ai la 3ème ligne en partant du bas qui est surlignée en jaune...

Celle-ci :

Sheets("Sheet1").Range("A1").Resize(UBound(tabres, 2), 3) = Application.Transpose(tabres)

J'imagine que je dois changer qq chose là dedans :confused:
 

pierrejean

XLDnaute Barbatruc
Re : Transformer un tableau croisé en liste

Re

Il est possible que la quantité de lignes depasse les les possibilités du Transpose
Teste cette version:

Code:
Option Base 1
Sub test()
Dim n As Long
Dim m As Long
Sheets("Sheet2").Cells.ClearContents
tablo = Sheets("Sheet1").Range("A1").CurrentRegion
ReDim tabres(1 To 3, 1 To 1)
For n = LBound(tablo, 1) + 1 To UBound(tablo, 1)
 For m = LBound(tablo, 2) + 1 To UBound(tablo, 2)
   If tablo(n, m) <> "" Then
     tabres(1, UBound(tabres, 2)) = tablo(n, 1)
     tabres(2, UBound(tabres, 2)) = tablo(1, m)
     tabres(3, UBound(tabres, 2)) = tablo(n, m)
     ReDim Preserve tabres(1 To 3, 1 To UBound(tabres, 2) + 1)
   End If
 Next m
Next n
ReDim Preserve tabres(1 To 3, 1 To UBound(tabres, 2) - 1)
Application.ScreenUpdating = False
For n = LBound(tabres, 1) To UBound(tabres, 1)
  For m = LBound(tabres, 2) To UBound(tabres, 2)
    Sheets("Sheet2").Cells(m, n) = tabres(n, m)
  Next m
Next n
Application.ScreenUpdating = True
Sheets("Sheet2").Select
End Sub
 

Discussions similaires

Réponses
4
Affichages
268

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 849
dernier inscrit
florentMIG