Microsoft 365 Tri et Formatage

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

Je bute sur un souci de tri et de formatage de cellules.

Dans le fichier test joint,
En colonne "D" l'affichage de la cellule est :
13.10.2021
00:00
Mes cellules colonne "D" affichent les heures/mn sous la date mais le classement est dans l'ordre Descendant

En colonne "F" l'affichage de la cellule est :
13 10 21 00:00
Mes cellules colonne "F" classent bien dans l'ordre Ascendant mais affichent les heures/mn sur la même ligne que la date

ma question :
Pour garder le même formatage de colonne/cellules que la colonne "D"
j'ai besoin de trier en "Ascendant" et d'afficher les heures/mn sur la même ligne que la date ?

Auriez-vous la solution ?
Je continue mes recherches.

Avec mes remerciements,
Amicalement,
lionel,
 

Pièces jointes

  • tri_test.xlsm
    22.8 KB · Affichages: 3
Solution
Bonsoir Lionel,

C'est une très mauvaise idée d'utiliser 2 colonnes.

Car avec le tri il y aura des interférences pour les hauteurs des lignes des 2 tableaux.

Utilise donc la seule colonne D et cette macro qui diffère peu de celle du post #6 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.ScreenUpdating = False
With Range("D2:D" & Rows.Count)
    .NumberFormat = "dd/mm/yyyy" & vbLf & "hh:mm"
    .RowHeight = 15
    .WrapText = False
    .Sort .Cells(1), xlAscending, Header:=xlNo 'tri croissant
    For Each c In .Resize(UsedRange.Rows.Count)
        If IsDate(c) Then
            c.RowHeight = 30
            c.WrapText = True
        End If
    Next
    .EntireColumn.AutoFit
    If .ColumnWidth <...

natorp

XLDnaute Barbatruc
Bjr Lionel

et avec ce format de cellules en colonne F ?
1634126914994.png

Cordialement, Gérard
 

job75

XLDnaute Barbatruc
Bonjour Lionel, natorp,

Voyez le fichier joint et cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.ScreenUpdating = False
With Range("D2:D" & Rows.Count)
    .NumberFormat = "dd/mm/yyyy" & vbLf & "hh:mm"
    .RowHeight = 15
    .WrapText = False
    For Each c In .Resize(UsedRange.Rows.Count)
        If IsNumeric(CStr(c.Value2)) Then
            c.RowHeight = 30
            c.WrapText = True
        End If
    Next
    .EntireColumn.AutoFit
    If .ColumnWidth < 10.71 Then .ColumnWidth = 10.71
End With
End Sub
La colonne D est dans un format contenant le renvoi à la ligne vbLf.

A+
 

Pièces jointes

  • Classeur(1).xlsm
    16.5 KB · Affichages: 5

Usine à gaz

XLDnaute Barbatruc
Bonsoir à toutes et à tous,
Je vous souhaite une bonne fin de journée :)

Bonsoir Gérard : Je reviens sur le fil car j'ai un souci.

Ton code fonctionne très bien en ce qui concerne la colonne D.
Pour tester, j'ai ajouté mes infos du fichier de travail en colonne "I" et .....
ça ne classe pas les date de 2022.
Je n'arrive pas à comprendre pourquoi ??? :mad:
Est-ce que tu saurais ?

Je joins le fichier test et je continue à chercher ...
lionel :)
 

Pièces jointes

  • tri_Gérard2.xlsm
    18.1 KB · Affichages: 1

job75

XLDnaute Barbatruc
Bonsoir Lionel,

C'est une très mauvaise idée d'utiliser 2 colonnes.

Car avec le tri il y aura des interférences pour les hauteurs des lignes des 2 tableaux.

Utilise donc la seule colonne D et cette macro qui diffère peu de celle du post #6 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.ScreenUpdating = False
With Range("D2:D" & Rows.Count)
    .NumberFormat = "dd/mm/yyyy" & vbLf & "hh:mm"
    .RowHeight = 15
    .WrapText = False
    .Sort .Cells(1), xlAscending, Header:=xlNo 'tri croissant
    For Each c In .Resize(UsedRange.Rows.Count)
        If IsDate(c) Then
            c.RowHeight = 30
            c.WrapText = True
        End If
    Next
    .EntireColumn.AutoFit
    If .ColumnWidth < 10.71 Then .ColumnWidth = 10.71
End With
End Sub
A+
 

Pièces jointes

  • tri_Gérard(1).xlsm
    18.8 KB · Affichages: 5

Usine à gaz

XLDnaute Barbatruc
Bon jour à toutes et à tous,
Je vous souhaite un bon WE :)

Merci encore à Gérard pour le code qui fonctionne nickel mais ... lol :mad:
Il me reste un souci indépendant du code.

Dans les dates à trier apparaissent de celle façon :
- Mon fichier de travail : 13.10.2021 00:00....... (col J du fichier)
- fichier test.......................: 13.10.2021 00:00:00 (Col D du fichier)
Le code
- classe bien sur Col D
- Ne classe pas dans l'ordre Ascendant sur Col J
J'ai un second souci mes MFC ne fonctionnent pas en Col. J


1 - Pour que le code classe bien la col. J, il convient d'y intégrer la notion
"Trier toutes les données ressemblant à des nombres comme des nombres = ce que je n'ai pas su faire jusqu'à maintenant.
Mais mon souci de MFC ne serait pas résolu.


Je joins le fichier test et je continue mes recherches.
Encore un p'tit peu besoin d'aide lol :)
lionel :)
 

Pièces jointes

  • tri_Gérard4.xlsm
    42.9 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 436
Membres
111 136
dernier inscrit
Ahmad Ibnou