Trier avec un Userform
Bonsoir Forum,
Mon problème est que je désire trier plusieurs tableaux mais que les utilisateurs puisse choisir les thèmes qui désire trier et dans quel ordre, comme la fonction de trie dans excel, mais cette fonction ne permet pas de trier plusieurs tableaux à la fois c'est pour cela que je me suis retourné vers VBA. Mais mes compétences étant extrêmement limité en VBA j'ai essayer quelque chose avec un userform, je suis arrivé partiellement à résourdre mon problème, c'est pour cela que je me tourne vers vous.
Mon problème est que je veux trier selon 3 thèmes, mais lorsque l'un est vide ma procédure plante (1er problème), ensuite pour chaque thème je voudrais que l'utilisateur puisse choisir entre croissant et decroissant. (2e problème)
Je vous envoie mon fichier, en se moment j'ai deux boutons, mais éventuellement j'aimerais que tous ce fasse en une seule procédure.
Merci
-- Mar Mai 18, 2010 10:39 pm --
Ok avec quelques essaies, j'ai réussi à régler mon problème 1, mais il me reste qu'à résoudre le problème d'ordre, je veux procéder de la même façon que mes thême, mais ça ne marche pas..
Voici mon nouveau code
Private Sub CommandButton1_Click()
Dim Trie1 As String
Dim Trie2 As String
Dim Trie3 As String
Dim critere1 As String
Dim critere2 As Variant
Dim critere3 As Variant
Trie1 = ComboBox1.Text
Trie2 = ComboBox2.Text
Trie3 = ComboBox3.Text
Order1 = ComboBox4.Text
Order2 = ComboBox5.Text
Order3 = ComboBox6.Text
Cells(2, 14) = Trie1
Cells(3, 14) = Trie2
Cells(4, 14) = Trie3
Cells(2, 15) = Order1
Cells(3, 15) = Order2
Cells(4, 15) = Order3
UserForm1.Hide
critere1 = Range("I2").Value
critere2 = Range("I3").Value
critere3 = Range("I4").Value
'JE VOUDRAIS FAIRE COMME MES CRITÈRES, LES INSÉRER DANS LE TRIE
If critere2 = "" And critere3 = "" Then
Range("A1:F41").Select
Selection.Sort Key1:=Range(critere1), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End If
If critere3 = "" And critere2 <> "" Then
Range("A1:F41").Select
Selection.Sort Key1:=Range(critere1), Order1:=xlAscending, Key2:=Range(critere2) _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End If
If Not critere3 = "" Then
Range("A1:F41").Select
Selection.Sort Key1:=Range(critere1), Order1:=xlAscending, Key2:=Range(critere2) _
, Order2:=xlAscending, Key3:=Range(critere3), Order3:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End If
End Sub
Bonjour,
Regarde ci-joint le fichier.
J'ai modifié la façon de sélectionner le mode de tri (Ascendant, Descendant)
Les Combobox sont alimentés par une plage dynamique (Si tu rajoutes des valeurs dans la colonne K, ils seront automatiquement rentrés dans les Combo...) (Regarde dans Insertion/Nom/Définir, et la plage "Tri")
Pour plusieurs tableaux, si tu n'y arrives pas, reviens
Bonne journée
C'est bon ça fonctionne merci!!!!!