Microsoft 365 Trie par date

GClaire

XLDnaute Occasionnel
Hello la communauté

Je bloque sur un code qui devrais être simple, mais a priori pas si simple du fait de format date : DD DDDD MMMM AAAA

J'aimerais trier ma colonne "A" (avec entête) par ordre de date plus ancienne a plus récente jusqu'à la colonne "F"

Pour ce faire j'inclus le code dans un code qui me permet de formater mon tableau

VB:
Sub Format_Bordure_Récapitulatif_Affaires()

Dim Format_WS As Worksheet
Dim rng As Range, n As Long

Set Format_WS = Sheets("Récapitulatif_Affaires")

With Format_WS
    n = .Cells(.Rows.Count, 1).End(xlUp).Row 'Colonne A
    'MsgBox n
    .Cells(1, 1).Resize(n, 6).Borders.Weight = xlThin 'N° ligne inclus titre de la colonne et Le nombre de colonne a traiter
    'MsgBox n
        .Columns("A:A").NumberFormat = "General" 'On change le format
    With .Columns("A:F")
        .EntireColumn.AutoFit 'on fait une mise en largeur automatique
        .Sort Key1:=Range("A:F"), Order1:=xlAscending, Header:=xlYes 'On fait le trie par date avec en-tête
    End With
        .Columns("A:A").NumberFormat = "dd dddd mmmm yyyy" 'On remet le bon format
End With
Set Format_WS = Nothing
End Sub

Le trie ne se fait pas comme je souhaiterai

Avant :

001-Avant.JPG


Aprés :

002-Aprés.JPG


Auriez-vous une idée du comment faire pour que cela fonctionne comme je souhaiterai?

Merci, G'Claire
 

GClaire

XLDnaute Occasionnel
re

merci.

Re,
Si Me.TextBox_1 est du type "mercredi 02 septembre 2020" Cdate me renvoie une erreur, il attend "02 septembre 2020"
Donc pour contourner le problème, une possibilité à tester :
VB:
With .Range("A" & DerrLigne)
       .Value = CDate(Mid(Me.TextBox_1, Application.Find(" ", Me.TextBox_1)))
       .NumberFormat = "dddd dd mmmm yyyy"
End With
Le but est de supprimer le premier mot de Me.TextBox_1.

je teste.

Merci
 

ChTi160

XLDnaute Barbatruc
Re
Tu pourrais aussi mettre ceci :
VB:
With .TextBox_1
       .Text = Application.Proper(Format(Date, "dddd dd mmmm yyyy")) 
      .Tag=format(Date,"00000")
End With
puis
VB:
With .Range("A" & DerrLigne)
       .Value = CDate(Me.TextBox_1.Tag) 'ou  .Value = CLng(Me.TextBox_1.Tag)
       .NumberFormat = "dddd dd mmmm yyyy"
End With
Non testé Lol
jean marie
 

ChTi160

XLDnaute Barbatruc
Re
pour le format dans la ListView
a toi de reformater la Date qui n'est plus un String 12/09/2020 en String Samedi 12 Septembre 2020
Ex :
VB:
 ListView1.ListItems.Add  , , Format( T(0), "dddd dd mmmm yyyy")
T(0) étant l'élément 1 de la Ligne à transférer dans la ListView et qui contient la Date Lol

Non testé Lol

jean marie
 

GClaire

XLDnaute Occasionnel
re

Merci ChTi160.

J'ai tenté ta proposition, cela m'a fait des trucs zarbi

Voici le fichier complet.

Je retente dans un moment, la mal a ma teté, hihi.

Merci beaucoup, G'Claire
 

Pièces jointes

  • Récapitulatif heure CONDUENT.xlsm
    260.1 KB · Affichages: 8

ChTi160

XLDnaute Barbatruc
Re

j'ai mis ceci et ça marche !
VB:
For Each C In Feuille_Récapitulatif_Affaires.Range("A2:A" & DerrLigne)
        .ListItems.Add , , Format(C, "dddd dd mmmm yyyy")
mais ça n'est pas très bien !
il faut soit tu Changes en colonne "A" tes dates qui sont du Texte en Date Format 12/09/2020 puis tu formate ta Colonne en "dddd dd mmmm yyyy"
ou alors créer une macro temporaire qui va faire le Boulot Changer les Date (Texte) en Date 12/09/2020
jena marie
 
Dernière édition:

GClaire

XLDnaute Occasionnel
Re
Bisard
car sur le Fil ci dessous , tu n'avais pas ce problème ! sauf dans feuille "Linda" format String des dates
Calcul montant.
Ton Fil
je regarde lol
jean marie


C'est un autre fichier.
Il est ressemblant car je suis reparti de l'autre pour faire celui-la, mais cela n'était pas la bonne solution, car je perds plus de temps a réparer que si je serait parti de 0.

Merci.

G'Claire
 

GClaire

XLDnaute Occasionnel
Re

j'ai mis ceci et ça marche !
VB:
For Each C In Feuille_Récapitulatif_Affaires.Range("A2:A" & DerrLigne)
        .ListItems.Add , , Format(C, "dddd dd mmmm yyyy")
mais ça n'est pas très bien !
il faut soit tu Changes en colonne "A" tes dates qui sont du Texte en Date Format 12/09/2020 puis tu formate ta Colonne en "dddd dd mmmm yyyy"
ou alors créer une macro temporaire qui va faire le Boulot Changer les Date (Texte) en Date 12/09/2020
jena marie


Merci, je regarde.

Oui pour les dates, il n'y en a pas beaucoup, je vais tout ressaisir.

Merci, G'Claire
 

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T