XL 2016 Extraction date minimum dans une liste avec doublons

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 !

porcinet82

XLDnaute Barbatruc
Hello tout le monde,

Ça fait un moment que je ne suis pas passé ici mais je bloque sur un truc (peut être tout con ?!) et j'aurai besoin de votre aide.
Le titre n'est pas forcément très parlant mais le fichier en pj devrait vous comprendre de vite cerner la demande.
J'ai simplifié au maximum, donc en gros j'ai une liste de noms contenant des doublons avec chacun une date.
Je souhaiterai extraire pour chaque nom unique après reformatage du nom, la date minimum.
Dans le fichier j'ai présenté le résultat dans des cellules pour faciliter la compréhension mais dans les faits j'aurai besoin de le stocker dans un tableau afin de pouvoir les utiliser ensuite.
Je ne vous mets même pas de bout de code parce que je pense que je suis parti dans le mauvais sens avec à la fois des tableaux, des splits et des collections...
Merci par avance pour votre aide et n'hésitez pas si ce n'est pas suffisamment clair...

@+
 

Pièces jointes

Merci Roblochon pour ta proposition et pour la découverte de powerQuery que je ne connaissais pas.
Ça fonctionne sur la feuille mais comme je le mentionnais dans mon premier message (mais peut etre pas assez clairement,), ce "problème" fait partie d'un ensemble de macros et j'aurai donc besoin de le traiter par macros. Et quand je parlais de stockage dans un tableau, j'aurai du parler de Array.

Bref, si toi ou quelqu'un d'autre à une idée, je vous remercie par avance.
 
Bonjour porcinet82 🙂 , bonjour Roblochon

En utilisant un dictionnaire.
Le code n'est qu'un exemple.
VB:
Sub test()
Dim i&
Dim Dico As Object
Dim Tmp, X, Tab_Nom, Tab_Val, Nom


'Création du dictionnaire
Set Dico = CreateObject("Scripting.dictionary")

For i = 4 To 9 'Boucle sur les lignes du tableau source
'Netoyage des noms (à vérifier sur les données réelles)
Tmp = Split(Cells(i, 1), "_")
Nom = Right(Tmp(0), 1)
X = Left(Tmp(1), 1)
If IsNumeric(X) Then Nom = Nom & "." & X
'-------------------------------------------------------

'utilisation du dictionnaire
If Dico(Nom) < Cells(i, 2) Then Dico(Nom) = Cells(i, 2)
Next i

'Récupération en tableaux
Tab_Nom = Dico.Keys
Tab_Val = Dico.Items

'Visualisation sur feuille
Cells(6, 10).Resize(UBound(Tab_Nom) + 1, 1).FormulaLocal = Application.Transpose(Tab_Nom)
Cells(6, 11).Resize(UBound(Tab_Val) + 1, 1).FormulaLocal = Application.Transpose(Tab_Val)

End Sub

Pour toutes les possibilité des dico, elles sont nombreuses, voir le site de J.Boisgontier:


Cordialement
 
Dernière édition:
Salut Efgé,

Je n'ai pas pris le temps de repasser ici avant, mais un grand merci pour ton aide !
Grâce à toi j'ai découvert les Dictionnary que je ne connaissait pas mais qui s'avèrent être un outils intéressant et puissant, et ton code m'a permis de solutionner mon problème ! 🙂
A bientôt !
 
Bonjour à tous 🙂,

Juste pour le fun, pour ceux qui ne disposent pas du 'Dictionary' (les possesseurs de MAC), voici une version sans dictionary avec une collection.

edit : bonne après-midi @patricktoulon 🙂
 

Pièces jointes

Dernière édition:
- 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

Réponses
2
Affichages
120
Réponses
2
Affichages
340
Réponses
6
Affichages
84
Réponses
1
Affichages
270
Retour