Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Résolu - Selection et tri par macro.

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

Paulle

XLDnaute Occasionnel
Bonsoir,

J'ai réussi à faire une macro pour la sélection qui correspond à ce que je veux à condition de ne pas avoir de cellules vides dans l'avant dernière colonne, ici AJ.

Ensuite je voudrai que le tri se fasse sur l'avant dernière colonne de la sélection Cas 1 ici AI.

Merci pour votre aide.

Ce que je fais actuellement.

 

Pièces jointes

Solution
Oh, triez les ligne entières alors :
VB:
.SetRange ActiveSheet.Rows(5).Resize(ActiveSheet.[A1000000].End(xlUp).Row - 4)
Votre exemple n'allait que jusqu'a la colonne AW, les 2 1ère colonnes des trois derniers triplets étant vides.
Ou sinon mettez tout ça sous forme de tableau et triez celui-ci.
Bonjour Phil69970,
Merci pour ta réponse.
Je n'ai pas été très clair dans mes explications.
Je voudrai qu'à chaque fois que je rajoute des valeurs, le tri se fasse sur l'avant dernière colonne de la sélection.
Là la colonne AL.
 

Pièces jointes

Bonjour.
Et en spécifiant Key:=Selection.Columns(Selection.Columns.Count - 1)
et d'ailleurs aussi .SetRange Selection ça n'irait pas ?
Édition: Les instruction du début sont à supprimer bien entendu: on repart de la sélection laissée par la Sub SelectionPlage.
Remarque: Si tout devait être fait dans une seule macro on pourrait éviter de sélectionner quoi que ce soit et utiliser à la place des variables As Range.
 
Dernière édition:
Je viens de faire ça :
VB:
Sub TrierAvDCol()
   With ActiveSheet.Sort
      .SortFields.Clear
      .SortFields.Add Key:=ActiveSheet.[XFD2].End(xlToLeft)(3, 1), _
         SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
      .SetRange ActiveSheet.[A5:AW5].Resize(ActiveSheet.[A1000000].End(xlUp).Row - 4)
      .Header = xlNo: .MatchCase = False: .Orientation = xlTopToBottom: .SortMethod = xlPinYin
      .Apply
      End With
   End Sub
 
Oh, triez les ligne entières alors :
VB:
.SetRange ActiveSheet.Rows(5).Resize(ActiveSheet.[A1000000].End(xlUp).Row - 4)
Votre exemple n'allait que jusqu'a la colonne AW, les 2 1ère colonnes des trois derniers triplets étant vides.
Ou sinon mettez tout ça sous forme de tableau et triez celui-ci.
 
- 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
8
Affichages
468
Réponses
9
Affichages
555
  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
347
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…