Requete SQL dans un classeur fermé

Résolu
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 :


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
--
Cordialement

Winflow

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Sur quelle ligne se produit la 424 ?

    sur xSQL = "[A2:A7]" ?
    0
  3. winflow Messages postés 179 Statut Membre 22
     
    Non sur
    Set request = Source.Execute(xSQL)

    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    2. winflow Messages postés 179 Statut Membre 22
       
      très bien je le fait de suite
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. winflow Messages postés 179 Statut Membre 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
  7. winflow Messages postés 179 Statut Membre 22
     
    J'ai rien dit il y avait le débugger en route cela fonctionne je te remercie !

    Cordialement

    Winflow
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    2. winflow Messages postés 179 Statut Membre 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