Probleme de recherche
Résolu/Fermé
Alessia
-
3 avril 2009 à 09:17
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 - 3 avril 2009 à 12:24
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 - 3 avril 2009 à 12:24
A voir également:
- Probleme de recherche
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche adresse - Guide
- Recherche image - Guide
- Rechercher ou entrer l'adresse 4 - recherche google ✓ - Forum Windows
7 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
3 avril 2009 à 09:41
3 avril 2009 à 09:41
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!!!)
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!!!)
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
3 avril 2009 à 09:59
3 avril 2009 à 09:59
Bonjour Alessia, Michel
voici une formule avec les plages à adapter
Formule matricielle, à valider as Ctrl + Maj + Entrée
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
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
3 avril 2009 à 10:07
3 avril 2009 à 10:07
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
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
3 avril 2009 à 10:15
3 avril 2009 à 10:15
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
3 avril 2009 à 10:26
3 avril 2009 à 10:26
re:
voici une fonction personnalisée : à intégrer dans un module
utilisation :
en F1 : la formule suivante
Tirer vers le bas
ça devient instantané
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é
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
>
Alessia
3 avril 2009 à 10:35
3 avril 2009 à 10:35
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..
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..
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
3 avril 2009 à 12:05
3 avril 2009 à 12:05
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
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
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
3 avril 2009 à 12:24
3 avril 2009 à 12:24
re: michel
je m'en voudrai longtemps, je l'ai rencontré, c'est un type génial....
je m'en voudrai longtemps, je l'ai rencontré, c'est un type génial....
3 avril 2009 à 10:00
oui mon fichier est trié par reference puis par date.