VBA vlookup
Résolu/Fermé
Dmouha
-
16 déc. 2010 à 15:29
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 déc. 2010 à 01:20
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 déc. 2010 à 01:20
12 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
16 déc. 2010 à 18:03
16 déc. 2010 à 18:03
Bonjour,
Ce code fonctionne parfaitement, bien qu'il me semble très bizarre :selon les valeurs de F4 et D4, il pourrait générer des référence circulaires !
Comme on n'a aucune information sur ces valeurs, je considère que tu as pris toutes les précautions pour que cela ne se produise pas.
Les #NA sont normaux, ils signifient simplement que l'information cherchée ne se situe pas dans la plage $A$8:$A$10 (ou que la plage n'est triée dans l'ordre).
Un exemple sur http://cijoint.fr permettrait de mieux comprendre ce que tu veux faire.
Ce code fonctionne parfaitement, bien qu'il me semble très bizarre :selon les valeurs de F4 et D4, il pourrait générer des référence circulaires !
Comme on n'a aucune information sur ces valeurs, je considère que tu as pris toutes les précautions pour que cela ne se produise pas.
Les #NA sont normaux, ils signifient simplement que l'information cherchée ne se situe pas dans la plage $A$8:$A$10 (ou que la plage n'est triée dans l'ordre).
Un exemple sur http://cijoint.fr permettrait de mieux comprendre ce que tu veux faire.
OK le le problème c est que les données ne sont pas triées existe - il un équivalent pour les données non triées?
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
17 déc. 2010 à 09:51
17 déc. 2010 à 09:51
Bonjour
La formule que tu utilise recherche une valeur approchée dans une liste triée, Excel n'offre pas de fonction de recherche d'une valeur approchée dans une liste non triée
Par contre il peut rechercher une valeur exacte dans une liste non triée avec la même fonction et une syntaxe plus complète :
Pour ma part je préfère utiliser la syntaxe locale (le français) équivalente :
La formule que tu utilise recherche une valeur approchée dans une liste triée, Excel n'offre pas de fonction de recherche d'une valeur approchée dans une liste non triée
Par contre il peut rechercher une valeur exacte dans une liste non triée avec la même fonction et une syntaxe plus complète :
Sheets("VQS").Range("G" & snap).Formula = "=vlookup(" & LTrim(Str(snap)) & "," & "$A$8:$G$10" & ",7, FALSE" & ")"
Pour ma part je préfère utiliser la syntaxe locale (le français) équivalente :
Sheets("VQS").Range("G" & snap).FormulaLocal = "=RECHERCHEV(" & LTrim(Str(snap)) & ";" & "$A$8:$G$10" & ";7; FAUX" & ")"
Bonjour,
Mon gros problème c est que j'ai aucune valeur numérique. Mon but c est de rechercher deux valeurs litérales si elle sont égales je prends la valeur de 7 case a côté et sa marche pour une petite plage et quand la plage s'aggrandit sa ne marche plus
Mon gros problème c est que j'ai aucune valeur numérique. Mon but c est de rechercher deux valeurs litérales si elle sont égales je prends la valeur de 7 case a côté et sa marche pour une petite plage et quand la plage s'aggrandit sa ne marche plus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 17/12/2010 à 12:54
Modifié par Patrice33740 le 17/12/2010 à 12:54
Re,
Au risque de me répéter, met ton fichier (expurgé des renseignement confidentiels) sur http://cijoint.fr. et met le lien dans ton prochain post.
Cela nous permettra de mieux comprendre ce que tu veux faire.
Cordialement
Patrice
Au risque de me répéter, met ton fichier (expurgé des renseignement confidentiels) sur http://cijoint.fr. et met le lien dans ton prochain post.
Cela nous permettra de mieux comprendre ce que tu veux faire.
Cordialement
Patrice
J'ai enlevé toutes les infos confidentiels
http://www.cijoint.fr/cjlink.php?file=cj201012/cijRpEXWUA.xls
Merci de ton aide
http://www.cijoint.fr/cjlink.php?file=cj201012/cijRpEXWUA.xls
Merci de ton aide
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 20/12/2010 à 18:00
Modifié par Patrice33740 le 20/12/2010 à 18:00
Re,
Essaie de remplacer ton code par celui-ci :
Cordialement
Patrice
Essaie de remplacer ton code par celui-ci :
Sub filer_name_collect() ' Cette fonction permet de remplir automatiquement ' le noom des filers dans le tableau qtrees ' Il utilise le tableau volume pour se reperer ' (=RECHERCHEV(A19;$A$7:$M$14;7:FAUX) est la formule utilisée) ' ' Quand le trableau de volumes ne deborde pas Application.EnableEvents = False If Sheets("vtest").Range("D3").Value <= 7 Then For snap = Sheets("vtest").Range("E4") - Sheets("vtest").Range("D4") To Sheets("vtest").Range("E4") - 1 Sheets("VQS").Range("G" & snap).FormulaLocal = "=RECHERCHEV(A" + CStr(snap) + ";$A$8:$G$14;7;FAUX)" Next Else arret = Sheets("vtest").Range("E3") - 1 For snap = Sheets("vtest").Range("F4") - Sheets("vtest").Range("D4") To Sheets("vtest").Range("F4") - 1 Sheets("VQS").Range("G" & snap).FormulaLocal = "=RECHERCHEV(A" + CStr(snap) + ";$A$8:$G$" + CStr(arret) + ";7;FAUX)" Next End If Application.EnableEvents = True End Sub
Cordialement
Patrice
Sa marche impecable peux tu m'expliquer quel était le problème. Comme ça je ne j'aurais appris une chose! aujourd'hui et Vraiment merci
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié par Patrice33740 le 20/12/2010 à 18:27
Modifié par Patrice33740 le 20/12/2010 à 18:27
Bonjour,
La formule à utiliser est du type :
=RECHERCHEV(A55;$A$8:$G$50;7;FAUX)
Dans ton exemple il y avait :
=RECHERCHEV(A55;A8:G50;7)
Il est indispensable d'utiliser ;FAUX dans la formule pour trouver la correspondance exacte de la valeur cherchée dans une zone où les valeurs ne sont pas triées.
Quand on omet cet argument, les valeurs de la première colonne de la zone de recherche doivent être classées en ordre croissant, sinon, il se peut que RECHERCHEV ne renvoie pas la bonne valeur.
Il est préférable d'utiliser $A$8:$G$50 au lieu de A8:G50, cela fixe la zone de recherche dans le cas ou tu devrais étendre la formule manuellement.
D'autre part, pour éviter que cette procédure interfère avec Worksheet_Change, il vaut mieux désactiver les évènements pendant son exécution en mettant :
Application.EnableEvents = False
au début de la procédure et en terminant par :
Application.EnableEvents = True
ATTENTION : cette dernière ligne est érronée dans mon code, il faut mettre = True au lieu de = False
Cordialement
Patrice
La formule à utiliser est du type :
=RECHERCHEV(A55;$A$8:$G$50;7;FAUX)
Dans ton exemple il y avait :
=RECHERCHEV(A55;A8:G50;7)
Il est indispensable d'utiliser ;FAUX dans la formule pour trouver la correspondance exacte de la valeur cherchée dans une zone où les valeurs ne sont pas triées.
Quand on omet cet argument, les valeurs de la première colonne de la zone de recherche doivent être classées en ordre croissant, sinon, il se peut que RECHERCHEV ne renvoie pas la bonne valeur.
Il est préférable d'utiliser $A$8:$G$50 au lieu de A8:G50, cela fixe la zone de recherche dans le cas ou tu devrais étendre la formule manuellement.
D'autre part, pour éviter que cette procédure interfère avec Worksheet_Change, il vaut mieux désactiver les évènements pendant son exécution en mettant :
Application.EnableEvents = False
au début de la procédure et en terminant par :
Application.EnableEvents = True
ATTENTION : cette dernière ligne est érronée dans mon code, il faut mettre = True au lieu de = False
Cordialement
Patrice
Dmouha
Messages postés
4
Date d'inscription
jeudi 19 août 2010
Statut
Membre
Dernière intervention
22 décembre 2010
22 déc. 2010 à 10:58
22 déc. 2010 à 10:58
Merci Franchement utile ce que j'ai appris je pense que je ne ferais plus cette erreur!
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
23 déc. 2010 à 01:20
23 déc. 2010 à 01:20
Bonnes Fêtes et au plaisir de te relire sur le forum