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.

Rechercher des sujets similaires à "acces mysql partir"