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

tri par date

tchatcheur01

XLDnaute Junior
Bonjour le forum,

j'ai un fichier client avec dans chaque colonne nom prenom adresse tel ... et date de naissance !

je peux tout classer par ordre croissant ou decroissant et sa me change toutes les lignes correspondantes avec mais pas pour les date de naissance !
J'aimerai que lorsque je tri par date les classer aussi par ordre croissant ou decroissant pour mieux voir les personnes nées dans le mois ou les mois à venir !
mais sa ne marche pas !
j'ai selectionné la colonne ; mis le format date ( ou j'ai choisit le model voulu )
et le tri ne fonctionne pas comme je voudrais .

Qui pourrais m'aider ???????????,

Merci d'avance
 

jeanpierre

Nous a quitté
Repose en paix
Re : tri par date

Bonsoir Tchatcheur01,

Tes dates sont elles réellement des dates malgré le format que tu leur imposes ?

Dépose nous un exemple, sur quelques lignes, de ton fichier, après avoir vérifié que cela ne fontionne pas.

Bonne soirée.

Jean-Pierre
 

jp14

XLDnaute Barbatruc
Re : tri par date

Bonsoir tchatcheur01
Bonsoir Jean Pierre.


Les dates posent souvent des problèmes, le texte à l'apparence d'une date mais en fait excel considère les données comme des caractères alphabétique.
Tout d'abord une date est normalement aligné à droite.
On peut vérifier si la cellule contient une valeur numérique (une date étant vue à travers un filtre : format ) en réalisant une opération mathématique sur la valeur.

Pour rectifier éventuellement le problème il faut sélectionner la colonne menu Données, option convertir, et a l'étape 3 on sélectionne date.
Excel transforme la chaine de caractères en valeur numérique et affiche une date.

JP
 

tchatcheur01

XLDnaute Junior
Re : tri par date

re tous le monde
voila un fichier ! avec de décrit ce que j'aimerai pouvoir faire !

Ah oui et pour rentrer les dates ainsi que les autres données je passe par un userform ! ou pour la date de naissance un dtpicker .

Merci d'avance !!!!
 

Pièces jointes

  • date de naissance.xls
    21 KB · Affichages: 79
  • date de naissance.xls
    21 KB · Affichages: 77
  • date de naissance.xls
    21 KB · Affichages: 80

bcharef

XLDnaute Accro
Re : tri par date

Bonsoir tchatcheur01, jp14 & jeanpierre,
Bonsoir à toutes et à tous.

Si, j'ai bien saisi, essayez de consulter le fichier ci joint, dans l'espoir qu'il conviendra à votre problème.

A vous lire et bon courage.

Cordialement.

Bcharef.
 

Pièces jointes

  • date de naissance v(1).xls
    27.5 KB · Affichages: 90

fred65200

XLDnaute Impliqué
Re : tri par date

bonjour, je vous propose ce code
Code:
Option Explicit
Sub TriParMois()
'
Dim derLi As Long
Dim M As String
Application.ScreenUpdating = False
'Recherche de la dernière ligne de la colonne A
derLi = Columns("A").Find("*", , , , , xlPrevious).Row
Range("A2:K" & derLi).Interior.ColorIndex = xlNone 'A1 a adapter

RedoM:
'Choix du mois
M = Application.InputBox("Choisissez le mois", "", Month(Date), , , , , 1)
If M = "0" Then GoTo RedoM
If M = False Then GoTo Fin2
If M > 12 Or M < 1 Then GoTo RedoM

'Insertion d'une colonne temporaire
Columns("I:I").Insert Shift:=xlToRight
'Inscription de la formule pour trier par mois
Range("I2:I" & derLi).FormulaR1C1 = "=MONTH(RC[1])"
'Tri
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("I2:I" & derLi), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A1:K" & derLi)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
'le filtre
ActiveSheet.Range("$A$1:$K$" & derLi).AutoFilter 9, Criteria1:=M
On Error GoTo Erreur
Range("A2:K" & derLi).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 6
On Error GoTo 0: GoTo Fin
Erreur: MsgBox "Pas de correspondance pour ce mois."
Fin:
Selection.AutoFilter
'Suppression de la colonne temporaire
Columns("I").Delete Shift:=xlToLeft
Fin2: Application.ScreenUpdating = True
End Sub
Cordialement
 
Dernière édition:

fred65200

XLDnaute Impliqué
Re : tri par date

bonjour,
je ne connaissais pas MonthName.
Merci

J'ai un peu modifié ton code s'il n'y a pas d'occurrence, et pour avoir le mois en cours à l'ouverture.
Code:
Option Explicit
Dim i As Integer
Dim data1 As String

Private Sub ComboBox1_Change()
Dim nomfeuille1 As String
Dim col As String
Dim cellule As Range
col = "a"
nomfeuille1 = "Feuil1"
Dim i As Long
i = 0
Label2 = "Résultat de la recherche"

With ListBox1
    .Visible = False
    Label2.Visible = False
    .Clear
    .ColumnCount = 4
    .ColumnWidths = "100;50;20;0"
    '.Style = fmStyleDropDownList '
    '.BoundColumn = 1 ' combobox1.text contient le nom
    For Each cellule In Sheets(nomfeuille1).Range("i2:i" & Sheets(nomfeuille1).Range(col & "65536").End(xlUp).Row)
            If IsDate(cellule.Value) Then
                If MonthName(Month(cellule.Value)) = ComboBox1.Value Then
                    .AddItem cellule.Offset(0, -8).Value
                    .List(.ListCount - 1, 1) = cellule.Offset(0, -7).Value
                    .List(.ListCount - 1, 2) = cellule.Offset(0, 0).Value
                    .List(.ListCount - 1, .ColumnCount - 1) = cellule.Row
                    .Visible = True
                    i = i + 1
                End If
            End If
    Next cellule
    Label2.Visible = True
End With
If i = 0 Then
    Label2 = "Pas d'occurrence pour " & ComboBox1.Value & "."
Else: Label2 = Label2 & " (" & i & ")"
End If

' code pour connaitre la ligne de la base de donnée
'Dim lig As Long
'lig = CLng(ListBox1.List(ListBox1.ListIndex, (ListBox1.ColumnCount - 1)))

End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub UserForm_Initialize()
For i = 1 To 12
    Me.ComboBox1.AddItem MonthName(i)
Next i
ComboBox1.ListIndex = Month(Date) - 1

End Sub
Cordialement
 
Dernière édition:

Discussions similaires

Réponses
9
Affichages
337
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…