Codage pour trier vba

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
 
R

Robert

Guest
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
 
L

laclac

Guest
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 ;)
 
R

Robert

Guest
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
 
L

laclac

Guest
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
 

Discussions similaires

Réponses
12
Affichages
552

Statistiques des forums

Discussions
312 972
Messages
2 094 055
Membres
105 930
dernier inscrit
Manoa