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
300

Statistiques des forums

Discussions
312 342
Messages
2 087 436
Membres
103 545
dernier inscrit
agent3