Requetes SQL ACCESS sous VB EXCEL

durden35 Messages postés 7 Statut Membre -  
ruzakruzak Messages postés 466 Date d'inscription   Statut Membre -
Bonjour,

QQun connait il un peu comment utiliser le langage SQL issues de ACCESS dans Visual Basic Excel. Pour effectuer un programme, je dois d abord faire des requetes sous ACCESS et ensuite importer les données dans des onglets sur excel. Je voudrais automatiser ces requetes sur excel et ne plus passer par ACCESS pour faire une sélection d'une plage de dates par exemple (éventuellement créer un bouton dans excel afficher une boite de dialogue qui permette d effectuer des requetes que l'on paramete)
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. ruzakruzak Messages postés 466 Date d'inscription   Statut Membre 247
     
    Bonjour.

    Un peu de code vite fait, avec l'enregistreur de macros :

    Sub test_connecteur()
    '
    With ActiveSheet.QueryTables.Add(Connection:=Array("ODBC;DSN=MS Access Database;DBQ=<le chemin vers ma base>;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"), Destination:=Range("A3"))
    .CommandText = "<ma requète SQL ici>"
    .Name = "Lancer la requête à partir de MS Access Database"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .Refresh BackgroundQuery:=False
    End With
    End Sub

    Je suis passé par Données > Données Externes > Créer une Requète, en enregistrant avec l'enregistreur de macros...

    A ton tour ! Et n'hésite pas à consulter l'aide sur ODBC pour comprendre les détails.
    3
  2. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    bonjour durden,

    je n'ai pas Access sur mon poste, donc j'ai pas pu testé, mais voici un exemple adapté d'Oracle. il faut juste adapter la variable de connexion à Access

        strSQL = "SELECT Count(*) FROM tfcrcrm"
        Set objRS = New Recordset
        
        objRS.Open strSQL, "Provider=MSACCESS. ;Password=user;User ID=user;Data Source=C:\MaBase.mdb"
    
        lngLigne = 1
        lngNbFields = objRS.Fields.Count - 1
        ' écriture les noms des champs renvoyés dans la requête
        For lngIndex = 0 To lngNbFields
            Cells(1, lngIndex + 1).Value = objRS.Fields(lngIndex).Name
        Next
        lngLigne = lngLigne + 1
        ' écriture du recordset dans la feuille
        Do While Not objRS.EOF
            For lngIndex = 0 To lngNbFields
                Cells(lngLigne, lngIndex + 1).Value = objRS(lngIndex).Value
                DoEvents
            Next
            lngLigne = lngLigne + 1
            objRS.MoveNext
        Loop
        objRS.Close
        Set objRS = Nothing: Set objConn = Nothing
    0