Bonjour
Depuis quelques années, j'exécute des requêtes Access à partir d'une feuille Excel (cf code vba ci dessous). Et cela fonctionne à merveille.
Or depuis quelques temps, mes requêtes sont de plus en plus complexe et j'utilise donc non plus Access mais "SQl server management Studio" pour créer mes requêtes.
Or j'aimerais toujours pourvoir exécuter mes requêtes Sql à partir d'Excel mais mes connaissance ne sont pas aussi poussées.
Est il possible, de créer un code vba du même type que celui ci dessous où je ferais appelle non pas à une requête Access mais à une requête SQL Server
je précise que mes requetes SQL Server sont déjà créer dans SQl server management Studio.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Sub test() Dim sql As String Dim GenereCSTRING As String Dim Debut As Object Dim Fin As Object Dim Cm As Object 'Pour utiliser une requête parametrés il faut utiliser l'oblet Command! Dim cn As Object 'Pour ce connecter à un base de données Access il faut utiliser l'objet Connection! Dim rs As Object Dim i As Integer Sheets("feuil1").Select sql = "SELECT * FROM requete" ' je détermine une requête sql qui pointe sur ta requête Acces." Set cn = CreateObject("ADODB.Connection") Set Cm = CreateObject("Adodb.Command") 'MsgBox ThisWorkbook.Path GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=chemin\BaseDonnee_Access.accdb;;Persist Security Info=False" 'Je defini un chêne de texte qui contient les information de ma connection. cn.Open GenereCSTRING 'J'ouvre ma connection. Cm.CommandText = sql 'je passe ma requête à mon objet command Cm.ActiveConnection = cn 'j'affecte ma connection à ma commande Const adDate = 7 'defini le type de parametre Set Debut = CreateObject("ADODB.Parameter") Debut.Name = "debut": Debut.Type = adDate: Debut.Value = CDate(Format(ThisWorkbook.Sheets("feuil2").Range("B97").Value, "yyyy-mm-dd hh:mm")): Cm.Parameters.Append Debut Set Fin = CreateObject("ADODB.Parameter") 'c'est avec l'objet Parameter que je vais reseigner les parmetres de ma requête Access. Fin.Name = "Fin": Fin.Type = adDate: Fin.Value = CDate(Format(ThisWorkbook.Sheets("Feuil2").Range("G97").Value, "yyyy-mm-dd hh:mm")): Cm.Parameters.Append Fin Set rs = Cm.Execute 'on recupere le résultat de la requête. With ThisWorkbook.Sheets("Feuil1") For i = 0 To rs.Fields.Count - 1 'On place le nom des champs sur la ligne 4 de ma feuille Excel .Range("A1").Offset(0, i) = rs(i).Name Next .Range("A2").CopyFromRecordset rs 'la on copie le résultat de la requête!
Partager