Ordonner selon certaines conditions

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Je suis à la recherche de la solution suivante :
J’ai 2 colonnes contiguës. L’une avec des noms, l’autre avec des dates de naissance, par ex. :
Zaza 26/12/1957
Lolo 13/04/1988
Toto 18/11/1944
Bibi 14/01/1995
Juju 15/01/2005

Je voudrais, par macro, faire un classement en fonction des dates (mois + jour du mois) mais sans tenir compte des années. Par conséquent, je désirerais que ma liste ordonnée soit ainsi :

Bibi 14/01/1995
Juju 15/01/2005
Lolo 13/04/1988
Toto 18/11/1944
Zaza 26/12/1957

Merci pour tout coup de main.
 
Re : Ordonner selon certaines conditions

Bonsoir Magic Doctor,

Sans macro, si les dates sont en colonne B, le plus simple est d'entrer en colonne C la formule (tirée vers le bas) :

=DATE(2000;MOIS(B2);JOUR(B2))

Pour le classement du tableau, trier suivant la colonne C.

A+
 
Re : Ordonner selon certaines conditions

Merci Catrice, Job75 et Roger2327,

La solution de Roger est celle qui répond le mieux à mon problème. Cependant, pour des raisons techniques j'aurais voulu que le tri se fasse par macro.
Le problème s'est légèrement compliqué, vu qu'en fait il y aura 3 colonnes :

Zaza ... 26/12/1957 ... 51 ans
Lolo .... 13/04/1988 ... 21 ans
Toto ... 18/11/1944 ... 64 ans
Bibi ..... 14/01/1995 ... 14 ans
Juju .... 15/01/2005 ... 4 ans

et obtenir :

Bibi ..... 14/01/1995 ... 14 ans
Juju .... 15/01/2005 ... 4 ans
Lolo .... 13/04/1988 ... 21 ans
Toto ... 18/11/1944 ... 64 ans
Zaza ... 26/12/1957 ... 51 ans
 
Re : Ordonner selon certaines conditions

Suite...
Une solution programmée un peu plus élaborée :
Code:
[COLOR="DarkSlateGray"]Sub trier()
Dim sDat As String, aDat As String, nDat As Integer, kDat As Integer, sDst As String, aDst As String
Dim i As Long, j As Long, k As Long, di As Date, dj As Date, tmp, oDat()
   sDat = "Feuil1" [COLOR="SeaGreen"]' Feuille de données.[/COLOR]
   aDat = "A2" [COLOR="SeaGreen"]' Première cellule de données.[/COLOR]
   nDat = 3 [COLOR="SeaGreen"]' Nombre de colonnes de données.[/COLOR]
   kDat = 2 [COLOR="SeaGreen"]' Rang de la colonne contenant les dates à ordonner, DANS LA PLAGE de données.[/COLOR]
   sDst = "Feuil1" [COLOR="SeaGreen"]' Feuille de destination.[/COLOR]
   aDst = "M2" [COLOR="SeaGreen"]' Première cellule de destination.[/COLOR]
   With Sheets(sDat)
      oDat = .Range(aDat).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row - .Range(aDat).Row + 1, nDat).Value
      For i = 2 To UBound(oDat, 1)
         di = DateSerial(2008, Month(oDat(i, kDat)), Day(oDat(i, kDat)))
         For j = i - 1 To 1 Step -1
            dj = DateSerial(2008, Month(oDat(j, kDat)), Day(oDat(j, kDat)))
            If di >= dj Then Exit For
            For k = 1 To nDat
               tmp = oDat(j + 1, k)
               oDat(j + 1, k) = oDat(j, k)
               oDat(j, k) = tmp
            Next k
            dj = di
         Next j
      Next i
      Sheets(sDst).Range(aDst).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row - .Range(aDat).Row + 1, nDat).Value = oDat
   End With
End Sub[/COLOR]
Voir le classeur joint.​
ROGER2327
 

Pièces jointes

Dernière édition:
Re : Ordonner selon certaines conditions

Salut Magic_Doctor
Bonjour le Fil
Bonjour le Forum

Vite fait histoire de vous Saluer

Une autre version Vba

Le Fichier :Regarde la pièce jointe MagicDoctor_anniversaires_3.xls

arff après réflexion je pense que je n'ai pas compris lol
j'ai donc utilise la somme Date et Mois pour faire le tri arfffffffff

le fichier modifié Lol

Bonne journée
 
Dernière édition:
Re : Ordonner selon certaines conditions

Bonjour le fil, le forum,

Bon j'y vais aussi de ma solution VBA :

Code:
Sub test()
Dim tablo(), cel As Range
Application.ScreenUpdating = False
With Range("A2", Range("B65536").End(xlUp))
tablo = .Value
For Each cel In .Resize(, 1).Offset(, 1)
cel = Format(cel, "mm/dd")
Next
.Resize(, 3).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlNo
For Each cel In .Resize(, 1)
cel.Offset(, 1) = Application.VLookup(cel, tablo, 2, 0)
Next
End With
End Sub

A+
 

Pièces jointes

Re : Ordonner selon certaines conditions

Bonjour à tous
ChTi160, job75, petit problème avec l'échantillon suivant :
Code:
[FONT="Courier New"][COLOR="Indigo"]Juju	05/11/2005	3 ans
Molo	13/04/1998	11 ans
Wibi	14/01/1995	14 ans
Laza	26/12/1957	51 ans
Saza	31/07/1957	51 ans
Molo	13/04/1998	11 ans
Molo2	12/05/1998	11 ans
Qaza	14/03/1993	16 ans
Wibi	14/01/1995	14 ans
Saza2	26/12/1957	51 ans
Saza3	27/11/1957	51 ans
Tibi	14/01/1995	14 ans
Tibi	14/01/1995	14 ans
Juju2	06/10/2005	3 ans
Toto	18/11/1944	64 ans
Juju3	15/01/2005	4 ans
Toto	18/11/1944	64 ans
Tibi2	06/09/1995	13 ans
Wibi	14/01/1995	14 ans
Toto	18/11/1944	64 ans
Zaza	26/12/1957	51 ans
[/COLOR][/FONT]
Je joins l'échantillon dans une feuille.​
Bonne journée.
ROGER2327
 

Pièces jointes

Re : Ordonner selon certaines conditions

Bonjour,

ci-joint une autre élaboration :

Code:
Sub test1()
Application.ScreenUpdating = False
Debut = "B2"
With ActiveSheet
    Set MaZone = .Range(Range(Debut), .Range(Debut).End(xlDown))
    For Each X In MaZone
        X.Value = CDbl(DateSerial(2000, Month(X), Day(X))) & "-" & Year(X)
    Next
    .Range(Debut).Sort Key1:=Range(Debut), Order1:=xlAscending
    For Each X In MaZone
        X.Value = DateSerial(Split(X, "-")(1), Month(Split(X, "-")(0)), Day(Split(X, "-")(0)))
    Next
End With
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Dernière édition:
Re : Ordonner selon certaines conditions

Re...
Bonjour Catrice.
Chez moi la macro de Job75 a l'air de fontionner avec les données de Roger2327.
J'obtiens cela :
Code:
[COLOR="Indigo"]Wibi	14/01/1995	14 ans
Wibi	14/01/1995	14 ans
Tibi	14/01/1995	14 ans
Tibi	14/01/1995	14 ans
Wibi	14/01/1995	14 ans
Juju3	15/01/2005	4 ans
Qaza	14/03/1993	16 ans
Molo	13/04/1998	11 ans
Molo	13/04/1998	11 ans
[COLOR="Sienna"]Juju	05/11/2005	3 ans[/COLOR]
[COLOR="Sienna"]Tibi2	06/09/1995	13 ans[/COLOR]
[COLOR="Sienna"]Juju2	06/10/2005	3 ans[/COLOR]
[COLOR="Sienna"]Saza	31/07/1957	51 ans[/COLOR]
Toto	18/11/1944	64 ans
Toto	18/11/1944	64 ans
Toto	18/11/1944	64 ans
[COLOR="Sienna"]Saza3	27/11/1957	51 ans[/COLOR]
[COLOR="Sienna"]Molo2	12/05/1998	11 ans[/COLOR]
Laza	26/12/1957	51 ans
Saza2	26/12/1957	51 ans
Zaza	26/12/1957	51 ans
[/COLOR]
De plus, en répétant l'exécution du code, l'ordre change. Ai-je fait une erreur de manipulation ?​
ROGER2327
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
  • Question Question
Réponses
17
Affichages
3 K
jaypeeh
J
S
  • Question Question
Réponses
11
Affichages
2 K
Réponses
5
Affichages
920
S
Réponses
22
Affichages
18 K
sadlersmith
S
N
  • Question Question
Réponses
3
Affichages
2 K
N
L
Réponses
3
Affichages
995
ludo93
L
T
Réponses
10
Affichages
2 K
titom59280
T
N
Réponses
9
Affichages
1 K
N
B
Réponses
0
Affichages
7 K
biafox
B
C
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Réponses
2
Affichages
2 K
H
  • Question Question
Réponses
4
Affichages
1 K
S
  • Question Question
Réponses
3
Affichages
2 K
S
Retour