Codage pour trier vba

  • Initiateur de la discussion Initiateur de la discussion laclac
  • 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 !

L

laclac

Guest
Bonjour,

je voulais faire une fenetre pour trier mon tableau comme celle par défaut .
Mais juste en codant pour la combobox 2 et 3, mon code deviens énorme..
Il y a pas un moyen de raccourci tout cela ?


Dim F1 as WorkSheet, Cels as Range
Set F1=Sheets("feuil1")
Set Cels=F1.Range("A2:Z150")

If CBoxTrie2.Text <> "" Then

If CBoxTrie3.Text <> "" Then

If BCTrie2 = True Then
If BCTrie3 = True Then
'Si BCTrie2 est xlAscending et BCTrie3 aussi
Cels.Sort F1Range(NEtiquette(CBoxTrie1.Text),xlAscending,F1.Range _
(CBoxTrie2.Text), xlAscending, F1.Range(CBoxTrie3.text), xlAscending
Else
'Si BCTrie2 est xlAscending mais pas BCTrie3
Cels.Sort F1Range(NEtiquette(CBoxTrie1.Text),xlAscending,F1.Range _
(CBoxTrie2.Text), xlAscending, F1.Range(CBoxTrie3.text), xlDescending
End If
Else
'Si BCTrie2 est xlDescending mais pas BCTrie3
If BCTrie3 = True Then
Cels.Sort F1Range(NEtiquette(CBoxTrie1.Text),xlAscending,F1.Range _
(CBoxTrie2.Text), xlDescending, F1.Range(CBoxTrie3.text), xlAscending
Else
'Si BCTrie2 est xlDescending et BCTrie3 aussi
Cels.Sort F1Range(NEtiquette(CBoxTrie1.Text),xlAscending,F1.Range _
(CBoxTrie2.Text), xlDescending, F1.Range(CBoxTrie3.text), xlDescending
End If
End If
Else
'Si CBoxTrie2 est rempli mais CBoxTrie3 est vide
If CBoxTrie2.Text <> "" Then
If BCTrie2 = True Then
Cels.Sort F1Range(NEtiquette(CBoxTrie1.Text),xlAscending,F1.Range _
(CBoxTrie2.Text), xlAscending
Else
Cels.Sort F1Range(NEtiquette(CBoxTrie1.Text),xlAscending,F1.Range _
(CBoxTrie2.Text), xlDescending
End If
End If
End If
 
Salut Laclac, salut le forum,

Désolé mais je n'ai pas de réponse à cette question. Par contre j'ai juste une remarque à te faire. Quand quelqu'un prend le temps de t'aider ne trouves-tu pas normal de prendre à ton tour un peu de temps pour le remercier ? voir <http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=136159&t=136159>

Ça ne coûte pas grand chose et surtout ça donne envie de recommencer.

À plus,

Robert
 
Salut Robert,

Et bien, tu as tout à fais raison et je m'en excuse sincérement !
C'est vrai que si je n'ai pas pris soin de te répondre c'est que je fais pas la gestion d'erreur tout de suite, alors bien que ton message me sera très utile après, je l'ai mis un peu en attente. Mais ce n'est pas excusable !
Donc je te remercie pour ta réponse mais également pour m'avoir rappeler à l'ordre ! Il est vrai qu'il ne faudrai pas déhumaniser un si bon forum.

Alors Robert, merci encore, passe de très bonne faite et à bientot !
En espèrant qu'un jour j'aurais l'occasion de t'aider à mon tour 😉
 
Bonsoir Laclac, bonsoir le forum,

Je m'en veux un peu de ma petite leçon de morale. C'est pas trop dans mes habitudes mais j'étais énervé car cela faisait plusieurs fois que cela arrivait.
Ton petit mot m'a fait comprendre que ce n'était qu'un oubli et nullement un manque d'attention. Désolé pour le ton, en principe je fais plutôt dans la déconade...

Oublions ce malentendu... Je te souhaite une très bonne et heureuse année 2005.

À plus,

Robert
 
Il y a vraiment pas de problème Robert !!
D'autant que j'ai trouvé une solution à mon problème 😉

La voici pour ci quelqu'un à le meme problème que moi car ca doit arriver :
(il fallait définir des variables XlSortOrder, pour permettre de faire une formule de trie générale)



Dim Vtrie1 As XlSortOrder
Dim Vtrie2 As XlSortOrder
Dim Vtrie3 As XlSortOrder

If CBoxTrie1.Text <> "" Then
Ptrie1 = Range(CBoxTrie1.Text)
If BCTrie1 = True Then
Vtrie1 = xlAscending
Else
Vtrie1 = xlDescending
End If

If CBoxTrie2.Text <> "" Then
Ptrie2 = Range(CBoxTrie2.Text)
If BCTrie2 = True Then
Vtrie2 = xlAscending
Else
Vtrie2 = xlDescending
End If

If CBoxTrie3.Text <> "" Then
Ptrie3 = Range(CBoxTrie3.Text )
If BCTrie3 = True Then
Vtrie3 = xlAscending
Else
Vtrie3 = xlDescending
End If
End If
End If
End If
Sheets("feuil1").Range("A2:Z150").Sort Ptrie1, Vtrie1, Ptrie2, , Vtrie2, Ptrie3, Vtrie3

Alors merci encore Encore 😉
et mes meilleurs voeux 2005
 
- 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

Réponses
4
Affichages
586
Réponses
4
Affichages
681
Réponses
9
Affichages
409
Retour