Probleme de recherche

Résolu
Alessia -  
wilfried_42 Messages postés 912 Statut Contributeur -
Bonjour,

J’ai créé un fichier contenant plusieurs milliers de lignes. (Ci-joint un extrait). Je souhaiterais parvenir à faire ressortir dans un tableau de synthèse le dernier prix enregistré.
Je ne sais pas s’il faut faire une macro ou une formule matricielle (les simples formules semblent ne pas marcher)?
Pouvez-vous m’aider ?

D’avance merci

http://www.cijoint.fr/cjlink.php?file=cj200904/cij9N1iUcD.xls

7 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
bonjour,

30 000lignes ==> matricielles à éviter car très lentes... donc VBA

Tes codes sont ils toujours groupés et triés ?

Réponse en fin de matinée ou d'apremidi (RV debtiste!!!)
0
Alessia
 
Merci Michel_m de regarder mon probleme.
oui mon fichier est trié par reference puis par date.
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
Bonjour Alessia, Michel

voici une formule avec les plages à adapter
Formule matricielle, à valider as Ctrl + Maj + Entrée
=INDEX($D$2:$D$15;MAX(SI($A$2:$A$15=E21;LIGNE($A$2:$A$15)-1;0)))

si la validation est correcte, des {} encadreront automatiquement la formule

je vois que dans ton exemple les ligne sont triées par code, est-ce toujours le cas si oui, on peut faire autrement, plus rapide avec une plage nommée glissante

@ te lire
0
Alessia
 
Merci Wilfried, la formule marche. Je vais essayer de l'adapter à mon fichier.
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
re alessia, bonjour Wilfried

tiens! ce sera intéressant de voir le temps sur 30000 lignes par les 2 méthodes: matricielle et VBA

je passes par un dictionnary et j'attend aussi les ref groupées ou pas...

Sub extraire_dernierprix()
Dim dico_ref As Object
Dim cptr As Long, derlig As Long

Set dico_ref = CreateObject("Scripting.Dictionary")
derlig = Range("A65536").End(xlUp).Row
'----------collecte
For cptr = 1 To derlig
ref = Cells(cptr + 1, 1).Value
If Not dico_ref.Exists(ref) Then
dico_ref.Add ref, ref
nbreref = Application.CountIf(Range("A2:A" & derlig), ref)

'??? EN ATTENTE ALESSIA

End If
Next cptr

Set dico_px = Nothing
End Sub
0
Alessia
 
michel_m j'essaye et je vous tiens au courant pour votre macro.
Merci
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

michel : c'est pour cela que j'ai posté, sur les exemples qui sont concis les temps passé aux calcul n'indique rien. La méthode Find et FindNext ne serait elle pas plus rapide ? on garde la derniere trouvée dans une boucle While Wend
Allessia : la deuxième solution si ta table est triée, pas de formule matricielle mais d'autres possibilités
ton fichier en retour avec les 2 méthodes
https://www.cjoint.com/?efkpepPJ2T
0
Alessia
 
Re, c'est sensationnel!!

Ne connaissant pas grand chose aux macros, je vais privilégier la solution de liste glissante mais je vais suivre avec attention vos echanges sur une macro possible.

Merci infiniment à vous deux.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

voici une fonction personnalisée : à intégrer dans un module
Public Function C_dernier(Maplage As Range, Valeur As Range)
    C_dernier = Maplage.Find(What:=Valeur.Value, SearchDirection:=xlPrevious).Row
End Function

utilisation :
en F1 : la formule suivante
=INDEX(D:D;c_dernier(A:A;E21))

Tirer vers le bas
ça devient instantané
0
Alessia
 
ca aussi c'est enorme
lool
Comment vous savez faire tout ca?
0
wilfried_42 Messages postés 912 Statut Contributeur 245 > Alessia
 
re:

en hantant inlassablement les forums et en trouvant au début des intervenants comme Michel, Michel, Pierre, Monique, Tibo, Jocelyn et j'en passe et des meilleurs... mais tous aussi agréables que disponibles..
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
SPLEN-DI-DE cher Wilfried !
j'arrivais avec mon truc avec les résultats dans un tableau mais...
Bon WE et merci pour cette solution ingénieuse
(Wilfried : tu as oublié notre ami @+thierry-rollingstones ?)
Cordialement, Michel
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re: michel

je m'en voudrai longtemps, je l'ai rencontré, c'est un type génial....
0