Bonjour,

Confronté à une situation à gérer rapidement, j'ai cherché sur le net et adapté le code ci-après qui me donne le résultat escompté :

Code vba : 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
Option Explicit
 
Sub Repartition()
Dim Dico, k, i
Dim C As Range
Dim n As Integer, LigneC As Integer
    Set Dico = CreateObject("Scripting.dictionary")
    Application.ScreenUpdating = False
    With Worksheets("DetailOperation")
        For Each C In Range("Tab_Operations[Ref]")
            If Not Dico.Exists(C.Value) Then Dico.Add C.Value, C.Offset(0, 1).Value
        Next C
        k = Dico.keys
        i = Dico.items
        For n = 0 To Dico.Count - 1
            LigneC = 5
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = k(n)
            For Each C In Range("Tab_Operations[Ref]")
                If C = k(n) Then
                    C.Offset(0, 1).Resize(, 7).Copy ActiveSheet.Range("A" & LigneC)
                    LigneC = LigneC + 1
                End If
            Next C
        Next n
    End With
End Sub

Ce code, appliqué sur le tableau structuré ci-dessous, fait une répartition et crée une feuille pour chaque REF tout en copiant les données correspondant et se trouvant sur la même ligne.

Nom : Capture.PNG
Affichages : 348
Taille : 179,3 Ko

Le résultat que j'obtiens pour chaque REF :

Nom : Capture1.PNG
Affichages : 351
Taille : 69,5 Ko

Ma question

Est-ce la meilleure façon de traiter ce genre de problème ? Surtout qu'il s'agit de tableau structuré avec ses propriétés ListObject et autres

Comment améliorer ce code de façon à faire apparaître également les entêtes de chaque colonne ?

Merci d'avance pour vos remarques.