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).
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.
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
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
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."
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.
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.
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) :