Microsoft 365 VBA Requette SQL sur un autre fichier excel

Seb

XLDnaute Occasionnel
Bonjour a tous,

Je suis despéré, je n'arrive pas a effectuer une requette sur un autre fichier excel ! Je veux recuperer une valeur dans un classeur fermé mais j'ai une erreur de syntaxte.

'Définit le classeur fermé servant de base de données
Fichier = Sheets("Parametres").Range("A2")
'CONNECTION
Set Cn = New ADODB.Connection
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With

iValeur = "210013418"

NomFeuille = "Informations personnelles"
'Définit la requête

Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where MATRICULE CEG = " & iValeurCegid

Set RST = New ADODB.Recordset
Set RST = Cn.Execute(Texte_SQL2) BUGGUE de SYNTAXE

Si il y a quelqu'un qui peu m'apporter une réponse.. CA fait plusieurs jours que je tourne en rond avec cette macro, je m'arrache les cheveux !

Merci beaucoup !
Seb
 

patricktoulon

XLDnaute Barbatruc
Bonsoir
ca v"a t'aider a y voir plus clair
VB:
Fichier = Sheets("Parametres").Range("A2") 'verifier si le chemin est bien complet  ici
'CONNECTION
Set Cn = New ADODB.Connection ' instanciation de l'object adodb.connection
With Cn
'.Provider = "Microsoft.Jet.OLEDB.4.0"' c'est certainnement pas le bon moteur (c'est pour 2003 ce moteur)

.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""

.Open 'ouverture de la connection

iValeur = "210013418" 'valeur recherchée

NomFeuille = "Informations personnelles" 'verifier l'ortographe et la casse

'verifier MATRICULE CEG
Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where MATRICULE CEG = " & iValeurCegid

'c'est quoi ça iValeurCegid !!!!!!!!!!!!!!

Set RST = New ADODB.Recordset 'instanciation de l'object recordset
Set RST = Cn.Execute(Texte_SQL2)  'BUGGUE de SYNTAXE

End With
 

Oneida

XLDnaute Impliqué
Bonjour,
Seb
Relisez ce qu'a ecrit patricktoulon a propos de deux variables:
ivaleur: a priori valeur recherchee
iValeurCegid: dans la requete SQL et qui n'a aucune valeur affectee
Ou est l'erreur!
Voir aussi pour les [ ] nom de champ.
Nom de champ avec espace ou accens a eviter
 
Dernière édition:

Seb

XLDnaute Occasionnel
Bonsoir
ca v"a t'aider a y voir plus clair
VB:
Fichier = Sheets("Parametres").Range("A2") 'verifier si le chemin est bien complet  ici
'CONNECTION
Set Cn = New ADODB.Connection ' instanciation de l'object adodb.connection
With Cn
'.Provider = "Microsoft.Jet.OLEDB.4.0"' c'est certainnement pas le bon moteur (c'est pour 2003 ce moteur)

.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""

.Open 'ouverture de la connection

iValeur = "210013418" 'valeur recherchée

NomFeuille = "Informations personnelles" 'verifier l'ortographe et la casse

'verifier MATRICULE CEG
Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where MATRICULE CEG = " & iValeurCegid

'c'est quoi ça iValeurCegid !!!!!!!!!!!!!!

Set RST = New ADODB.Recordset 'instanciation de l'object recordset
Set RST = Cn.Execute(Texte_SQL2)  'BUGGUE de SYNTAXE

End With
Bonjour !

Desolé erreur de recopie de code
Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where MATRICULE CEG = " & iValeur

Je fais des test pour voir si j'arrive à me depatouiller de ca.
 

patricktoulon

XLDnaute Barbatruc
re
j'ajouterais que pour une valeur autant faire un copyfromrecordset
et ne pas s'ennuyer a décortiquer le rst
VB:
Sub test()
    Dim Cn As Object, Rst As Object, Texte_SQL2$, NomFeuille$, iValeur,Destination as range
set destination=[A1]' a modifier  à  ton gré
    Fichier = Sheets("Parametres").Range("A2") 'verifier si le chemin est bien complet ici!!!!!!!!!!!!!!
    Set Cn = New ADODB.Connection ' instanciation de l'object adodb.connection
    On Error GoTo handler
    With Cn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
        iValeur = "210013418"
        NomFeuille = "Informations personnelles" 'verifier l'ortographe et la casse
        Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where [MATRICULE CEG] = " & iValeur
        Set Rst = New ADODB.Recordset 'instanciation de l'object recordset
        Set Rst = Cn.Execute(Texte_SQL2)
        Destination.CopyFromRecordset Rst
        '--- Fermeture connexion ---
        .Close
    End With
    'destruction variables object de connection
    Set Cn = Nothing: Set Rst = Nothing
handler:
    MsgBox Err.Number & vbCrLf & Err.description
    Err.Clear
    On Error GoTo 0
    Set Cn = Nothing: Set Rst = Nothing
End Sub
 

Seb

XLDnaute Occasionnel
re
j'ajouterais que pour une valeur autant faire un copyfromrecordset
et ne pas s'ennuyer a décortiquer le rst
VB:
Sub test()
    Dim Cn As Object, Rst As Object, Texte_SQL2$, NomFeuille$, iValeur,Destination as range
set destination=[A1]' a modifier  à  ton gré
    Fichier = Sheets("Parametres").Range("A2") 'verifier si le chemin est bien complet ici!!!!!!!!!!!!!!
    Set Cn = New ADODB.Connection ' instanciation de l'object adodb.connection
    On Error GoTo handler
    With Cn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
        iValeur = "210013418"
        NomFeuille = "Informations personnelles" 'verifier l'ortographe et la casse
        Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where [MATRICULE CEG] = " & iValeur
        Set Rst = New ADODB.Recordset 'instanciation de l'object recordset
        Set Rst = Cn.Execute(Texte_SQL2)
        Destination.CopyFromRecordset Rst
        '--- Fermeture connexion ---
        .Close
    End With
    'destruction variables object de connection
    Set Cn = Nothing: Set Rst = Nothing
handler:
    MsgBox Err.Number & vbCrLf & Err.description
    Err.Clear
    On Error GoTo 0
    Set Cn = Nothing: Set Rst = Nothing
End Sub
Bonjour Patrictoulon,

Super clair ! J’essaie demain ! J’ai beau chercher j’ai du mal à trouver des tutos,

En tout cas merci je reviens demain ;)
 

dysorthographie

XLDnaute Accro
Bonjour,
Code:
    On Error GoTo handler
    With New ADODB.Connection ' instanciation de l'object adodb.connection
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
        iValeur = "210013418"
        NomFeuille = "Informations personnelles" 'verifier l'ortographe et la casse
        Texte_SQL2 = "Select * FROM [" & NomFeuille & "$] Where [MATRICULE CEG] = " & iValeur
        Destination.CopyFromRecordset .Execute(Texte_SQL2)
        '--- Fermeture connexion ---
        .Close
    End With
 

Discussions similaires

Statistiques des forums

Discussions
313 197
Messages
2 096 105
Membres
106 500
dernier inscrit
mmontagu