Microsoft 365 tri cellules

MICHAEL

XLDnaute Occasionnel
Bonjour,
lorsque dans une colonne composée de chiffres et de lettes j'applique un classement alphabetique les chiffres se situent
en haut de la colonne.
je souhaiterais que ceux ci se trouvent en bas et que l'ordre aphabetique des lettres soit en haut en respectant a,b,c,.....
merci de votre aide
 

Gégé-45550

XLDnaute Accro
dans ton commentaire j'en vois que deux.
Allez, dernière tentative, après j'abandonne :
TooFatBoy à dit:
Meuh nan ! Y va revenir et enfin nous donner un exemple avec une liste "avant" et la liste "après". 😉
Donc, en bon français, si vous nous donniez une liste "avant", par exemple :
7
5
d
1
a
h
b
puis une liste "après" traitement qui correspond au résultat que vous attendez, par exemple :
a
b
d
h
ou
a
b
d
h
1
5
7
ou
a
b
d
h
7
5
1
ou autre (au point où on en est) !
... on pourrait peut-être vous aider et, SURTOUT, ne pas perdre notre temps dans un multi-dialogue de sourds (enfin, surtout vous!).
C'est pour ça qu'on vous demande un fichier pour expliciter les attendus ou, au moins, une demande CLAIRE !!!
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

@MICHAEL adaptera à son classeur exemple non fourni😜.

  • Cliquer sur le bouton "Initialisation" pour remplir le tableau de valeurs aléatoires
  • Double-cliquer sur un en-tête de colonne pour trier selon cette colonne

Le code est dans le module de la feuille.
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Not Intersect(Target, Range("a1").ListObject.HeaderRowRange) Is Nothing Then
      Cancel = True
      trierLettreChiffre Range("a1").ListObject.ListColumns(Target.Value).Index
   End If
End Sub

Sub trierLettreChiffre(ByVal xn As Long)
Dim lsto As ListObject, nNum&, nAlpha&, tNum
   Set lsto = Range("a1").ListObject
   If Me.FilterMode Then Me.ShowAllData
   lsto.Range.Sort key1:=lsto.ListColumns(xn).Range(1, 1), order1:=xlAscending, Header:=xlYes, MatchCase:=False
   nNum = Application.Count(lsto.ListColumns(xn).Range): nAlpha = lsto.ListRows.Count - nNum
   tNum = lsto.DataBodyRange.Resize(nNum)
   lsto.DataBodyRange(1, 1).Resize(nAlpha, lsto.ListColumns.Count) = lsto.DataBodyRange.Offset(nNum).Resize(nAlpha).Value
   lsto.DataBodyRange.Offset(nAlpha).Resize(nNum) = tNum
End Sub
 

Pièces jointes

  • MICHAEL- tri alpha puis nbre- v1.xlsm
    24.5 KB · Affichages: 3

MICHAEL

XLDnaute Occasionnel
Allez, dernière tentative, après j'abandonne :

Donc, en bon français, si vous nous donniez une liste "avant", par exemple :
7
5
d
1
a
h
b
puis une liste "après" traitement qui correspond au résultat que vous attendez, par exemple :
a
b
d
h
ou
a
b
d
h
1
5
7
ou
a
b
d
h
7
5
1
ou autre (au point où on en est) !
... on pourrait peut-être vous aider et, SURTOUT, ne pas perdre notre temps dans un multi-dialogue de sourds (enfin, surtout vous!).
C'est pour ça qu'on vous demande un fichier pour expliciter les attendus ou, au moins, une demande CLAIRE !!!
a
b
d
h
1
5
7
 

TooFatBoy

XLDnaute Barbatruc
a
b
d
h
1
5
7
Effectivement ça ne correspond pas du tout à #4.

Avant.png Apres.png


Sur ce, bon dimanche à tous.
Et bon courage à l'ami Gégé-45550
@+
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
516

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth