Bonjour,
Mes connaissances en excel etant limitée, je sollicite votre aide afin de m'eclairer sur une maniere de proceder face à un probleme que je rencontre.
Dans une feuille intitulée "ANALYSE_WEEK" j'ai mes données presentées de la façon suivante (ces donnees viennent d'un copier coller d'un tableau croisé dynamique) :
Produit > colonne A
Taille >Colonne C
Note > Colonne X (les notes vont de A à E, quand il y a un - c'est que la note n'est pas suffisante pour etre prise en compte)
J'aimerais pouvoir conserver l'organisation de mes colonnes (entre col C et X il y a une colonne par N°de semaine, et des formules de calcul)
J'aimerais regrouper ces donnees dans une nouvelle feuille intitulée "SYNTHESE" presentée de la maniere suivante :
(en gros ce serait comme un tableau dynamique sauf qu'aux intersections Lignes/colonnes je souhaite afficher toutes les valeurs correspondantes au lieu d'un calcul)
J'ai trouvé un code mais je n'arrive pas à :
- Garder l'organisation des colonnes à traiter (je suis obligé de copier dans nouvelles feuilles et reorganiser afin d'avoir des colonnes contigues)
- ecrire dans une meme cellule toutes mes valeurs correspondant à l'intersection produit/note . Ca ne met que la valeur la plus grande correspodant à l'intersection par exemple, pour le tableau ci dessus ca met la valeur 300 à l'intersection porduit AAA note E alors que je souhaiterais voir afficher 220 , 300
Ci dessous le code que j'ai trouvé.
Pensez vous qu'il puisse etre adapté à mon pb ou faut il que je procede d'une autre maniere ?
Merci pour votre aide
Mes connaissances en excel etant limitée, je sollicite votre aide afin de m'eclairer sur une maniere de proceder face à un probleme que je rencontre.
Dans une feuille intitulée "ANALYSE_WEEK" j'ai mes données presentées de la façon suivante (ces donnees viennent d'un copier coller d'un tableau croisé dynamique) :
Produit > colonne A
Taille >Colonne C
Note > Colonne X (les notes vont de A à E, quand il y a un - c'est que la note n'est pas suffisante pour etre prise en compte)
J'aimerais pouvoir conserver l'organisation de mes colonnes (entre col C et X il y a une colonne par N°de semaine, et des formules de calcul)
Code:
Produit Taille Note
AAA 100 B
AAA 200 A
AAA 220 E
AAA 300 E
BBB 100 -
BBB 150 D
BBB 155 D
DDD 200 C
DDD 220 D
DDD 300 D
J'aimerais regrouper ces donnees dans une nouvelle feuille intitulée "SYNTHESE" presentée de la maniere suivante :
(en gros ce serait comme un tableau dynamique sauf qu'aux intersections Lignes/colonnes je souhaite afficher toutes les valeurs correspondantes au lieu d'un calcul)
Code:
Produit A B C D E
AAA 200 100 220,300
BBB 150,155
DDD 200 220,300
J'ai trouvé un code mais je n'arrive pas à :
- Garder l'organisation des colonnes à traiter (je suis obligé de copier dans nouvelles feuilles et reorganiser afin d'avoir des colonnes contigues)
- ecrire dans une meme cellule toutes mes valeurs correspondant à l'intersection produit/note . Ca ne met que la valeur la plus grande correspodant à l'intersection par exemple, pour le tableau ci dessus ca met la valeur 300 à l'intersection porduit AAA note E alors que je souhaiterais voir afficher 220 , 300
Ci dessous le code que j'ai trouvé.
Code:
Option Explicit
Sub Tableau()
' réorganise sous forme de tableau dans une nouvelle feuille des données fournies sur 3 colonnes :
' colonne A : nom de ligne
' Colonne B : nom de colonne
' Colonne C : data
' la feuille contenant les données doit etre active avant de lancer la macro
Dim data()
Dim col()
Dim lig()
Dim nblig As Long, i As Long, j As Long, k As Long
Dim sh As Worksheet
Set sh = ActiveSheet
' créer feuille Tableau (la supprimer avant si existante)
Application.DisplayAlerts = False
On Error GoTo creer
Sheets("Tableau").Activate
Sheets("Tableau").Delete
Application.DisplayAlerts = True
creer:
Sheets.Add.Name = "Tableau"
'
sh.Activate
' préparer tableau
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("AA1"), Unique:=True
col = Range("AA2:AA" & [AA65536].End(xlUp).Row)
Columns("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("AB1"), Unique:=True
lig = Range("AB2:AB" & [AB65536].End(xlUp).Row)
'coller noms col
Range([AA2], [AA2].End(xlDown)).Copy
Sheets("Tableau").Range("A2").PasteSpecial Paste:=xlPasteValues, Transpose:=False
'colle noms lig
Range([AB2], [AB2].End(xlDown)).Copy
Sheets("Tableau").Range("B1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
' supprimer colonnes temporaires
Columns("AA:AB").Delete Shift:=xlToLeft
' remplir tableau
data = Range("A2:C" & [A65536].End(xlUp).Row)
For i = 1 To UBound(data)
j = 1
While data(i, 1) <> col(j, 1)
j = j + 1
Wend
k = 1
While data(i, 2) <> lig(k, 1)
k = k + 1
Wend
Worksheets("Tableau").Cells(j + 1, k + 1).Value = data(i + 1, 3)
Next i
End Sub
Merci pour votre aide