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

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

patricktoulon

XLDnaute Barbatruc
bonjour
si tu souhaite trier par le résultat de la division déjà ton exemple est faux
après il faudrait donner plus de détails
voir être plus précis sur le contexte du tri
somme toute par vba pas très compliqué
 

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…