Requetes SQL ACCESS sous VB EXCEL
Fermé
durden35
Messages postés
7
Date d'inscription
mercredi 15 novembre 2006
Statut
Membre
Dernière intervention
26 juin 2007
-
20 févr. 2007 à 16:16
ruzakruzak Messages postés 459 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 31 mai 2007 - 20 févr. 2007 à 16:44
ruzakruzak Messages postés 459 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 31 mai 2007 - 20 févr. 2007 à 16:44
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)
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)
A voir également:
- Requetes SQL ACCESS sous VB EXCEL
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Comment calculer la moyenne sur excel - Guide
2 réponses
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
247
20 févr. 2007 à 16:44
20 févr. 2007 à 16:44
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.
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.
Kobaya
Messages postés
282
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
10 janvier 2008
214
20 févr. 2007 à 16:30
20 févr. 2007 à 16:30
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
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