Requete sql de excel vers access

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
l
loic85.ld
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 22 février 2017
Version d'Excel : 2010

Message par loic85.ld » 21 avril 2018, 18:44

Bonjour

Est possible depuis excel d'imposer une requete sur ACCESS avec une variable de la ligne WHERE = une cellule de mon Excel ?

Exemple ci dessous + fichier pj


SELECT test.[Champ2]
FROM test
WHERE (((test.[Champ1])=VARIABLE]))

Actuellement j'ai simplement lié excel avec access , les requette basic fonctionne

merci pour votre aide

loic
Capture.JPG
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'448
Appréciations reçues : 142
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 22 avril 2018, 04:46

Bonjour Loic

Et en nommant la cellule contenant ta variable !?

Puis dans ta requête
SELECT test.[Champ2]
FROM test
WHERE (((test.[Champ1])=CelluleNommée]))
A+
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 22 avril 2018, 08:13

Bonjour,

Une piste à creuser (encadré par des apostrophes si c'est un String) :
Private Sub Requete()

    Dim ConnectBD As Object
    Dim Rs As Object
    Dim CheminBase As String
    Dim ChaineSQL As String
    Dim Variable As String
    
    Set ConnectBD = CreateObject("ADODB.Connection")
    Set Rs = CreateObject("ADODB.Recordset")
    
    'adapter le chemin de la base de données
    CheminBase = "E:\Dossiers1\SousDossiers\MaBase.mdb"
    
    With ConnectBD
    
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = CheminBase
        .Open
        
    End With
    
    Variable = Range("A1").Value
    
    ChaineSQL = "SELECT * "
    ChaineSQL = ChaineSQL & "FROM test "
    ChaineSQL = ChaineSQL & "WHERE Champ1 = '" & Variable & "'"
    
    With Rs
    
        .CursorType = 1
        .LockType = 3
        
        .Open ChaineSQL, ConnectBD
        
        Do Until .EOF
        
            Debug.Print .Fields("Champ2") '<--- récup des valeurs retournées, à adapter !
            .MoveNext
            
        Loop
        
    End With
    
    ConnectBD.Close
    
    Set ConnectBD = Nothing
    Set Rs = Nothing

End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 5'610
Appréciations reçues : 421
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019 + 365

Message par 78chris » 22 avril 2018, 08:14

Bonjour
Coucou Bruno :wink:

Une piste sans VBA http://www.excel-formations.fr/Trucs_as ... CESS01.php
1 membre du forum aime ce message.
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
l
loic85.ld
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 22 février 2017
Version d'Excel : 2010

Message par loic85.ld » 23 avril 2018, 14:21

merci beaucoup pour ensemble de vos pistes , je test et je vous reviens

loic
l
loic85.ld
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 22 février 2017
Version d'Excel : 2010

Message par loic85.ld » 23 avril 2018, 15:24

bonjour à tous ,

Malheureusement la premier solution ne fonctionne pas voir ( image 1 et 2).

Pour la solution VBA j'ai une erreur sur la commande "open" :

Private Sub Requete()

Dim ConnectBD As Object
Dim Rs As Object
Dim CheminBase As String
Dim ChaineSQL As String
Dim Variable As String

Set ConnectBD = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")

'adapter le chemin de la base de données
CheminBase = "H:\Projet\ISAE\BasePointcontrole.accdb"

With ConnectBD

.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = CheminBase
.Open "bug à ce niveau"

je pense que le provider Microsoft.Jet.OLEDB.4.0 n'est peut etre pas installé chez moi ?

merci beaucoup

loic
Captur2.JPG
Capture1.JPG
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 5'610
Appréciations reçues : 421
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019 + 365

Message par 78chris » 23 avril 2018, 18:22

Bonjour

Concernant Microsoft.Jet.OLEDB ta copie d'écran affiche la version 6 donc à adapter dans le code VBA
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message