Triage personnalisé selon liste sur feuille Excel

Bonjour à tous!

Je fais appel à vos compétence pour un petit soucis. Tout est dit dans le titre. J'ai donc fait une macro en écrivant une liste personnalisée mais j'ai adapté le code pour que la macro aille chercher les valeurs de la liste sur une feuille excel mais sans succès..

Voici le code de la macro sans modif':

Sub Macro4()

'Macro pour trier le tableau Groupe

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _

SortFields.Clear

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _

SortFields.Add Key:=Range("Tableau2[Groupe]"), SortOn:=xlSortOnValues, _

Order:=xlAscending, CustomOrder:="H1,H2,H3,H4,H5,H6,H7,H8,H9,B", _

DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub

Voici le code modifié (partie rouge):

Sub Macro4()

'Macro pour trier le tableau Groupe

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _

SortFields.Clear

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _

SortFields.Add Key:=Range("Tableau2[Groupe]"), SortOn:=xlSortOnValues, _

Order:=xlAscending, CustomOrder:=Sheets("Nomenclatures").Range("B2:B11")

DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub

Merci d'avance pour votre aide.

bonsoir,

essaie ceci ...

Sub Macro4()
'Macro pour trier le tableau Groupe
    ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _
        SortFields.Add Key:=Range("Tableau2[Groupe]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal, _
        CustomOrder:=Join(Application.Transpose(Sheets("Nomenclature").Range("B2:B11")), ",")
    With ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Merci bcp pour ta réponse.

Je viens d'essayer le code mais il bloque arrivé à cette ligne:

        ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _
        SortFields.Add Key:=Range("Tableau2[Groupe]"), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal, _
        CustomOrder:=Join(Application.Transpose(Sheets("Nomenclature").Range("B2:B11")), ",")

Bonjour,

Je suis votre discussion avec beaucoup d'intérêt et je trouve dommage qu'il n'y ait pas un fichier exemple, afin de pouvoir concrétiser tout cela

Cordialement.

chez moi cela fonctionne. voir fichier

27customorder.xlsm (16.82 Ko)

J'ai eu un message d'erreur, étonnant. Je vais essayer de voir ça mais à la demande d'Yvouille, voici le fichier excel.

Il faut faire Imprimer fiche - Sélectionner Groupe - Editer.

Sub Macro4()

il manque un s à nomenclature dans ton code, ton onglet se nomme "nomenclatures"

'Macro pour trier le tableau Groupe

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _

SortFields.Clear

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort. _

SortFields.Add Key:=Range("Tableau2[Groupe]"), SortOn:=xlSortOnValues, _

Order:=xlAscending, _

CustomOrder:=Join(Application.Transpose(Sheets("Nomenclature").Range("B2:B11")), ","), _

DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableau2").Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub

Bien vu! Merci Beaucoup!!

Gschmutz a écrit :

Bien vu! Merci Beaucoup!!

plutôt "mal vu", car dans ton code, il y avait bien un "s", c'est dans la réponse que je t'ai fournie que je l'ai oublié.

Entre deux de vos messages, merci d'avoir accéder à ma demande

Bonnes salutations.

Bonjour,

Je reviens vers vous car finalement j'ai opté pour un autre type de triage: au lieu d'utiliser un Range, je voudrais trier mon tableau selon une seule valeur contenu dans une cellule. J'ai repris le code que vous m'aviez donné en changeant la partie avec le Range par un Cells mais sans succès. Est il possible de m'aider svp?

Voici le code que j'ai sachant que d=3 et "c" a une valeur conditionnelle allant de 2 à 11. Mon but final est de sélectionner le tableau (après tri), copier et coller dans un autre tableau ayant le même nom que le critère de sélection d'où le "f" à la fin du code:

Do While Sheets("Nomenclature").Cells(c, d) <> ""

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableaugroupes").Sort. _

SortFields.Clear

ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableaugroupes").Sort. _

SortFields.Add Key:=Range("Tableau2[Groupe]"), SortOn:=xlSortOnValues, _

Order:=xlAscending, DataOption:=xlSortNormal, _

CustomOrder:=Join(Application.Transpose(Sheets("Nomenclatures").Cells(c, d)), ",")

With ActiveWorkbook.Worksheets("Listing_Groupes").ListObjects("Tableaugroupes").Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

f = Sheets("Nomenclatures").Cells(c, d).Value

Sheets("Listing_Groupes").Range("Tableaugroupes").Select

Selection.Copy

Sheets("Fiche_Groupes").Range(f).Select

ActiveSheet.Paste

d = d + 1

Loop

Bonsoir,

qu'y a-t-il dans cette cellule (ces cellules ?) possible de mettre un fichier exemple ?

Rechercher des sujets similaires à "triage personnalise liste feuille"