Vlookup, textbox et liens vers fichier fermé

Bonjour à tous

Nouveau sur le forum. Je le parcours dans tous les sens régulièrement pour trouver des solutions à mes problèmes de VBA mais là, rien, que dalle ... je sèche. Alors me voici inscrit et j'espère que quelqu'un pourra me venir en aide ...

Voici le problème :

J'ai deux fichiers excel : l'un est une simple base de données (appelé BD), composé de milliers de lignes et d'une vingtaine de colonnes sur la Feuil1; l'autre est un document de travail(appelé Activité), composé de plusieurs feuilles (mais je ne travaille que sur une feuille, appelée Etats, les autres sont des exécutions de macros provenant de données de ma feuille Etats). J'ai créé un userform derrière un bouton. Ce userform comporte plusieurs textbox et combobox. Une fois que toutes les cellules du formulaire sont renseignées, je valide et ces données alimentent mon tableau de la feuille Etats. Jusque là, je m'en suis sorti.

Mais à quoi sert le fichier Base de données dans tout ça me direz vous ? Justement ! Je souhaite faire évoluer mon userform afin qu'en court de saisie de mon formulaire, la valeur d'une des textbox (appelée RaisonSociale) s'alimente automatiquement après la saisie de la textbox précédente (appelée SIRET). Sachant que mon fichier Base de données doit rester fermé (et même idéalement accessible en ouverture uniquement via un mot de passe) et hébergé dans un autre répertoire. Dans excel, je maitrise parfaitement la fonction RechercheV. Mais je crois qu'en VBA, il faut utiliser vlookup... Et là je sèche... !

En somme, j'aimerai depuis ma feuille excel, cliquer sur mon bouton Formulaire, renseigner les textbox les unes après les autres (suivant l'ordre des tabulations que j'ai renseigné), et lorsque je tabule après la saisie de la textbox Siret, que la textbox RaisonSociale s'alimente automatiquement de la valeur correspondante hébergée dans le fichier BD. Et il faudrait bien entendu que l'on ne puisse pas écrire dans cette textbox RaisonSociale.

J'espère avoir été clair et qu'une bonne âme voudra bien me trouver le bon code ...

Ça n’inspire personne ...?

Bonsoir, plutôt que d'utiliser une fonction de feuille Excel sous VBA, pourquoi ne pas utiliser la "vrai" fonction de VBA : Find

Find renvoie un objet range qui correspond à la cellule qui contient la valeur cherchée, ensuite il suffit de faire un Offset pour "décaler" le résultat sur la valeur voulue... :

Une exemple de code trouvé sur le NET pour expliquer cette fonction :

Option Explicit

Sub Cherche()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String

'********* à adapter ***********
'affectation de valeurs aux variables :
    'on cherche le mot "Trouve"
Valeur_Cherchee = "Trouve"
    'dans la première colonne de la feuille active
Set PlageDeRecherche = ActiveSheet.Columns(1)
'*******************************

'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
    'ici, traitement pour le cas où la valeur n'est pas trouvée
    AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
    'ici, traitement pour le cas où la valeur est trouvée
    AdresseTrouvee = Trouve.Address
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub

vbMBHB

Merci pour ce retour. Je n’en connias pas assez VBA et donc je ne connais pas find. Je testerai demain mais je ne vois pas dans le code la référence à un fichier tiers fermé ... De plus, dans ma base de données, on peut retrouver la valeur cherchée dans deux colonnes différentes, donc en fonction du décalage dont tu parles, je pourrais retrouver un résultat insatisfaisant. C’est pour cette raison que je pensais privilégier la recherchev ou vlookup dans mon formulaire, ce qui me permettrai de cibler la colonne dans laquelle cherchée et celle dans laquelle je récupère le résultat.

Mais je vais tenter d’adapter ton exemple avec mes faibles notions ... à suivre donc

Reste à savoir si cette fonction marche avec un fichier fermé. Sinon sur cette ligne :

Set PlageDeRecherche = ActiveSheet.Columns(1)

il suffit de mettre la "plage" de recherche où vous cherchez la valeur de votre SIRET. Si la raison sociale est deux colonnes plus loins de ce numéro de SIRET alors il suffira de faire :

Raison_Sociale = Trouve.OffSet(,2).Value

vbMBHB

Bonjour

J'ai testé ces lignes de code mais ... je ne parviens pas à les dompter. Je ne suis pas assez pointu pour les adapter à mon cas.

Je poursuis donc mes recherches ...

J'ai tenté la rédaction suivante mais ... évidemment ca ne fonctionne pas (ca doit être du petit nègre pour VBA) :

'Alimentation automatique de la textbox RaisonSociale en résultat de la saisie de la textbox Siret

Private Sub SIRET_AfterUpdate()

RaisonSociale.Value = _

Application.WorksheetFunction.VLookup(Siret.Value, Workbooks("C:\Users\moi\Desktop\MaBaseDeDonnées").Worksheets("Feuil1").Range("D:G"), 4, False)

If Err.Value <> 0 Then RaisonSociale.Value = "Siret non connu. Contacter l'administrateur."

End Sub

Rechercher des sujets similaires à "vlookup textbox liens fichier ferme"