Spécifier une expression comme clé (Key1) de tri.

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

louhibi

XLDnaute Nouveau
Bonjour tout le monde.

Étant débutant dans la programmation Excel-VBA, mais possédant d'assez bonnes bases dans d'autres langages, je n'arrive pas à trouver une solution simple au problème suivant:

Je travaille sur 5 colonnes (A:E) d'une feuille Excel. J'ai généré une macro de tri sur les colonnes "A" et "C":

Sub Trier()
Columns("A:E").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
End Sub

La colonne A contient des données de la forme "Prénom, Nom".

Mon problème:
Je voudrais remplacer dans la commande Sort le paramètre 'Key1:=Range("A2")' par 'Key1:=expression(Range("A2"))' afin d'obtenir une sélection triée sur les données de la forme "Nom Prénom".

Je peux formuler cette expression sans problèmes en utilisant les fonctions InStr(), Left() et Mid().

Existe-t-il une solution simple à ce problème?

J'utilise Windows XP Pro (SP2) et Office XP avec FrontPage (2002).

Je vous remercie.

louhibi.
 
Dernière édition:
Re : Spécifier une expression comme clé (Key1) de tri.

Bonjour,

Merci d'avoir pris le temps de me répondre.

Cette solution ne résout pas mon problème. Ce que je voudrais c'est la chose suivante:

Remplacer dans la commande Sort le paramètre Key1:=Range("A2") par une expression.

Exemple: Key1:=Mid(Range("A2"),InStr(Range("A2"),",")+2)

Merci encore pour vos réponses.

louhibi
 
Re : Spécifier une expression comme clé (Key1) de tri.

Bonjour,
Merci d'avoir pris le temps de me répondre.
Cette réponse ne résout pas mon problème qui consiste à remplacer, dans la commande Sort, Key1:=Range("A2") par Key1:=expression(Range("A2"))

Exemple: Key1:=Mid(Range("A2"),InStr(Range("A2"),",")+2)

Merci encore pour vos réponses.

louhibi
 
Re : Spécifier une expression comme clé (Key1) de tri.

Bonjour,

Excusez-moi d'avoir envoyé mon message en double et même en triple car lorsque j'envoie la réponse mon écran reste figé (tout blanc) qui me donne l'impression que rien n'a été envoyé.

Meci de votre compréhension.

louhibi
 
Re : Spécifier une expression comme clé (Key1) de tri.

Bonjour tout le monde,

La 2ème réponse que vous me proposez me réconforte un peu car, avant d'envoyer mon message sur le forum, j'avais déjà trouvé une solution similaire qui se résume ainsi:

. Parcourir toutes les lignes de mes données (boucle For) en transformant les données de la colonne "A" dans la colonne "H"
. Trier mes données sur la colonne "H"
.Supprimer la colonne "H"

Je pensais qu'on pouvais obtenir le même résultat, de façon plus simple, en utilisant seulement la commande Sort.

Merci beaucoup pour toutes vos réponses pleines d'enseignement.

louhibi
 
- 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

Discussions similaires

Réponses
4
Affichages
1 K
Réponses
0
Affichages
1 K
Retour