IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

RechercheV dans Access depuis Excel dans requête


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut RechercheV dans Access depuis Excel dans requête
    Bonjour,
    J'ai la fonction suivante qui me permet de récupérer des données d'Access depuis Excel.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Function RecherchevAccess(ChampRecherche, valeurRecherche, champRetour, tbl, base)
        Dim GenereCSTRING As String
        Dim RS
     
    If Connexion.State = 0 Then
         Fichier = "F: " & "\" & base
         GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";"
         Connexion.Open GenereCSTRING
    End If
     
         SQL = "Select " & champRetour & " FROM " & tbl & " Where " & _
            ChampRecherche & "='" & valeurRecherche & "'"
     
       Set RS = CreateObject("ADODB.Recordset")
       RS.Open SQL, Connexion, 1, 3
       If RS.EOF = False Then RecherchevAccess = RS(champRetour)
       RS.Close
     
    End Function
    J'aimerais l'adapter pour faire la recherche dans une requête que j'ai déjà enregistré dans Access au lieu de rechercher dans une table Access.

    Comme je ne savais pas comment l'écrire et que je n'ai pas pu trouver l'information que je cherchais dans Internet, j'ai essayé de créer une requête à partir de ma requête dans Access. Je n'ai pas pu recréer exactement la même chose que j'ai besoin dans ma fonction, mais ça m'a donné le code SQL suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Requête22.Champ1
    FROM Requête22;
    J'ai donc essayé d'utiliser la même syntaxe (Requête22.Champ1) pour modifier ma fonction, mais ça ne fonctionne pas et je n'ai plus d'idée quoi faire. Voici la fonction modifiée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Function RecherchevAccess(ChampRecherche, valeurRecherche, champRetour, tbl, base)
        Dim GenereCSTRING As String
        Dim RS
     
    If Connexion.State = 0 Then
         Fichier = "F: " & "\" & base
         GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";"
         Connexion.Open GenereCSTRING
    End If
     
         SQL = "Select " & tbl & "." & champRetour & " FROM " & tbl & " Where " & _
            "((" & tbl & "." & ChampRecherche & ")='" & valeurRecherche & "');"
     
        Set RS = CreateObject("ADODB.Recordset")
        RS.Open SQL, Connexion, 1, 3
        If RS.EOF = False Then RecherchevAccess = RS(tbl & "." & champRetour)
        RS.Close
     
    End Function

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu n'a rien à modifier ,juste changer ta formule dans Excel!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = RecherchevAccess(ChampRecherche; valeurRecherche; champRetour;"MaReqête";base)

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Access ne différencie pas table et requête sous réserve qu'il ne s'agisse pas d'une requête paramétrée.

    Le FROM se limitant à une table ou requête unique le préfixe n'est pas obligatoire devant le champ.

    Tbl correspond bien au nom de la requête enregistrée dans Access ?

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut
    Merci. J'y avais pensé aussi et pourtant ça ne semble pas fonctionner. Je viens juste de le tester de nouveau et j'ai toujours le résultat "#valeur". Je vais continuer à chercher. C'est peut-être juste un petit détail qui m'échappe. Pourtant, j'ai vérifié la syntaxe...

  5. #5
    Invité
    Invité(e)
    Par défaut
    toujours dans ta formule, fais attention à tous les élément que tu fournis à ta fonction champRetour="Champ1" par exemple!

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut
    @78chris
    Pas sûre ce qu'est une requête paramétrée. J'ai fait une requête avec deux champs.

    Champ: Champ1
    Table: Table 1
    Total : Groupé par

    Champ: SommeDeChamp28: Champ28
    Table: Table 1
    Total: Somme

    Le premier champ contient des numéros de département et regroupe les numéros de département identiques. Le deuxième champ additionnne les données du 2e champ pour chaque numéro de department.

    Merci pour la réponse. Ça m'aide à voir un peu plus clair et me rassure que je ne dois pas être loin de la solution.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code MaRequête : Sélectionner tout - Visualiser dans une fenêtre à part
    select Cp,Sum(Valeur) as Addition group by cp

    Code MaFormule : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    '= RecherchevAccess(ChampRecherche, valeurRecherche, champRetour, tbl, base)
    = RecherchevAccess("cp"; "75013"; "Addition";"MaRequête";base)

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut
    Ah, super! Ça fonctionne.

    J'ai tout recommencé en prenant mon fichier initial et ça a fonctionné. Peut-être qu'une connexion s'était brisée en court de route à force de manipulations. Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Import de données dans Access depuis Excel
    Par Blado_sap dans le forum Access
    Réponses: 1
    Dernier message: 13/01/2015, 20h03
  2. [AC-2010] Renseigner un champ Liste de choix dans Access depuis Excel 2010
    Par polemos dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2014, 16h07
  3. Réponses: 5
    Dernier message: 04/11/2012, 21h02
  4. Importer un fichier text dans Access depuis Excel
    Par alaingui dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/08/2008, 14h58
  5. [VBA-A]Travailler dans un fichier Excel dans Access
    Par pilou0013 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/05/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo