Bouton tri automatique

Bonjour,

Je souhaiterais créer un bouton dans mon fichier Excel qui me permettrais d'obtenir mon rendu initial, c'est à dire, le détail des ICONE (col G) de chacune de mes LIAISON (col B) trié en fonction des POINT (col D) ou des PRIO (col E).

Le problème, c'est que je fais beaucoup de filtre, et défiltre, ce qui mélange mes lignes.

Pour remettre de l'ordre, je fais : un tri manuellement de A à Z de mes ICONE, puis de mes LIAISON, puis de mes POINT ou de mes PRIO.

Existe-t'il un moyen de créer deux boutons qui effectuerait ces tris dans cet ordre (ICONE, LIAISON et POINT) et (ICONE, LIAISON et PRIO).

Merci pour vos retours.

Cdlt,

Panthot

22classeur1.xlsx (12.48 Ko)

Bonjour,

A tester

56classeur1-3.xlsm (21.36 Ko)

Excel m'affiche le message d'erreur suivant :

Erreur d’exécution '438':

Propriété ou méthode non gérée par cet objet

Continuer Fin Déblogage Aide

Avec la case "Continuer" en grisé et "Déblogage" en surbrillance.

Quand je clic que "Déblogage" j'ai ça en jaune :

ActiveWorkbook.Worksheets("Feuil1 (2)").AutoFilter.Sort.SortFields.Add2 Key:= _

Range("G5:G" & Dl), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

(Désolé, je m'y connais vraiment peu en Excel).

Re,

Tu as un blocage avec mon classeur en PJ, car chez moi, il fonctionne

Comment je peux débloquer? J'ai essayer de l'enregistrer ou de l'adapté à mon classeur d'origine mais ça ne fonctionne toujours pas.

Ca bug aussi chez d'autres personnes ou c'est que chez moi ?

Merci.

Bonjour Panthot, M12,

J'ai le même souci avec excel 2010....

Cordialement,

Re,

Bizarre, la macro vient d'une macro enregistrée sur Excel Vers 2016

Bonjour, Salut à tous !

Méthode SortFields.Add2 ? Je ne connais pas sous 2010...

Proposition :

Private Sub cbTri_Click()
    Dim lib$, PP As Range
    lib = cbTri.Caption
    With Me.Range("A4:G40")
        If lib Like "*POINT" Then
            Set PP = .Cells(1, 4)
            lib = Replace(lib, "POINT", "PRIO")
        ElseIf lib Like "*PRIO" Then
            Set PP = .Cells(1, 5)
            lib = Replace(lib, "PRIO", "POINT")
        End If
        .Sort key1:=PP, order1:=xlAscending, key2:=.Cells(1, 2), order2:=xlAscending, _
         key3:=.Cells(1, 7), order3:=xlAscending, Header:=xlYes
    End With
    cbTri.Caption = lib
End Sub

Vois si cela correspond bien à ce que tu souhaites faire.

Le bouton est un ActiveX : code dans le module de la feuille.

Le bouton alterne les deux tris, le libellé est modifié pour indiquer quel tri sera effectué au clic suivant.

Cordialement.

Bonjour MFerrand,

Méthode SortFields.Add2 ? Je ne connais pas sous 2010...

Mais le demandeur est sous EXCEL 2016, où alors il inscrit n'importe quoi ???

Sur la version 2016, c'est la macro automatique qui sort

cette instruction

Merci MFerrand,

Alors pour info, c'est mon premier code VBA.

Pour adapter la code à mon tableau (qui fait 1500 ligne et nb de colonne jusqu'à DB), je rencontre un dernier soucis au moment de cliquer sur le bouton, il m'indique :

"Erreur d'exécution '1004':

La méthode Sort de la classe Range a échoué.

Et me met en jaune :

.Sort key1:=PP, order1:=xlAscending, key2:=.Cells(1, 2), order2:=xlAscending, _

key3:=.Cells(1, 7), order3:=xlAscending, Header:=xlYes

Que faire ?

Et pour info, Cells(1, 7) correspond à la cellule A7? G1? Rien à voir?

Et PP? Was ist das? Elle est peut être là mon erreur...

Merci de m'aider encore une fois, je sais que j'y suis presque !

Et M12, oui je suis bien en 2016, MFerrand devait donner l'info à xorsankukai.

Re,

Ça fonctionne dans ton classeur modèle. Il n'y a a-priori pas de raison que cela ne fonctionne plus en changeant de classeur si la structure est la même... mais si tu as des variations de taille ou de positionnement il faut adapter les adresses...

La ligne en erreur est celle qui effectue le tri, selon la méthode Range.Sort. L'erreur 1004 est une erreur Excel. C'est Excel qui refuse d'exécuter le tri, il reste à trouver pourquoi, ou sinon comment faire en sorte qu'il le fasse !

La macro cible ton tableau avec des références classiques : A4:G40.

Ceci pour l'adapter, il suffit de lui substituer les références du tableau réel... Pas de difficulté.

PP est une variable de type Range, on l'initialise avec la cellule qui constitue le critère de tri principal (variable selon le tri, les autres critères ne variant pas). C'est .Cells(1, 4) pour un tri par POINT, ou pour un tri par PRIO .Cells(1, 5), soit ligne 1 et colonne 4 ou 5 de la plage A4:G40 (car .Cells... réfère à cette plage et l'adressage est donc relatif à cette plage de référence) [il s'agit donc de la cellule D4 ou E4 selon le tri].

Les autres critères de tri sont définis par B4 et G4 [(1, 2) et (1 ,7)].

Cela peut être à adapter si les positions relatives des colonnes changent...

Je ne peux rien dire de plus sans voir le fichier...

@M12 : J'ai noté que le demandeur était sous Excel 2016. Cela aurait donc dû fonctionner pour lui... !?

Cordialement.

Bonjour,

Merci MFerrand, c'est très clair.

On continu en MP si tu veux bien (pour garder confidentiel mon document).

Cdlt,

Panthot

Rechercher des sujets similaires à "bouton tri automatique"