Trier des cellules Excel par ordre alphabetique

Signaler
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008
-
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Bonjour !!

Existe-t'il un code ou un sujet qui parle déjà de cela, parce que je n'ai rien trouvé en faisant les recherches, si ce n'est de trier des feuilles excel, ce qui ne me sert à rien !

En fait, il faudrait que je puisse trier une zone de selection du style (B2:J32) sous Excel en prenant comme triage l'ordre alphabétique de la colonne B en premier, et colonne C en deuxième etc ...

Merci de votre aide ..
A voir également:

9 réponses

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Salut,
Rien de plus simple, tu créer une macro, tu fais ta sélection + ton clic sur l'icone de trie par ordre alphabétique et hop c'est magique tu as ton code tout fait à savoir:

Range("B2:B32").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Et ainsi de suite pour la colonne C,D....J
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008

Re-moi

Voici le code que la macro m'a donnée. J'ai placé "Feuille4" devant Range et Selection puisque la macro se fait sur la feuille active, sachant donc que Feuille4 est bien définie.

Feuille4.Range("A2:W200").Select
Feuille4.Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal

"Erreur 1004
La méthode Select de la classe Range a échoué" donc erreur dés la première ligne.

Est-ce ma feuille4 qui n'est pas reconnue correctement ? ou vraiment VB6 qui ne gère pas le Range de cette facon ?

Une idée ??

Merci encore[ ]
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Tu aurais du préciser dès le début que tu manipuler un objet excel avec vb6.

Voici un exemple (non testé) qui te trie par ordre alphabétique dans la "feuille4" une sélection de B2 à B32

----------------------------------------------
Dim w As Workbook
Set w = Workbooks.Open("c:\Classeur1.xls")

Dim x As Worksheet
Set x = w.Sheets("Feuil4")

x.Range("B2:B32").Sort Key1:=x.Range("B2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal


w.Save
w.Close
----------------------------------------------
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008

Et voui, encore moi !!

Alors, dans le principe, cela marche bien, mais le problème qui se pose à moi, est que, dans un meme doc Xls, il me faut trier 3 onglets différents et ce avec 3 command différentes, donc pas au même moment, mais seulement à la demande.

Et apparement, lorsque je fais un Range.select, il ne se remet pas à Zéro une fois le ".sort" effectué.

Donc, lorsque je clique sur un autre bouton, il me fait encore :

"Erreur 1004
La méthode Select de la classe Range a échoué"

mon code, où seulement la "FeuilleX" change :

Private sub Command1_Click()
feuille_load 'là un module où je charge sans pb le worbook et worksheet, cela marche nickle pour d'autre partie du programme

Feuille6.Range("B2:W200").Select <== ERREUR et donc fin
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("C1"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
Feuille6.Range("").Select <== ERREUR si le .sort a bien marché ..


fin_feuille 'là, un module où je sauvegarde, et ferme l'appli
End Sub

Je ne comprends plus trop..
En un mot, le .select est-il gardé en mémoire, et si oui, comment le réinitialiser ?

Merci encore ...
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008

PS : j'ai remarqué que si je vais sur le fichier XLS concerné, et que je selectionne les Cellules ("B2:W200") et "Zone d'impression/Définir", le bouton correspondant à cet ongler marche bien, mais, le bouton correspondant à un autre onglet me fait l'erreur si dessus.

Et même, da,s le code, lorsque je prends les devants en faisant
Feuille4.PageSetup.PrintArea = "B2:W200"
Et bien, malgré tout, il me fait une erreur à la ligne suivante, c'est à dire :
Feuille4.Range("B2:W200").Select

Voila, pour l'info.
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Je ne sais pas si tu lis les réponses que l'ont te donnes....tu ne devrais plus avoir de problèmes...
Pourrais-tu une fois pour toute affirmer si tu travails en vba excel ou si tu es dans vb6 ?
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008

yop !

Ben d'après le msg 3 et ta réponse 4, je pensais que tu avais bien compris que c'etait du VB6 ..

Alors, la raison pour laquelle j'ai essayé de passer par autre chose est la suivante :
Comme expliqué précédemment, j'ai plusieurs onglets pour lequels je veux trier, j'ai donc fais ceci en suivant ton exemple qui marche bien avec 1 onglet à trier :

Dim w As Workbook
Set w = Workbooks.Open("c:\centres.xls")

Dim x As Worksheet
Set x = w.Sheets("registre")
Set z = w.Sheets("infos")

x.Range("B2:B32").Sort Key1:=x.Range("B2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

z.Range("B2:B32").Sort Key1:=x.Range("B2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal


w.Save
w.Close
Et là, à la 2ème ligne z.range .........
"Erreur 1004
Reférence de tri non valide, vérifiez qu'elle se trouve bien parmi les données à trier, et que la zone Trier par n'est pas identique ou vide"

Même lorsque je divise le code en 2 boutons distincts, erreur similaire. D'où mon incompréhension ...

Merci bien ..
Messages postés
93
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
30 septembre 2008

Ben voila, j'ai finalement compris où etait mon erreur :

z.Range("B2:B32").Sort Key1:=X.Range("B2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

Et donc, bien sur, ca posait un pb ... Dsl pour le dérangement

Stef
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Oui l'erreur du z était flagrante
Bonne continuation ++