Bonjour,

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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Produit    A           B           C         D              E
AAA       200       100                                   220 , 300
BBB                                           150,155
DDD                                200      220,300
J'ai trouvé sur code mais je n'arrive pas à :
- Garder l'organisation des colonnes (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

Voici le code trouvé si ça peut aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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