Requete SQL dans un classeur fermé

Résolu
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   -  
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrais récupérer les valeurs contenues dans la plage A2:A7 de mon claxsseur fermé pour cela j'ai utilisé ce bout de code :


Dim cn As ADODB.Connection
Dim cheminFichier As String
Dim nomFeuille As String, texte_SQL As String
Dim request As ADODB.Recordset
Dim xSQL As String

If Application.FileDialog(msoFileDialogFilePicker).Show = True Then
'Définit le classeur fermé servant de base de données
cheminFichier = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
MsgBox (cheminFichier)
Else
MsgBox ("Veuillez cliquer sur ouvrir svp")
Exit Sub
End If


'Nom de la feuille dans le classeur fermé
nomFeuille = "Informations générales"
Set cn = New ADODB.Connection

'--- Connexion ---
With cn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& cheminFichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'
'... la requête ...
'
xSQL = "[A2:A7]"
Set request = New ADODB.Recordset
Set request = Source.Execute(xSQL)

MsgBox (request)

'--- Fermeture connexion ---
request.Close
Set request = Nothing
cn.Close
Set cn = Nothing

Hélas j'ai l'erreur d'exécution 424 ...

Merci d'avance
A voir également:

6 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
si les données ne sont pas de m^me type on ne peut pas utiliser ADO ou difficilement...

La solution possible avec des macrosXL4 dites de Walkenbach à adapter à ton contexte et à compléter (cheminfeuille, nomfeuille...)

https://www.cjoint.com/?3KeocXOwfn4

1
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Bonjour,

Sur quelle ligne se produit la 424 ?

sur xSQL = "[A2:A7]" ?
0
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
Non sur
Set request = Source.Execute(xSQL)

0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Ok, c'est bien xSql qui est erroné :o)

Je te propose une solution en début d'après midi mais pour éviter des complications "usine à gaz" il faudrait que tu rebaptises ta feuille avec un underscore
"Informations_générales"

mais comme tu importes peu de données ( 5)il y a peut-^tr + simple sans ouvrir le fichier...
0
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
très bien je le fait de suite
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Ci dessous proposition
(tu n'as plus besoin de cocher les références ni de refermer à la fin)

Sub ouvrir()
Dim Source As Object
Dim CheminFichier As String
Dim NomFeuille As String, Plage As String, Texte_SQL As String
Dim Requete As Object

Set Source = CreateObject("ADODB.Connection")
Set Requete = CreateObject("ADODB.Recordset")

If Application.FileDialog(msoFileDialogFilePicker).Show = True Then
'Définit le classeur fermé servant de base de données
CheminFichier = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
MsgBox (CheminFichier)
Else
MsgBox ("Veuillez cliquer sur ouvrir svp")
Exit Sub
End If

'Nom de la feuille dans le classeur fermé
NomFeuille = "Informations_générales"
' Plage à importer
Plage = "A2:A7"

'--- Connexion ---
With Source
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& CheminFichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'----- Requete -----
Texte_SQL = "SELECT * FROM [" & NomFeuille & "$" & Plage & "]"
Set Requete = Source.Execute(Texte_SQL)

'--- restitution sur feuille classeur cible
ActiveSheet.Range("B2").CopyFromRecordset Requete
End Sub


attention: les données doivent ^tre de m^me type dans A2:A7 ; nombre, date, texte....

je t'envoie une autre méthode par macroXL4 un peu plus tard
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
Les données ne sont pas de même type dans ce cas comment faire ? Comment accéder aux données retournées ?
0
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
J'ai rien dit il y avait le débugger en route cela fonctionne je te remercie !

Cordialement

Winflow
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
il faut dézipper et non ouvrir le zip mais:
à adapter à ton contexte et à compléter (cheminfeuille, nomfeuille...)

Tu as fait tout ça en 10 minutes (envoi à 14:05 ta réaction à 14:18 ) ??
0
winflow Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
Non non du tout je suis encore dessus seulement maintenant que j'ai la bonne fonction qui va bien que j'ai compris comme elle fonctionnait ça va mieux
0