RechercheV sans tri
Résolu/Fermé
RachelMartel
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
-
17 déc. 2013 à 17:05
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 - 17 déc. 2013 à 19:02
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 - 17 déc. 2013 à 19:02
A voir également:
- RechercheV sans tri
- Tri excel - Guide
- Logiciel tri photo gratuit - Guide
- Colis rejeté par le centre de tri aliexpress - Forum Consommation & Internet
- Recherchev texte - Forum Excel
- Si(recherchev vrai alors) ✓ - Forum Excel
4 réponses
Salut.
J'utilise quotidiennement cette fonction avec l'argument faux sur des données non triées, et il n'y a jamais eu d'erreur.
J'utilise quotidiennement cette fonction avec l'argument faux sur des données non triées, et il n'y a jamais eu d'erreur.
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
17 déc. 2013 à 17:07
17 déc. 2013 à 17:07
Bonjour,
Pour moi, les données ne doivent pas être triées.
Je pense que la question du tri s'impose si jamais ta valeur cherchée apparaît plusieurs fois.
Je l'ai déjà utilisé sur des listes non triées et elle fonctionne très bien.
Pour moi, les données ne doivent pas être triées.
Je pense que la question du tri s'impose si jamais ta valeur cherchée apparaît plusieurs fois.
Je l'ai déjà utilisé sur des listes non triées et elle fonctionne très bien.
Boisgontierjacques
Messages postés
175
Date d'inscription
jeudi 19 septembre 2013
Statut
Membre
Dernière intervention
26 décembre 2018
64
17 déc. 2013 à 17:19
17 déc. 2013 à 17:19
Bonjour,
RECHERCHEV(code;table;ColonneRésultat;Vrai ou faux)
Si la valeur cherchée est un code et si la table n'est PAS triée
Il faut spécifier le paramètre FAUX.
On récupère #N/A si le code n'existe pas.
Si la valeur cherchée est un code et si la table est TRIEE,
on peut spécifier le paramètre VRAI.
La recherche est alors faite par DICHOTOMIE et peut être x100 + RAPIDE puisqu'il suffit de quelques accés pour retrouver le code. C'est TRES IMPORTANT lorsque la table est de taille importante et que
la formule Recherchev() est recopiée x1000 fois (Avec FAUX , Excel consulte la table SEQUENTIELLEMENT).
Pour vérifier si le code existe (on ne récupère pas #N/A mais la valeur inférieure), il faut écrire:
=SI(RECHERCHEV(CodeCherché;Articles;1;VRAI)=
CodeCherché;RECHERCHEV(CodeCherché;Articles;2;VRAI);"Inconnu")
Si la table est triée par code et que le code exitse plusieurs fois, RechercheV(code;table;Col_Résultat;VRAI) positionnesur le dernier code.
Jacques Boisgontier
RECHERCHEV(code;table;ColonneRésultat;Vrai ou faux)
Si la valeur cherchée est un code et si la table n'est PAS triée
Il faut spécifier le paramètre FAUX.
On récupère #N/A si le code n'existe pas.
Si la valeur cherchée est un code et si la table est TRIEE,
on peut spécifier le paramètre VRAI.
La recherche est alors faite par DICHOTOMIE et peut être x100 + RAPIDE puisqu'il suffit de quelques accés pour retrouver le code. C'est TRES IMPORTANT lorsque la table est de taille importante et que
la formule Recherchev() est recopiée x1000 fois (Avec FAUX , Excel consulte la table SEQUENTIELLEMENT).
Pour vérifier si le code existe (on ne récupère pas #N/A mais la valeur inférieure), il faut écrire:
=SI(RECHERCHEV(CodeCherché;Articles;1;VRAI)=
CodeCherché;RECHERCHEV(CodeCherché;Articles;2;VRAI);"Inconnu")
Si la table est triée par code et que le code exitse plusieurs fois, RechercheV(code;table;Col_Résultat;VRAI) positionnesur le dernier code.
Jacques Boisgontier
RachelMartel
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
25
17 déc. 2013 à 17:28
17 déc. 2013 à 17:28
Donc si je comprend bien, si j'utilise la RechercheV avec une table non triée avec plusieurs valeurs (genre 20 000), ça risque d'être lent?
Boisgontierjacques
Messages postés
175
Date d'inscription
jeudi 19 septembre 2013
Statut
Membre
Dernière intervention
26 décembre 2018
64
Modifié par Boisgontierjacques le 17/12/2013 à 19:08
Modifié par Boisgontierjacques le 17/12/2013 à 19:08
>Donc si je comprend bien, si j'utilise la RechercheV avec une table non triée avec plusieurs valeurs (genre 20 000), ça risque d'être lent?
S'il y a seule formule RechercheV(), pas de problème.
Si en revanche, on recopie cette formule x1000 fois, il y aura un temps d'attente.
Dans ce cas, utiliser :
Fonction perso RechvM() matricielle plus rapide que Recherchev() classique
Si on modifie les 2.600 valeurs cherchées dans un tableau de 20.000 items,
le temps de recalcul n'est pas visuellement mesurable (5 sec pour recherchev())
-Sélectionner G2:G2673
=RechvM(F2:F2673;matable;2)
-Valider avec maj+ctrl+entrée
Dans un module
Alt+F11/Insertion module
Function RechvM(clé As Range, champ As Range, colResult)
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
a = champ.Value
b = clé.Value
For i = LBound(a) To UBound(a)
d(a(i, 1)) = a(i, colResult)
Next i
Dim temp()
ReDim temp(LBound(b) To UBound(b))
For i = LBound(b) To UBound(b)
temp(i) = d(b(i, 1))
Next i
RechvM = Application.Transpose(temp)
End Function
Jacques Boisgontier
S'il y a seule formule RechercheV(), pas de problème.
Si en revanche, on recopie cette formule x1000 fois, il y aura un temps d'attente.
Dans ce cas, utiliser :
Fonction perso RechvM() matricielle plus rapide que Recherchev() classique
Si on modifie les 2.600 valeurs cherchées dans un tableau de 20.000 items,
le temps de recalcul n'est pas visuellement mesurable (5 sec pour recherchev())
-Sélectionner G2:G2673
=RechvM(F2:F2673;matable;2)
-Valider avec maj+ctrl+entrée
Dans un module
Alt+F11/Insertion module
Function RechvM(clé As Range, champ As Range, colResult)
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
a = champ.Value
b = clé.Value
For i = LBound(a) To UBound(a)
d(a(i, 1)) = a(i, colResult)
Next i
Dim temp()
ReDim temp(LBound(b) To UBound(b))
For i = LBound(b) To UBound(b)
temp(i) = d(b(i, 1))
Next i
RechvM = Application.Transpose(temp)
End Function
Jacques Boisgontier
RachelMartel
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
25
17 déc. 2013 à 19:02
17 déc. 2013 à 19:02
D'accord merci, je crois que je vais pouvoir en rester avec la RechercheV, car elle apparaît à une vingtaine de reprises à peine (une soumission)
Merci pour les infos!
Merci pour les infos!