VBA - Macro pour transposer un tableau colonnes en tableau lignes
Résolu
Amande42
Messages postés
26
Statut
Membre
-
f894009 Messages postés 17413 Statut Membre -
f894009 Messages postés 17413 Statut Membre -
Bonjour,
J'ai un tableau avec des données regroupées en colonnes pour chaque mois et je souhaiterais à l'aide d'une macro obtenir mes données chiffrées en ligne.
Voici ce que je veux obtenir : tableau de gauche = données de départ, tableau de droite = ce que je veux obtenir
Je précise que le nombre de colonnes et de lignes varient, ce n'est qu'un petit exemple (désolée je n'arrive pas à joindre de fichier, seulement des images).

Voici mon code qui bug et je n'arrive pas à savoir pourquoi.
Il plante au niveau de la première bouche et j'ai le message suivant qui apparaît :
Je vous remercie par avance pour votre aide.
Et j'espère avoir été claire.
Bonne journée à tous.
Amandine
J'ai un tableau avec des données regroupées en colonnes pour chaque mois et je souhaiterais à l'aide d'une macro obtenir mes données chiffrées en ligne.
Voici ce que je veux obtenir : tableau de gauche = données de départ, tableau de droite = ce que je veux obtenir
Je précise que le nombre de colonnes et de lignes varient, ce n'est qu'un petit exemple (désolée je n'arrive pas à joindre de fichier, seulement des images).
Voici mon code qui bug et je n'arrive pas à savoir pourquoi.
Il plante au niveau de la première bouche et j'ai le message suivant qui apparaît :
[/contents/446-fichier-sub Sub] MiseEnFormeBDD() Dim WsFeuille As Worksheet Dim WsRestit As Worksheet Set WsFeuille = Worksheets("Feuil1") Set WsRestit = Worksheets("Restit") 'TRANSPOSITION DES DONNEES EN LIGNES Dim a, b(), i As Long, j As Long, n As Long a = WsFeuille.Range("a1").CurrentRegion.Value2 [/download/telecharger-34086571-redim ReDim] b(1 To UBound(a, 1), 1 To UBound(a, 1)) n = 1 b(n, 1) = a(1, 1): b(n, 2) = a(1, 2) b(n, 3) = "Date" b(n, 4) = "Données" For j = 3 To UBound(a, 2) For i = 2 To UBound(a, 1) n = n + 1 b(n, 1) = a(i, 1): b(n, 2) = a(i, 2) b(n, 3) = a(1, j) b(n, 4) = a(i, j) Next Next Application.ScreenUpdating = False On Error Resume Next Application.DisplayAlerts = False 'ANALYSE DES DONNEES DANS FEUILLE RESTIT WsRestit.Cells.Delete With WsRestit.Range("a1") With .Resize(UBound(b, 1), UBound(b, 2)) .Value = b .Font.Name = "calibri" .Font.Size = 10 .BorderAround Weight:=xlThin .Borders(xlInsideVertical).Weight = xlThin .VerticalAlignment = xlCenter With .Rows(1) .BorderAround Weight:=xlThin .Interior.ColorIndex = 43 .HorizontalAlignment = xlCenter End With .Columns.AutoFit .Columns(7).NumberFormat = "mm/yyyy;@" End With End With End Sub
Je vous remercie par avance pour votre aide.
Et j'espère avoir été claire.
Bonne journée à tous.
Amandine
A voir également:
- Transposer ligne en colonne excel vba
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Partager photos en ligne - Guide
- Liste déroulante excel - Guide
- Formule somme excel colonne - Guide
3 réponses
Bonjour,
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
ou
'mon partage
https://mon-partage.fr/
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
ou
'mon partage
https://mon-partage.fr/
Merci f894009 pour ta réponse.
Bon je vais faire celle qui comprend rien mais j'ai essayé de modifier mon code en fonction de tes indications et je n'ai pas dû corriger au bon endroit.
Pour info, c'était un code que j'avais trouvé sur internet pour un précédent dossier, et quand j'essaie de l'actualiser pour ce cas-là, et ben ça ne veut pas marcher. Ce qui expliquer aussi sûrement le tableau final à 9 colonnes.
Merci pour ton retour.
Amandine
Bon je vais faire celle qui comprend rien mais j'ai essayé de modifier mon code en fonction de tes indications et je n'ai pas dû corriger au bon endroit.
Pour info, c'était un code que j'avais trouvé sur internet pour un précédent dossier, et quand j'essaie de l'actualiser pour ce cas-là, et ben ça ne veut pas marcher. Ce qui expliquer aussi sûrement le tableau final à 9 colonnes.
Merci pour ton retour.
Amandine