Rechercher : dans
Par :

Requetes SQL ACCESS sous VB EXCEL

Dernière réponse le 20 fév 2007 à 16:44:06 durden35, le 20 fév 2007 à 16:16:06 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Requetes SQL ACCESS sous VB EXCEL » dans :
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

Kobaya, le 20 fév 2007 à 16:30:48

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
A+,
Kobaya.

Répondre à Kobaya

2

 ruzakruzak, le 20 fév 2007 à 16:44:06

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.

Répondre à ruzakruzak
Collection CommentÇaMarche.net