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

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.

Capture1.JPG
 

Pièces jointes

  • 1999.xlsm
    32.4 KB · Affichages: 13
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.

Paulle

XLDnaute Occasionnel
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

  • Trie sur Col 1999 V2.xlsm
    54.2 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
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:

Dranreb

XLDnaute Barbatruc
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
 

Dranreb

XLDnaute Barbatruc
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 836
dernier inscrit
Ali Belaachet