Sort Dynamique en VBA ?

  • Initiateur de la discussion Initiateur de la discussion ZeMygale
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

ZeMygale

Guest
Hello Everybody,

J'ai encore un soucis de tri mais peut-être n'est ce pas faisable...(ça marche avec DB2 et cobol ou pl1 (pour ceux qui connaissent😀) mais Vba....

Le but du jeu est de créer un tri dynamique en fonction du choix dans une combobox. Dans cette combox, on trouve une liste de tris de 1 à 5 critères; ex. : "Urgence;Asc|Num_Demande;Asc"

Le prog. récupère cetet valeur, la décortique et voici ce qui en ressort :
OrdreTri = "Key1:=Range("C4"), Order1:=xlAscending, Key2:=Range("A4"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal" ---> tout est créé en dynamique et jusqe là, ça fonctionne

Le hic (on y arrive), c'est que la ligne de code suivant ne fonctionne pas (erreur 1004) :
Selection.Sort OrdreTri
idem avec Selection.Sort (OrdreTri)
Par contre, si je colle l'ordre de tri en dur dans le prog, ça fonctionne...les coupables sont donc les "" de la string OrdreTri.

Il y a-t-il possibilité de passer cet ordre de tri dynamiquement ou dois-je me taper toutes les possibilités à la mimine ?😕🙁
d'autant qu'il y a 15 critères possibles et 2 sens pour chaque (Asc, Desc) avec possibilité de 1 à 5 critères par tri....ça commence à faire du monde😱

Merci pour vos solutions,

ZeMygale
 
Re : Sort Dynamique en VBA ?

Salut,

Peut etre ne suis je pas encore réveillé oiu completement a coté de la plaque, mais ton code de tri devrait etre de ce type (en supposant que la palge a trier soit A1:C40) :
Range("A1:C40").Sort Key1:=Range("C4"), Order1:=xlAscending, Key2:=Range("A4"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal

Donc plutot que de mettre les cellules C4 et A4 en clé de tri, pourquoi ne mets-tu pas la valeur des combo ?

Dis moi si je par dans le bon sens ou non 😕

@+
 
Re : Sort Dynamique en VBA ?

Bonjour,

Je ne comprends pas du tout ton problème :
Dans tous les cas tu es obligé de te
taper toutes les possibilités à la mimine
Il faut que tu les saisisse d'une façon ou d'une autre tes critères...Asc/Desc... En tout cas avec l'extrait de code que tu nous sers qui est totalement déconnecté de tout support.

Cordialement

Edit : Re Porcinet : bienvenue au club des "déplaqués"...
 
Re : Sort Dynamique en VBA ?

Bonjour Porcinet82, Spitnolan08, le Forum,

Apparemment, je n'ai pas été trop clair dans mon explication et vous m'en voyez désolé...

J'ai créé un Userform qui permet à l'utilisateur de choisir un tri existant ou de créer un tri suivant ses besoins (style le formulaire de "Données/Trier" d'Excel). Pour la création, il peut choisir 5 critères max parmi les 15 potentiels et choisir le sens (Asc/Desc) pour chaque critère.

Son tri est enregistré sous la forme : Urgence;Asc|Num_Demande;Asc

Losque l'utilisateur a choisi le tri qu'il voulait (dans la combobox), j'ai une routine qui découpe "Urgence;Asc|Num_Demande;Asc" en "Urgence;Asc" et "Num_Demande;Asc" puis génère automatiquement l'ordre de tri (je rapelle que je ne sais pas à l'avance quel tri va être sélectionné et qu'il peut y avoir de 1 à 5 critères).

Tout cela fonctionne.

J'ai donc OrdreTri = "Key1:=Range("C4"), Order1:=xlAscending, Key2:=Range("A4"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal".

Mon problème est simplement de faire accepter OrdreTri à Selection.Sort .
Selection.Sort OrdreTri => ne fonctionne pas
Selection.Sort (OrdreTri) => ne fonctionne pas

Un ordre totalement paramétré fonctionne avec les ancêtres (Pl1, Cobol, Db2) donc je me dis qu'il devrait fonctionner en Vba...utopie de débutant ?

Merci pour votre aide

ZeMygale
 
Re : Sort Dynamique en VBA ?

re,

Désolé, mais moi je ne comprends toujours rien 😕
Je ne vois pas pourquoi tu veux passer OrdreTri à Selection.Sort ? Si tu fais ca, le tri et forcement figé nan??? Ou alors mes neurones sont trop imbibés a cause de l'anniv d'hier soir pour que je comprenne 😎

@+
 
Re : Sort Dynamique en VBA ?

Encore moi 😀

Bon, j'ai fait subir une grosse cure d'amaigrissement au .xls et voici le résultat qui devrait vous permettre de mieux voir ce que je fais et ce qui coince.

Le blocage se situe dans la Sub Tri (original, non ?) au niveau du Selection.Sort.

S'il n'y a pas de solution pour faire avancer la bête tel quel, il faudra que j'envisage de limiter le paramétrage au range et order...

Dites moi ce que vous en pensez...
Merci,
ZeMygale

P.S.: je n'ai rien optimisé au niveau code donc pas d'inquiétude...
 

Pièces jointes

Re : Sort Dynamique en VBA ?

Bonsoir,

Je te propose de modifier ton code pour l'adapter à cette formulation qui fonctionne :
Code:
Sub trif()
FunctionTri Range("C2"), Range("A2"), Range("Q2"), xlAscending, xlAscending, xlDescending, xlTopToBottom
End Sub

Private Function FunctionTri(K1 As Range, K2 As Range, K3 As Range, O1 As XlSortOrder, O2 As XlSortOrder, O3 As XlSortOrder, Orient As XlSortOrientation)
Range("A2:T12").Select
Selection.Sort Key1:=K1, Order1:=O1, Key2:=K2, Order2:=O2, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=Orient, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
End Function
Cela t'amène à repenser ton appli mais te permet des tris dynamiques...

Cordialement
 
Re : Sort Dynamique en VBA ?

Bonjour Spitnolan08, Porcinet82, le Forum,

Merci pour la solution, je l'ai testée et elle fonctionne bien.

Par contre entre temps, après pls heures de grattage de tête😀, j'ai trouvé la solution suivante qui me paraît pas trop mal...

C'est très certainement perfectible mais cela fonctionne bien en l'état.

@+ et Merci,
ZeMygale
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

G
Réponses
2
Affichages
2 K
Gisamark
G
Réponses
2
Affichages
1 K
L
  • Question Question
Réponses
0
Affichages
1 K
L
L
  • Question Question
Réponses
3
Affichages
25 K
M
Réponses
1
Affichages
989
M
A
Réponses
10
Affichages
12 K
Anynoor
A
C
Réponses
2
Affichages
1 K
C
Retour