Accés MySQL à partir d'Excel
Bonjour,
je cherche à accéder à ma base de donnée MySQL à partir d'une appli EXCEL mais cela me semble complexe en VBA bien entendu afin de pouvoir utiliser la puissance d'une base de donnée.
Si vous avez une idée ou un exemple, je suis preneur.
Remerciements et cordialité
bonjour,
voici une macro qui lance une requête SQL vers une DB
il faut que tu adaptes la variable connexion pour te connecter sur Mysql ainsi que la variable SQLstring pour y mettre ta requête SQL.
Sub readsqldb()
Set c = CreateObject("ADODB.Connection")
Set r = CreateObject("ADODB.Recordset")
' definition des paramètres de connexion à la DB, copié de l'onglet propriété de la définition d'une nouvelle connexion dans le menu data de excel
connexion="Provider=SQLOLEDB;Data Source=nomduserver;Database=nomdelaDB;UID=NomUtilisateur;Password=MotDePasse"
'ODBC sans DSN
'dBase
'Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=chemin\nombd.dbf;
'MS Access
'Driver={Microsoft Access Driver (*.mdb)};Dbq=chemin\nombd.mdb;Uid=NomUtilisateur;Pwd=MotDePasse;
'MS SQL Server
'Driver={SQL Server};Server=NomDuServeur;Database=nombd;Uid=NomUtilisateur;Pwd=MotDePasse;
'MS Text Drive
'Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=chemin\;Extensions=asc,csv,tab,txt;Persist Security Info=False;
'MySQL
'Driver={mysql}; database=nombd;server=NomDuServeur;uid=NomUtilisateur;pwd=MotDePasse;option=16386;
'Oracle
'Driver={Microsoft ODBC for Oracle};Server=ServeurOracle.schema;Uid=NomUtilisateur;Pwd=MotDePasse;
'Visual Foxpro
'Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=chemin\nombd.dbc;Exclusive=No;
' OLEDB
'MS Access
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin\nombd.mdb;User Id=NomUtilisateur;Password=MotDePasse;
'MS SQL Server
'Provider=SQLOLEDB;Data Source=NomServeur;Initial Catalog=nombd;User ID=NomUtilisateur;Password=MotDePasse;
'MS SQL Server avec une adresse IP
'Provider=SQLOLEDB; Data Source=xx.xx.xx.xx,1433; Network Library=DBMSSOCN; Initial Catalog=dbname;User ID=NomUtilisateur;Password=MotDePasse;
'MS Text Driver
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=chemin;Extended Properties='text;FMT=Delimited'
'Oracle
'Provider=OraOLEDB.Oracle;Data Source=nombd;User Id=NomUtilisateur;Password=MotDePasse;
'mySQL
'Provider=SQLOLEDB;Data Source=nomduserver;Database=nomdelaDB;UID=NomUtilisateur;Password=MotDePasse;
' on ouvre la connexion
c.Open connexion
' commande SQL à envoyer vers la DB
SQLstring = "SELECT * FROM Employees"
' envoi du SQL vers la connexion
r.Open SQLstring, c
Set f = r.fields
ncol = f.Count - 1 ' nombre de champs de la réponse
i = 1
For j = 0 To ncol
Cells(i, j + 1) = f.Item(j).Name 'on met les noms des champs en ligne 1
Next
Do Until r.EOF = True ' tant qu'il y a des lignes dans la réponse
i = i + 1
For j = 0 To ncol
Cells(i, j + 1) = f.Item(j).Value ' on copie les champs
Next
r.Movenext ' on passe à la ligne suivante de la réponse
Loop
r.Close
Set r = Nothing
c.Close
Set c = Nothing
End Sub
Je te remercie pour ta réponse, il me reste à me l'approprier pour faire ce que je souhaite.
Je te tiens au courant de l'évolution.
Cordialement.
second message : j'ai bien fait ma connexion à ma base mySQL
Bonsoir,
peux-tu nous indiquer la valeur de la variable connexion qui t' a permis la connexion avec ta base MySQL ? en anonymisant bien sûr.
Bonjour,
Je pense répondre à ta demande, ton code m'a bien servi à développer celui-ci.
Encore merci.
Sub lireBase()
Dim connexion As String
Set conn = CreateObject("ADODB.Connection")
Set rec = CreateObject("ADODB.Recordset")
' definition des paramètres de connexion à la DB, copié de l'onglet propriété de la définition
' d'une nouvelle connexion dans le menu data de excel
connexion = "DRIVER={MySQL ODBC 5.2 ANSI Driver};"
connexion = connexion + "DATABASE=maBase;" ' Telle que définie dans mySQL
connexion = connexion + "SERVER=localhost;"
connexion = connexion + "UID=root;"
connexion = connexion + "PWD= ;"
connexion = connexion + "OPTION=16386"
' on ouvre la connexion
conn.Open connexion
' commande SQL à envoyer vers la DB
SQLstring = "SELECT * FROM maTable"
' envoi du SQL vers la connexion
rec.Open SQLstring, conn
Set champ = rec.Fields
ncol = champ.Count - 1 ' nombre de champs de la réponse
i = 1
For j = 0 To ncol
' affiche le nom des champs
MsgBox champ.Item(j).Name
Next j
Do Until rec.EOF = True ' tant qu'il y a des lignes dans la réponse
i = i + 1
For j = 0 To ncol
' on affiche le contenu des champs
MsgBox champ.Item(j).Value
Next j
' on passe à l'enregistrement suivant
rec.Movenext
Loop
rec.Close
Set rec = Nothing
conn.Close
Set conn = Nothing
End Sub
bonjour et merci de ton retour.