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

Autres Tri simple vba

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

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

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é
 
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

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
 
- 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
3
Affichages
199
Réponses
7
Affichages
301
Réponses
5
Affichages
146
Réponses
12
Affichages
360
Réponses
7
Affichages
266
Réponses
7
Affichages
192
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…