Effectuer RECHERCHEV (excel) sur access

Bonjour,

J'ai une petite question pour un projet professionnel.

J'ai une base de donnée (BDD) sur access, cette même BDD est incorporer dans mon fichier excel.

A partir de la fonction "recherchev", je vais chercher des infos sur la base de donnée qui est dans mon fichier excel.

Etant donnée que ma BDD est plutôt grosse, je souhaite l'enlever de mon fichier excel. Le soucis c'est que je souhaiterai garder la fonction "recherchev".

Il y a t'il une possibilité (peut être avec une macro....) pour pouvoir aller cherche des données à partir d'excel sur ma BDD qui est sur access?

En espérant avoir été clair, merci d'avance

suggestion : créer dans Access une requête qui filtre puis exporte juste les données nécessaires au format xls, dans toto.xls par exemple

puis ton fichier d'exploitation xls va "piocher" dans toto.xls, avec des RECHERCHEV si nécessaire

il y a sans doute de meilleures méthodes...

humm... je peux faire un recherchev d'un fichier excel à un autre ? Je croyais que cela ne marchait que d'une feuille à une autre....

Exporte ta requête Access dans une feuille de ton classeur. Ça peut aussi s'automatiser par programmation.

le truc c'est qu'il y a juste une ligne (sur les 2000 présente sur ma BDD sur access) que je veux exporter à chaque fois ^^".

Et le truc c'est aussi que je m'y connais pas en access x)

je peux t'aider à faire ta requête access si tu veux. ça me prendrais juste les noms des colonnes, de la table et les critères pour avoir les infos que tu veux.

Oki, je vais mettre que quelques infos pour simplifier :

Nom de la table : Module

Nom des colonnes : Module / fabriquant / Rendt / Longueur / largeur

En fait, sous excel, je choisi d'abord mon fabriquant et en fonction du fabriquant, il me donne une liste de module que je choisi.

En fonction du module choisi, les infos (Rendt, L, l) sont retourné (à l'aide d'une fonction recherchev) sur des cases prédéfinies.

Mais maintenant, j'aimerai sortir ma base de donnée d'excel (pour alléger mon fichier et simplifier les MAJ) et utiliser une base de donnée sous access tout en gardant le même système :/

Voici un petit exemple de ce qu'on peut faire avec des requêtes. J'utilise une requete pour remplir un combobox des fabriquants présent dans la table, quand on change de valeur dans ce combobox, une autre requete rempli le combobox des module de ce représentant et quand on choisi un module, un dernière requête va chercher les infos de largeur et longeur. Les trois procédures sont sur le même format, ici celle pour remplir le combobox fabriquant.

Public Sub RemplirListeFabriquant()
    'Objet database - Ta BD Access
    Dim MaDB As DAO.Database
    'Objet recordset
    Dim MaRst As DAO.Recordset

    'J'efface les anciennes valeurs du combobox
    Sheets("Feuil1").cboFabriquant.Clear

    'La chaine SQL qui va aller chercher les infos dans la table
    Dim strSQL As String
    'Sélectionne les valeurs de la colonne fabriquant de la table Module
    strSQL = "SELECT DISTINCT Fabriquant FROM Module"

    'Ouvre la BD
    Set MaDB = DBEngine.OpenDatabase(ActiveWorkbook.Path & "\Data.mdb")
    'Rempli le recordset avec les valeurs obtenus par la chaine SQL
    Set MaRst = MaDB.OpenRecordset(strSQL, Type:=dbOpenSnapshot)

    'Boucle sur toutes les lignes du recordset
    Do While Not MaRst.EOF
        'Ajoute la valeur de la colonne Fabriquant dans le combobox
        Sheets("Feuil1").cboFabriquant.AddItem (MaRst("Fabriquant"))
        'Ligne suivante
        MaRst.MoveNext
    Loop

ImportQte_fin:
    Set rst = Nothing
    MaDB.Close
    Set MaDB = Nothing
End Sub

hésite pas si tu as des questions ou de la difficulté avec le VBA

EDIT:

j'ai oublié de te dire qu'il fallait que tu coche la référence à Microsoft DAO x.x object library dans l'éditeur VBA ( Menu Outils -> Références et coche la bonne )

407test.zip (31.09 Ko)

Merci beaucoup, c'est exactement ce que je cherche à faire!

Par contre, pourrais tu m'expliqué ce que tu as fait ? A part rentrer le code, tu as fait quelque chose au fichier access ?

J'essaye de l'adapter à mon fichier mais cela ne marche pas :/

EDIT :

Et si tu pouvais m'expliquer comment tu avais inséré tes cbo directement sur excel et non pas dans une userform ^^"

Salut ce que tu as ait parait très intéressant. Pour s'en servir il faut exporter sa base de données sous access ?

Autre chose, est-il possible,d'utiliser les bases de données par l'intermédiaire de formules ?

Ex : ma référence Fab1 = 2*25 +100

est il possible qu' en colonne apparaisse :

Longueur Largeur Multiple

100 1

25 2

Bon la colonne ici est foirée et ne sait pas rester en place mais en gros : Longueur 100 Multiple 1

Largeur 25 multiple 2

sachant que 25 ET 100 se situent dans la base de donnée associés aux modules correspondant

Bonjour:

-vodkaddict : j'ai rien fait de spécial au fichier access. Est-ce que tu as bien coché la référence à DAO comme je te l'ai expliqué. Vérifie aussi que cette ligne est adapté à ton code:

Set MaDB = DBEngine.OpenDatabase(ActiveWorkbook.Path & "\Data.mdb")

ici j'ouvre le fichier data.mdb dans le même répertoire que le classeur Excel. Si ton fichier Access porte un autre nom ou est ailleurs, il faut modifier. Sinon faudrait voir avec ton code. Pour les combobox, va dans Affichage, Barres d'outils et Boite à outils controles. Tu auras accès à des controles similaires a ceux que tu retrouve dans les userforms.

- OkayCompiouteur : Le SQL et DAO servent à dialoguer avec des base de données, peut-être que ça peut se faire depuis un autre fichier Excel mais honnetement je n'ai jamais essayé et je ne vois pas l'utilité. Alors oui pour le code que j'ai posté tu dois avoir une BD Access. Par contre si tu veux rester en Excel il y a des possibilité, regarde du coté des données externes et des requêtes. Pour ma par, j'aime mieux utiliser Access et autre SGBD. Pour ta deuxième question je ne suis pas sur de comprendre. Est-ce que tu veux effectuer un calcul sur les données durant l'extraction et afficher le résultat?

Ce serait le contraire. Je voudrais savoir s'il est possible d'extraire des données d'une formule :

=A1+2*B8

A1 et B8 pointent vers des références sur un autre fichier(références commerciales).

hé bien, en lieu et place de tes colonnes "rendt" et "r1", je voudrais deux colonnes réfénces et quantité.

Références comprendrait A1 et Quantité correspondante 1 (A1=A1*1)

Et B8 Quantité 2

Il s'agirait là en sorte d'extraire d'une part les variables, les constantes d'autre part ?

Je ne sais pas si j'utilise tout le bon vocabulaire.

J'espère que tu vois où je veux en venir.

EDIT

Evidemment, dans cet autre fichier les références liées à A1 et B8 correspondent à un produit nomenclaturé.

J'ai laissé un fichier en pièce jointe dans le sujet "Analyse de Formule"

Mon but final est de pouvoir créer un tableau croisé dynamique qui recoupera les références communes utilisées dans chaque formule.

Je pense que ce serait de compliqué les choses que de passer par access pour ton problème, continue sur le filon de ton autre post

Math a écrit :

Je pense que ce serait de compliqué les choses que de passer par access pour ton problème, continue sur le filon de ton autre post

Je suis étonné que personne ne sache si l'on peut isoler ou non les différentes parties additionnées ou soustraites d'une formule.

Ou cela relève-t-il peut-être d'une formule type indirect() ?

Humm... Je n'arrive pas a comprendre comment tu as fait pour mettre les boutons actions et les menus déroulant directement sur la feuille excel .

De plus, si mon fichier n'est plus dans le même dossier que mon devis, je fais comment pour modifier le chemin d'acces à "Data" ?

Encore merci

-- 17 Mai 2010, 11:28 --

Pourrais tu aussi me dire comment je pourrais mettre (par exemple) en D16 et D17, la valeur des deux combobox ?

Bonjour,

1- Pour modifier le chemin d'accès au fichier, il faut que tu changes la ligne suivante dans les procedures RemplirListeFabriquant, RemplirListeModule et GetValeurDb

la ligne à changer:

Set MaDB = DBEngine.OpenDatabase(ActiveWorkbook.Path & "\Data.mdb")

ex: si ta base de donnée est dans le répertoire "c:\Machin"

Set MaDB = DBEngine.OpenDatabase("c:\Machin\Data.mdb")

2- Pour afficher la valeur des combobox, utilise la propriété value du combobox. Ex: quand tu changes de valeurs dans le combobox cboFabriquant, tu veux que celle ci s'affiche en D16

Private Sub cboFabriquant_Change()
    'Ajoute laligne suivante ***************************
    Range("D16").Value = cboFabriquant.Value
    ' ******************************************************
    RemplirListeModule
End Sub

3- Je t'ai fait un petit vidéo montrant comment ouvrir le menu boite à outils controles et ajouter un combobox dans la feuille

35ajoutcombobox.rar (50.04 Ko)

Bonjour Math et le fofo,

Merci pour tous tes renseignements et de ta patience! .

Grace à toi, mon projet à bien avancé et je t'en remercie.

Encore merci

Rechercher des sujets similaires à "effectuer recherchev access"