RECHERCHEV en VBA

Bonjour,

Je fais appel aux experts en VBA, car je n'arrive pas à appliquer la fonction RECHERCHEV en VBA.

J'explique mon problème :

Nous avons une liste des codes postaux et ville dans un classeur nommé "Gestion des données"

Dans le fichier "Exemple" nous avons un UserForm, je souhaite utiliser la base de donnée (Code postal et vide) pour faire fonctionner mon UserForm

Un petit exemple :

Dans l'UserForm, si je saisie 60100, dans le TextBox Code Postal, je souhaite obtenir la ville qui correspond à se code postal, sans ouvrir la base de donnée pour prendre les informations.

C'est pour cela j'ai pensé au RECHERCHEV.

Le code si dessous à l'air de fonctionner dans une cellule.

=RECHERCHEV(50000; '[Gestion des données.xlsx]Configuration'!$A:$B;2;FAUX)

Mais j'aimerais faire la même chose en VBA.

Je précise qu'auparavant, j'utilisais le code ci-dessous pour la lecture, le problème c'est que je dois extraire la base de données dans un autre fichier.

'        With Sheets("Configuration'").Range("A4:A" & Sheets("Configuration'").[A65536].End(3).Row)

Je suis preneur s'il existe d'autres solutions pour la lecture avec le fichier fermé.

J'avais commencé, mais mois j'ai pas réussis

Sub test()
Chemin = ' À adapter
fichier = "Gestion des données.xlsx"
feuille = "Configuration"
toto = Application.VLookup(50000, "'" & Chemin & "[" & fichier & "]" & feuille & "'!" & "A4:B50000", 2, False)
Debug.Print toto
End Sub

Merci d'avance aux personnes qui prendront le temps pour moi.

Bonne journée

PS : Étant donné que le fichier est trop lourd, je les joints via CJOINT

Bonjour,

Quelques remarques :

1) Si pour les grandes villes la commune se fractionne en plusieurs codes postaux, de nombreux codes couvrent plusieurs communes, RECHERCHEV ne renvoyant que la première occurrence trouvée ne paraît alors pas adéquat...

Mais c'est en fait l'idée d'obtenir automatiquement la ville à partir du code qui n'est pas adéquate puisque dans un bon nombre de cas on sera astreint à un choix supplémentaire parmi plusieurs répondant au même code.

Il faudrait donc obtenir une liste parmi laquelle opérer le dernier choix dans une ComboBox.

2) Dans cette hypothèse, la recherche serait mieux venue d'utiliser Find, si une occurrence est trouvée, une boucle Do... Loop permet de récupérer successivement tous les noms de communes répondant au code et les affecter à une ComboBox avec AddItem, un test supplémentaire sur le nombre d'élément affectés permettra alors de distinguer s'il y en plusieurs (auquel cas l'utilisateur sélectionnera celui qui convient dans la liste) ou un seul (qui peut alors être automatiquement sélectionné pour la suite).

3) Il y a une différence entre bâtir une formule en VBA destinée à être affectée à la propriété Formula (ou une propriété connexe : FormulaR1C1, FormulaLocal...) d'un objet Range, laquelle respecte la syntaxe d'écriture d'une formule dans une feuille de calcul, et utiliser une fonction de feuille de calcul en VBA (où les arguments de la fonction doivent être fournis selon une syntaxe VBA).

Or tu utilises une syntaxe de formule Excel dans un code d'utilisation de fonction en VBA...

Eventuellement une autre possibilité serait de l'écrire complètement sous forme de formule et l'évaluer au moyen de la méthode Evaluate...

Mais il me semble que le 2 ci-dessus reste la meilleure voie pour répondre à la question.

Cordialement.

Re,

C'est vrai que je n'avais pas pensé aux codes postaux identique avec des villes différentes

Sur ce coup je suis complètement perdu,

Je ne vois absolument pas comment résoudre ce problème, tu parles de find, je vais faire une recherche, car ça me parle pas.

J'ai essayé la formule dans une cellule, puis j'ai vu qu'il a fonctionné, je me suis dit que si j'arrivais à convertir la formule en vba, peut être que ça fonctionnerait, apparemment c'est pas une bonne idée.

Si vous avez d'autres pistes je suis preneur.

Rechercher des sujets similaires à "recherchev vba"