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.
Le résultat que j'obtiens pour chaque REF :
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.
Partager