XL 2016 Trier une plage préférence colonne Date

ExcelDow

XLDnaute Occasionnel
Bonjour à tous,
Voici mon soucis, j'aimerais dans ce classeur, trier toute la plage avec le tri préférentielle sur la colonne des dates c'est à dire la colonne "I".
Et, j'aimerais bien que vous me disiez, s'il vous plaît, si je pourrais servir ce code dans un autre de mes codes, sous forme de "Caal Tri"
Merci et a +++++
 

Pièces jointes

  • TriPlageColonneDate.xlsm
    22 KB · Affichages: 53

job75

XLDnaute Barbatruc
Re,

Dans la mesure où le tableau est toujours organisé en tableau Excel :
Code:
Sub Tri()
With ThisWorkbook.Sheets("Donnée").ListObjects(1).Range
  .Parent.Protect UserInterfaceOnly:=True
  .Sort .Columns(9), xlAscending, Header:=xlYes
End With
End Sub
Il n'y a plus de références de cellules : le tableau peut être mis n'importe où.

A+
 

ExcelDow

XLDnaute Occasionnel
Bonjour job75
Merci de ton aide, j'aimerais juste préciser un détail, le code que j'ai reçu, concerne la feuille "Donnée" seulement ?
Lorsque j'extrait mes données, le code que j'utilise crée une nouvelle feuille à chaque fois, avec un nom différent, comment corriger ton code en fonction de ca ?
Merci job75
A++++
 

job75

XLDnaute Barbatruc
Bonjour ExcelDow, le forum,

Lors de la création il faut que la feuille créée soit repérée, on écrira donc, selon le cas :
Code:
Dim F As Worksheet
'----
Set F = ThisWorkbook.ActiveSheet 'ou
Set F = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'ou
Set F = ThisWorkbook.Sheets(nom) 'si la variable nom a été définie.
On fera le tri en appelant la macro par Call Tri(F)

la macro Tri étant paramétrée :
Code:
Sub Tri(F As Worksheet)
With F.ListObjects(1).Range
  .Parent.Protect UserInterfaceOnly:=True
  .Sort .Columns(9), xlAscending, Header:=xlYes
End With
End Sub
A+
 

ExcelDow

XLDnaute Occasionnel
Voici mon code entier job75,


Sub extraire() 'Extraire selon critère
Application.DisplayAlerts = False
If ActiveCell.Row > 1 And ActiveCell <> "" Then
nomOnglet = CStr(ActiveCell)
titreCritere = Cells(1, ActiveCell.Column)
Critere = ActiveCell
On Error Resume Next
Sheets(nomOnglet).Delete
On Error GoTo 0
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = nomOnglet
[P1] = titreCritere
[P2] = Critere
Sheets("Les payements").[A1:K1000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[P1:p2], CopyToRange:=Sheets(nomOnglet).[a1]
End If

'Mise en forme colonnes
Rows("1:1").RowHeight = 54
Columns("A:A").ColumnWidth = 18.56 'Société
Columns("B:B").ColumnWidth = 16.33 'Situation des payements
Columns("C:C").ColumnWidth = 7.89 'Somme
Columns("D:D").ColumnWidth = 8.78 'Montant en attente
Columns("E:E").ColumnWidth = 9.44 'Montant remboursé
Columns("F:F").ColumnWidth = 8.78 'Montant payé
Columns("G:G").ColumnWidth = 9.44 'Facture supprimée
Columns("H:H").ColumnWidth = 9.44 'Non Indémnisé
Columns("I:I").ColumnWidth = 25.78 'Date prévue du payement
Columns("J:J").ColumnWidth = 14.11 'Code
Columns("K:K").ColumnWidth = 12.67 'Facture N°
'Columns("L:L").ColumnWidth = 2.78 'NB Réf
'Masque colonne
'Columns("C:C").Select
'Selection.EntireColumn.Hidden = True
'ActiveWindow.DisplayGridlines = False
'Columns("M:M").Select
'Selection.EntireColumn.Hidden = True
'ActiveWindow.DisplayGridlines = False
Columns("P:p").Select
Selection.EntireColumn.Hidden = True
ActiveWindow.DisplayGridlines = False
Call Tri(F)

Range("A1").Select

End Sub
Sub Tri(F As Worksheet)
Dim F As Worksheet
'----
Set F = ThisWorkbook.ActiveSheet 'ou
'Set F = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'ou
'Set F = ThisWorkbook.Sheets(nom) 'si la variable nom a été définie.
With F.ListObjects(1).Range
.Parent.Protect UserInterfaceOnly:=True
.Sort .Columns(9), xlAscending, header:=xlYes
End With
End Sub
 

job75

XLDnaute Barbatruc
Re,
Re,
Alors voici job75, j'ai la première ligne en jaune
Sub Tri()
Ben vous lisez les réponses sans comprendre, j'ai bien dit qu'il fallait définir la variable F donc :
Code:
Sub extraire() 'Extraire selon critère
Dim nomOnglet$, titreCritere$, Critere$, F As Worksheet
'---
ActiveSheet.Name = nomOnglet
Set F = Activesheet
'---
Call Tri(F)
et j'ai bien écrit :
Code:
Sub Tri(F As Worksheet)
With F.ListObjects(1).Range
  .Parent.Protect UserInterfaceOnly:=True
  .Sort .Columns(9), xlAscending, Header:=xlYes
End With
End Sub
A+
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
322

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo