Macro : ranger par ordre alphabétique

[Résolu/Fermé]
Signaler
-
 lynkyn -
Bonjour à vous !

J'ai un tableau avec 6 colonnes et x lignes.
J'ai voulu créer une macro avec un bouton commande pour ranger ma 1ère colonne par ordre alphabétique mais j'ai un souci.
Je voudrais que lorsque ma 1ère colonne est ranger par ordre alphabétique, les cellules d'une même ligne se range par ordre alphabétique, par rapport à la 1ère colonne.

J'espère que vous comprenez. Merci d'avance.





Excel 97
A voir également:

16 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

Cette macro te trie en ascendant sur la colonne A puis pour chaque ligne de la colonne B à la colonne F :

Public Sub tri()
ActiveSheet.Cells(1, 1).Resize(ActiveSheet.UsedRange.Rows.Count, 6).Sort _
    Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
ActiveSheet.Cells(1, 2).Resize(ActiveSheet.UsedRange.Rows.Count, 5).Sort _
    Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
End Sub
Désolé mais cela ne marche pas. La première partie du texte se met en jaune et dit que ça ne peut pas marcher en "mode arrêt" ou quelque chose comme ça.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

Si tu pouvais nous mettre un exemple de classeur, sans données identifiables et privées, mais avec la structure de tes données sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile.
Je ne sais pas comment générer un tableur sur le topic désolé...

En gros prenons un tableau simple :
dans chaque colonneA,B,C,D ; Nom, Prénom, Age, Ville (cellules avec une liste de choix de 3 réponses)
Je souhaite que lorque l'on trie la colonne A (le Nom), le Prénom,l'Age et la Ville,se trie sur la même ligne que le Nom.

Exemple :

Paul Martin 20 Paris
Henri Dupon 54 Marseille
Jean Bonneau 42 Le Mans

devienne :

Henri Dupon 54 Marseille
Jean Bonneau 42 Le Mans
Paul Martin 20 Paris

Ceci se faisant avec une macro lier a un bouton commande.
Ceci pose un souci si dans la colonnes D (Ville) les cellules sont toutes avec une liste de choix ?

Merci d'avance
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

chaque colonneA,B,C,D ; Nom, Prénom, Age, Ville
devienne :

Henri Dupon 54 Marseille


Tu ne penses pas que tu es un tant soit peu incohérent dans ton exemple

Je souhaite que lorque l'on trie la colonne A (le Nom), le Prénom,l'Age et la Ville,se trie sur la même ligne que le Nom

C'est tout de même la règle de base du tri excel : je ne vois pas où est le problème ?

Donnes nous ta macro et on la corrigera.
J'ai trouvé le problème.
Apparamment le tri par ordre alphabétique ne peut se faire quau maximum sur 4 colonnes. (sur mon excel 2000).
Or, j'ai 6 colonnes...

Comment puis-je faire alors ?

Merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

le tri par ordre alphabétique ne peut se faire quau maximum sur 4 colonnes

Ceci n'est pas exact. Tu n'as que 3 critères de tri mais cela ne t'empêche pas de trier sur 20 colonnes si tu veux.

Si tu pouvais nous mettre un exemple de classeur, sans données identifiables et privées, mais avec la structure de tes données sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile de te corriger ta macro.
Voici le lien : http://www.cijoint.fr/cjlink.php?file=cj201012/cijf29pggH.xls

Merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

La macro ne fonctionnait pas car tu as des cellules fusionnées en ligne titre qui sont incompatibles avec le tri.

Voici ta macro modifiée en rajoutant la colonne G car sinon les appréciations ne seraient pas sur la bonne ligne :

ActiveSheet.Cells(2, 1).Resize(ActiveSheet.UsedRange.Rows.Count, 7).Sort _
    Key1:=Range("D2"), Order1:=xlAscending, _
    Key2:=Range("E2"), Order1:=xlAscending, _
    Key3:=Range("F2"), Order1:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
ActiveSheet.Cells(2, 1).Resize(ActiveSheet.UsedRange.Rows.Count, 7).Sort _
    Key1:=Range("A2"), Order1:=xlAscending, _
    Key2:=Range("B2"), Order1:=xlAscending, _
    Key3:=Range("C2"), Order1:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
J'au toujours un souci, la première partie du texte se met en jaune... il y aurait un problème...?

Merci
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

Quel est le libellé de l'erreur ?
bjr,

le message est :

"erreur d'execution '1004'
erreur definie par l'application ou par l'objet
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

Essaies avec ton classeur :

http://www.cijoint.fr/cjlink.php?file=cj201012/cijejamlGA.xls
Avec mon classeur du lien, j'ai le même problème, même erreur.
pour ma part, je suis avec excel 2000 et vba version 6.0.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 537
bonjour

Effectivement ton ancienne version n'accepte pas tous les paramètres, alors essaies de mettre seulement l'indispensable ordre de tri :

ActiveSheet.Cells(2, 1).Resize(ActiveSheet.UsedRange.Rows.Count, 7).Sort _
    Key1:=Range("D2"), Order1:=xlAscending, _
    Key2:=Range("E2"), Order1:=xlAscending, _
    Key3:=Range("F2"), Order1:=xlAscending 
ActiveSheet.Cells(2, 1).Resize(ActiveSheet.UsedRange.Rows.Count, 7).Sort _
    Key1:=Range("A2"), Order1:=xlAscending, _
    Key2:=Range("B2"), Order1:=xlAscending, _
    Key3:=Range("C2"), Order1:=xlAscending 
Merci !!!

Ca marche !