Macro trier

KTM

XLDnaute Impliqué
bonsoir chers tous

Jai des bases de données que je renseigne via un USF.
J'aimerais grace a un bouton sur mon USF trier au besoin la colonne des Mois selon la date la plus récente a la plus ancienne.
Merci
 

Pièces jointes

  • Classeur1.xlsm
    18.5 KB · Affichages: 11

ChTi160

XLDnaute Barbatruc
Bonjour KTM
Bonjour Bernard,Le Forum
une approche
VB:
'dans module de la feuille "ds" pour l'exemple
Option Explicit
Private Sub Worksheet_Activate()
Trier_BD "ds"
End Sub
'*******************'
'Dans le Module1
Option Explicit
Public Function Trier_BD(shtname)
With Worksheets(shtname)
 With .Range("A1").CurrentRegion
   .Sort key1:=.Cells(2, 2), order1:=xlDescending, Header:=xlYes
 End With
End With
End Function
Bonne journée
jean marie
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @KTM, à tous,

Un code qui convertit le texte en date puis qui trie le tableau (basé sur le 1er fichier et ici pour la feuille "dt") :
VB:
Sub Convertir_Trier()
Dim derlig&, dercol&, xrg As Range

Application.ScreenUpdating = False
With Worksheets("dt")
  'conversion en date 
  If .FilterMode Then .ShowAllData
  derlig = .Cells(.Rows.Count, "a").End(xlUp).Row
  Set xrg = .Range("b2:b" & derlig)
  dercol = .UsedRange.Column + .UsedRange.Columns.Count
  With .Range(.Cells(2, dercol), .Cells(derlig, dercol))
    .FormulaR1C1 = "=IF(RC2="""","""",IF(ISTEXT(RC2),DATEVALUE(RC2),RC2))"
    xrg.Value = .Value
    .EntireColumn.Delete
  End With
  xrg.HorizontalAlignment = xlGeneral
  xrg.NumberFormat = "mmm-yy"
  'Tri
  With .Range("a1:f" & derlig)
    .Sort key1:=.Range("b1"), order1:=xlAscending, Header:=xlYes
  End With
End With
Application.ScreenUpdating = True

End Sub
 
Dernière édition:

KTM

XLDnaute Impliqué
Merci ChT160 et mapomme
Les deux propositions sont testées et sont excellentes.
Mais je voudrais m'attarder sur celle de mapomme qui me fera faire d'une pierre deux coups et mapomme , je trouve votre code de conversion en date intéressante au point que je suis tenté de vous demander d'y revenir et apporter des explications ou commentaires pour que je puisse le déchiffrer et l'adapter à d'autres situations. Encore merci à vous!!!!!!
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Du très classique :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim tablo, i&
On Error Resume Next
With Sh.[A1].CurrentRegion
    tablo = .Columns(2).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 2 To UBound(tablo): tablo(i, 1) = CDate("1-" & tablo(i, 1)): Next 'conversion
    .Columns(2) = tablo 'restitution
    .Sort .Columns(2), xlDescending, Header:=xlYes 'tri
End With
End Sub
A+
 

Pièces jointes

  • Classeur(1).xlsm
    23.1 KB · Affichages: 7
Dernière édition:

KTM

XLDnaute Impliqué
Bonjour à tous,

Du très classique :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim tablo, i&
On Error Resume Next
With Sh.[A1].CurrentRegion
    tablo = .Columns(2).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 2 To UBound(tablo): tablo(i, 1) = CDate("1-" & tablo(i, 1)): Next 'conversion
    .Columns(2) = tablo 'restitution
    .Sort .Columns(2), xlDescending, Header:=xlYes 'tri
End With
End Sub
A+
Merci à vous tous pour votre soutien et vos contributions combien précieuses !!!!!!
 

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 249
dernier inscrit
solo