salut tout le monde,

J'ai créer un tableau avec une macro et je souhaite le mettre en forme.

Avec le code que j’ai, je génère un ensemble de clés à partir de la sheet1 que je mets dans la ligne 2 de la sheet 2, je souhaite ordonner ces clés par catégorie et mettre chaque clé dans un ordre particulier dans sa catégorie , l'orde étant précisé dans une autre sheet nommé Table où on attribue à chaque clé une catégorie et un numéro de colonne particulier.

J’insère avec une macro automatiquement les clès et je souhaite dans un deuxième temps classer ces clès à l’aide d’une autre macro, qu'est ce que je dois faire ?
Ci-joint un exemple de mon tableau (mon tableau en réalité est plus grand que cela et avec une centaine de clés) avec un onglet supplémentaire qui précise la mise en forme que je souhaite avoir.


Le code avec lequel j'insere les clés est le suivant :

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
Sub test12()
    Dim PlageSource As Range
    Dim FeuilleResultat As Worksheet
    Dim NumColonneResultat As Integer
    Dim NumLigneResultat As Integer
    Dim Cell As Range
    Dim Un As Collection
    Dim i As Long
    Dim ValeurX As String
 
    ' nommer tous les endroits sur lesquels on travaille
     Set PlageSource = Worksheets("sheet1").Range("Z:Z")
     Set FeuilleResultat = Worksheets("sheet2")
    NumLigneResultat = 2
 
    ' creer une liste sans doublons, d'après un tutorial de Silkyroad
    Set Un = New Collection
    On Error Resume Next
    'Boucle sur la plage de cellule
    'entre Z et X (-2), et le critère "Main"
    For Each Cell In PlageSource
         ValeurX = Cell.Offset(0, -2).Value
         If (Cell <> "" And ValeurX = "main") Then Un.Add Cell, CStr(Cell)
    Next Cell
    On Error GoTo 0
 
 
    'Boucle sur les éléments de la collection
    'les écrire dans feuille2, en changeant de colonne à chaque fois
    For i = 1 To Un.Count
        FeuilleResultat.Cells(NumLigneResultat, 3 + i) = CStr(Un(i).Value)
    Next i
 
    Set Un = Nothing
End Sub

Si mon problème n'est pas clair je suis prêt à fournir plus d'information.
Vos questions sont les bienvenue!!

A votre disposition