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