Requete SQL dans un classeur fermé
Résolu
winflow
Messages postés
179
Statut
Membre
-
winflow Messages postés 179 Statut Membre -
winflow Messages postés 179 Statut Membre -
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 :
Hélas j'ai l'erreur d'exécution 424 ...
Merci d'avance
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:
- Requete SQL dans un classeur fermé
- Rouvrir onglet fermé chrome - Guide
- Application se ferme toute seule android - Guide
- Imprimer un classeur excel sur mac - Guide
- Utiliser pc portable fermé - Guide
- Symbole ouvert fermé ✓ - Forum Loisirs / Divertissements
6 réponses
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
La solution possible avec des macrosXL4 dites de Walkenbach à adapter à ton contexte et à compléter (cheminfeuille, nomfeuille...)
https://www.cjoint.com/?3KeocXOwfn4
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...
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...
Ci dessous proposition
(tu n'as plus besoin de cocher les références ni de refermer à la fin)
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
(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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Les données ne sont pas de même type dans ce cas comment faire ? Comment accéder aux données retournées ?