Autres Tri simple vba

aredo

XLDnaute Occasionnel
bonjour,

Petite demande en pièce jointe, le tri n'est pas assez précis.
merci de bien vouloir me corriger le vba.
excel 2007 et 2016
 

Pièces jointes

  • tri.xlsm
    17.6 KB · Affichages: 7

aredo

XLDnaute Occasionnel
Ce ne sont pas des divisions. Simplement des références, on peut remplacer le slash par un tiret.
Le fichier d'origine comporte neuf colonnes dont une masquée, des chiffres , du texte et des formules .
Le souci étant de classer dans l'ordre établi dans le fichier joint.
 

Pièces jointes

  • tri.xlsm
    17.7 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Bonsoir.
Plus rapide comme ça :
VB:
Private Sub CommandButton1_Click()
   Application.ScreenUpdating = False
   Range("C3:C9").FormulaR1C1 = "=LEFT(RC1,SEARCH(""/"",RC1)-1)*10000+MID(RC1,SEARCH(""/"",RC1)+1,4)*1"
   Range("A3:C9").Sort Key1:=Range("c3"), Order1:=xlAscending
   Range("C3:C9").ClearContents
   End Sub
Private Sub CommandButton2_Click()
   Application.ScreenUpdating = False
   Range("C3:C9").FormulaR1C1 = "=LEFT(RC1,SEARCH(""/"",RC1)-1)*10000+MID(RC1,SEARCH(""/"",RC1)+1,4)*1"
   Range("A3:C9").Sort Key1:=Range("c3"), Order1:=xlDescending
   Range("C3:C9").ClearContents
   End Sub
ou comme ça :
VB:
Private Sub CommandButton1_Click()
   Application.ScreenUpdating = False
   ModNumTemp
   Range("A3:C9").Sort Key1:=Range("c3"), Order1:=xlAscending
   Range("C3:C9").ClearContents
   End Sub
Private Sub CommandButton2_Click()
   Application.ScreenUpdating = False
   ModNumTemp
   Range("A3:C9").Sort Key1:=Range("c3"), Order1:=xlDescending
   Range("C3:C9").ClearContents
   End Sub
Private Sub ModNumTemp()
   Dim T(), L As Long, TSpl() As String
   T = [A3:A9].Value
   For L = 1 To UBound(T, 1)
      TSpl = Split(T(L, 1), "/")
      T(L, 1) = TSpl(0) * 10000 + TSpl(1)
      Next L
   [C3:C9].Value = T
   End Sub
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 469
Messages
2 088 696
Membres
103 924
dernier inscrit
Patrick c