transformer un tableau simple en une liste à intégrer pour un tcd

margaux33

XLDnaute Nouveau
Bonjour
Je reçois régulièrement des fichiers contenant des tableaux à double entrées comme feuille 1 du fichier joint (le nombre de lignes ou colonnes est variable mais toujours de même nature).
Je cherche une macro qui peut transformer ce tableau en une liste similaire à celle de la feuille 2 du fichier joint.
L'objet de cette opération est d'intégrer ensuite cette liste dans une autre liste en de créer un TCD plus vaste (en fait multi période / axe).

Cordialement à vous et merci d'avance.
 

Pièces jointes

  • gestion.xls
    27.5 KB · Affichages: 322
  • gestion.xls
    27.5 KB · Affichages: 305
  • gestion.xls
    27.5 KB · Affichages: 303

FullMond

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonjour,

J'ai exactement le même problème mais appliqué à mon cas (donc pas exactement finalement)

Je n'arrive pas à visualiser le code de la macro que matthieu a utilisé pour ça.

Comment puis-je faire ça?

Merci par avance

Cordialement,
 

FullMond

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Re,

J'ai essayé d'appliquer cette macro à mon fichier mais ca ne fonctionne pas comme je le voudrais.

J'ai attaché le fichier ci-joint dans l'onglet Sheet1, mes datas et dans l'onglet Sheet3 ce que j'aimerais obtenir grâce à la macro (je n'ai mis que le début mais que le reste se décline dans le même ordre idée jusquà la ligne total non inclus et en largeur que cela prenne toutes les colonnes)

En gros ce que je cherche à obtenir, c'est de passer d'un tableau à double entrée, à une liste qui me permettra de la réutiliser en TCD.

Voilà, peut être que mon tableau de départ ne permet pas de faire ça, merci de votre aide et de vos conseils en tout cas.

Cdt
 

Pièces jointes

  • TEST.zip
    30.6 KB · Affichages: 101
  • TEST.zip
    30.6 KB · Affichages: 94
  • TEST.zip
    30.6 KB · Affichages: 100

karsand

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonjour,
Je trouve votre macro excellente. Bravo.
Actuellement, la macro est active sur une trentaine de colonnes et 50 lignes. Pourriez-vous passer à 300 ?
Où éventuellement pouvoir fixer le nombre de lignes et colonnes.
Merci pour votre réponse et surtout votre disponibilité.
Karsand
 

Fred0o

XLDnaute Barbatruc
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonsoir karsand et bienvenue sur le forum.

En fait, la macro en question s'auto-adapte au nombre de ligne et etcolonnes de la feuille 1. L'as-tu testée sur ton fichier de données ?

A+
 

karsand

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonsoir karsand et bienvenue sur le forum.

En fait, la macro en question s'auto-adapte au nombre de ligne et etcolonnes de la feuille 1. L'as-tu testée sur ton fichier de données ?

A+


Bonjour,
Il fait jour à la Réunion. J'ai copié les données de ma feuille sur la feuille1. Les fusions se font automatiquement mais la dernière colonne et la dernière ligne n'apparaissent pas. Avec 49 compétences pour 33 élèves, je devrais arriver à 1617 lignes et je n'ai que 1536.
Votre démarche m'éclairera davantage même s'il fait jour sur l'île.
Merci d'avance.
Cordiales salutations
@+
Karsand
 

karsand

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonjour,

Je vous remercie de votre sympathique accueil.
Il fait jour à la Réunion. J'ai copié les données de ma feuille sur la feuille1. Les fusions se font automatiquement mais la dernière colonne et la dernière ligne n'apparaissent pas. Avec 49 compétences pour 33 élèves, je devrais arriver à 1617 lignes et je n'ai que 1536.
Votre démarche m'éclairera davantage même s'il fait jour sur l'île.
Merci d'avance.
Cordiales salutations
@+
Karsand

"Il n'y a guère que le sublime qui puisse nous aider dans l'ordinaire de la vie."
 

Fred0o

XLDnaute Barbatruc
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonjour karsand,

Dans la solution proposée, il supprimait volontairement la dernière ligne et la dernière colonne, pour ne pas avoir les totaux dans la liste. Il te faut donc modifier le code comme ceci :
VB:
Private Sub cmdListe_Click()
    Dim lgLig As Long
    Dim lgCol As Long
    Dim lgLigWS2 As Long
    
    ' Effacer le contenu de la feuille 2
    With Worksheets("Feuil2")
        If .Range("A65536").End(xlUp).Row > 1 Then
            .Range("A2:C" & .Range("A65536").End(xlUp).Row).ClearContents
        End If
    End With
    
    lgLigWS2 = 2
    
    With Worksheets("Feuil1")
        ' Boucle de la 2me à la dernière colonne de la ligne 1
        For lgCol = 2 To .Range("IV1").End(xlToLeft).Column
            ' Boucle de la 2me à la dernière ligne de la colonne A
            For lgLig = 2 To .Range("A65536").End(xlUp).Row
                Worksheets("Feuil2").Range("A" & lgLigWS2).Value = .Cells(lgLig, 1).Value
                Worksheets("Feuil2").Range("B" & lgLigWS2).Value = .Cells(1, lgCol).Value
                Worksheets("Feuil2").Range("C" & lgLigWS2).Value = .Cells(lgLig, lgCol).Value
                lgLigWS2 = lgLigWS2 + 1
            Next lgLig
        Next lgCol
    End With
End Sub

Pour le modifier, dans Feuil1, tu fais click-droit sur le nom de l'onglet, puis visualiser le code. Ensuite, tu remplaces le code existant par celui ci-dessus.

A+
 

karsand

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonjour karsand,

Dans la solution proposée, il supprimait volontairement la dernière ligne et la dernière colonne, pour ne pas avoir les totaux dans la liste. Il te faut donc modifier le code comme ceci :
VB:
Private Sub cmdListe_Click()
    Dim lgLig As Long
    Dim lgCol As Long
    Dim lgLigWS2 As Long
    
    ' Effacer le contenu de la feuille 2
    With Worksheets("Feuil2")
        If .Range("A65536").End(xlUp).Row > 1 Then
            .Range("A2:C" & .Range("A65536").End(xlUp).Row).ClearContents
        End If
    End With
    
    lgLigWS2 = 2
    
    With Worksheets("Feuil1")
        ' Boucle de la 2me à la dernière colonne de la ligne 1
        For lgCol = 2 To .Range("IV1").End(xlToLeft).Column
            ' Boucle de la 2me à la dernière ligne de la colonne A
            For lgLig = 2 To .Range("A65536").End(xlUp).Row
                Worksheets("Feuil2").Range("A" & lgLigWS2).Value = .Cells(lgLig, 1).Value
                Worksheets("Feuil2").Range("B" & lgLigWS2).Value = .Cells(1, lgCol).Value
                Worksheets("Feuil2").Range("C" & lgLigWS2).Value = .Cells(lgLig, lgCol).Value
                lgLigWS2 = lgLigWS2 + 1
            Next lgLig
        Next lgCol
    End With
End Sub

Pour le modifier, dans Feuil1, tu fais click-droit sur le nom de l'onglet, puis visualiser le code. Ensuite, tu remplaces le code existant par celui ci-dessus.

A+

Bonjour,
Je viens de tester la nouvelle macro. Elle marche à merveille. Merci beaucoup.

Cordialement

Karsand

"Le savoir est la lumière de l'esprit." Pierre Larousse
 

varchamb

XLDnaute Nouveau
Re : transformer un tableau simple en une liste à intégrer pour un tcd

Bonjour,
cette macro est formidable et va me faire économiser bien du temps.
Y-aurait-il moyen de lui ajouter un petit quelque chose pour la personnaliser à mon cas. Lorsqu'elle va chercher les valeurs (ce qui correspond à la ligne de code suivant) :
Code:
Worksheets("Feuil2").Range("C" & lgLigWS2).Value = .Cells(lgLig, lgCol).Value

j'aimerai qu'elle n'implémente pas les lignes dont la valeur = 0 ds la colonne C.

Un petit exemple (à partir des fichiers exemples précédents)

Merci d'avance
 

Pièces jointes

  • Gestion 2.xlsx
    10.2 KB · Affichages: 82

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 541
Membres
112 775
dernier inscrit
YLE