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

tri dates par noms

HPR

XLDnaute Nouveau
Bonjour,
En fait je suis tombé sur ce site en faisant une recherche suite à un problème qui me dépasse un peu ( j'ai 80 ans et je suis venu à l'informatique sur le tard ) !
J'aurais aimé un script ou une macro sur Excel afin de garder seulement la dernière entrée sur une liste de noms liés à une date. Par exemple sur cette liste:
21/06/2018 Bernard NOM1
15/08/2020 André NOM2
10/10/2022 Emile NOM3
24/08/2024 Bernard NOM1
08/08/2024 Emile NOM3

Et obtenir ceci, éventuellement avec mise par ordre de dates:

15/08/2020 André NOM2
24/08/2024 Bernard NOM1
08/08/2024 Emile NOM3

Merci par avance.
 

dysorthographie

XLDnaute Accro
Bonjour,
c'est la section présentation, pas l'endroit pour poser les questions mais bon
VB:
Sub test()
Dim sortedList As Object
Set sortedList = CreateObject("System.Collections.SortedList")
 Dim DataArray(1 To 5, 1 To 3) As String
    ' Assign values to the array
    ' Assign values to the array
    DataArray(1, 1) = "21/06/2018"
    DataArray(1, 2) = "Bernard"
    DataArray(1, 3) = "NOM1"
    
    DataArray(2, 1) = "15/08/2020"
    DataArray(2, 2) = "André"
    DataArray(2, 3) = "NOM2"
    
    DataArray(3, 1) = "10/10/2022"
    DataArray(3, 2) = "Emile"
    DataArray(3, 3) = "NOM3"
    
    DataArray(4, 1) = "24/08/2024"
    DataArray(4, 2) = "Bernard"
    DataArray(4, 3) = "NOM1"
    
    DataArray(5, 1) = "08/08/2024"
    DataArray(5, 2) = "Emile"
    DataArray(5, 3) = "NOM3"
 For i = 1 To 5
    If Not sortedList.contains(DataArray(i, 2) & ";" & DataArray(i, 3)) Then sortedList.Add DataArray(i, 2) & ";" & DataArray(i, 3), CStr(DataArray(i, 1))
    If sortedList(DataArray(i, 2) & ";" & DataArray(i, 3)) < DataArray(i, 1) Then sortedList(DataArray(i, 2) & ";" & DataArray(i, 3)) = DataArray(5, 1)
  Next
  Dim Tb() As String
  ReDim Tb(1 To sortedList.Count, 1 To 3)
  For i = 1 To sortedList.Count
    K = sortedList.getkey(i - 1)
    Tb(i, 1) = sortedList(K)
    Tb(i, 2) = Split(K, ";")(0)
    Tb(i, 3) = Split(K, ";")(1)
  Next
  Range("A1").Resize(sortedList.Count, 3) = Tb
End Sub
 

HPR

XLDnaute Nouveau
Bonjour Disorthographie,
Merci pour votre réponse rapide. Je m'excuse d'abord, après avoir envoyé mon message de présentation j'ai réalisé que ce n'était pas l'endroit pour poser ma question et j'ai mis une copie dans les discussions. Comme je l'ai dit, à 80 ans je ne suis pas un expert avec Excel et encore moins avec les macros! J'en utilise quelques-unes très simples que j'ai faites, mais je ne savais pas trop comment m'y prendre avec celle ci. Ainsi mon souhait est de gérer ma liste de noms au fur et à mesure que j'ajoute des entrées. J'ai fait un essai avec votre macro mais ça ne marche pas, je l'ai mise avec les autres dans mon classeur de macros personnelles mais l'exécution a seulement ajouté les 3 entrées de l'exemple et pas dans l'ordre des dates.
Merci encore par avance de prendre de votre temps pour moi.
PS: je mets en PJ une partie de ma liste.
 

Pièces jointes

  • TEST.xlsx
    9.1 KB · Affichages: 1

dysorthographie

XLDnaute Accro
D'abord c'est pas grave si tu n'as pas posté sur la bonne rubrique, tu te prive seulement d'un nombre d'aidant qui pourrait t'apporter leur aide.

Ceci dit je suis pas certaine que tu soit mâle tombé avec moi.

Il ce trouve que bien que tu es bien précisé qu'il fallait un ordre par date, j'ai fait un ordodonné par nom ce qui visuellement,en tout cas, était très ressemblant.

Je suis dans les transports, mais je m'y colle dès que possible.


Peut-être qu'entre temps un modérateur aura transféré ton poste sur le bon forum pour te permettre de toucher plus de contributeurs.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…