Intéraction avec BDD MySQL

Bonjour,

Voilà trois jours que je cherche à faire communiquer mon fichier excel avec ma BDD MySQL.

Après avoir corrigé plusieurs problèmes je me retrouve une nouvelle fois face à moi-même, sauf que ce coup-ci je sèche totalement..

Mon problème est que je n'arrive pas à procéder à l'envoie de ma requête vers la BDD.

Voici mon code :

''''''''''''''''''''''''''''Enregistrement BDD''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'1) Connexion BDD

Private Sub ConnectionDB()
Dim S As String
    Set oConnect = New ADODB.Connection
    S = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
        "SERVER=" & Sheets("BasedeDonnees").Range("B30").Text & ";" & _
        "DATABASE=" & Sheets("BasedeDonnees").Range("B31").Text & ";" & _
        "USER=" & Sheets("BasedeDonnees").Range("B32").Text & ";" & _
        "PASSWORD=" & Sheets("BasedeDonnees").Range("B33").Text & ";" & _
        "Option=3"
      oConnect.Open S
     MsgBox ("La BDD est ouverte")
End Sub

'2) Ajout à la BDD
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String

    Set Rs = New ADODB.Recordset
    Call ConnectionDB
    With Sheets(1)
       Requete = "INSERT INTO client(idClient, nomClient, adresseClient, villeClient, telContact, mailContact, siret) VALUES(" & _
                .Cells(2, 1) & ", '" & _
                .Cells(2, 2) & "', '" & _
                .Cells(2, 3) & "', '" & _
                .Cells(2, 4) & "', '" & _
                .Cells(2, 5) & "', '" & _
                .Cells(2, 6) & "', '" & _
                .Cells(2, 7) & "')"
                MsgBox (4)

       Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
    End With
    oConnect.Close
    Set Rs = Nothing
End Sub

Ma fonction "connectionDB" fonctionne bien, mais lorsque j'arrive à la ligne "RS.Open Requete, oConnect, adOpenDynamic, adLockOptimistic" c'est là que ca foire, et plus particulierement sur "RS.Open Requete".

J'avais comme retourn jusqu'à maintenant "erreur 3709". Après avoir fait plusieurs tests pour tenter de corriger mon problème j'ai maintenant une nouvelle erreur.

Si quelqu'un serai capable de m'aider ce serai vraiment bien, parce que je commence à être cruellement à court d'idées pour résoudre ce problème.


Petite précision : pour mon code je me suis inspiré de celui que vous trouverai en pièce jointe, que j'ai testé et qui marche parfaitement.

53vba-mysql.xlsm (32.46 Ko)

Bonjour Auzingueur le forum

bah oui l'autre elle marche, car l'autre elle est bien écrite, elle n'a pas été modifiée par Auzingueur !!!!

à ton avis pourquoi il y a au dessus de tes macros qui marchent

Public oConnect As ADODB.Connection

une variable public mais pourquoi donc ???

allez je te laisse chercher 5 minutes et je reviens

a+

Papou

Ma faute, je n'ai pas mis la totalité de mon code (parce que les 2 premières fonctions ne sont pas interessantes pour ma question, voici mon code dans son intégralité :

Option Explicit

Public oConnect As ADODB.Connection

Sub test()
'''''''''''''''''''''''''''''''Creation Dossier'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim dossierEnregistrement As String
dossierEnregistrement = "" & Feuil10.[F6]
If Dir("C:\Users\a.olaizola\Documents\SauvegardeDevis\" & dossierEnregistrement, vbDirectory) = "" Then _
    MkDir "C:\Users\a.olaizola\Documents\SauvegardeDevis\" & dossierEnregistrement

''''''''''''''''''''''''''''''Enregistrement Fichier''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Plage As Object, oL As Object, oC As Object, Tmp$, Sep$
Sep = ";"
Set Plage = ActiveSheet.Range("A4:G" & ActiveSheet.Range("A2").End(xlUp).Row)
Open "C:\Users\a.olaizola\Documents\SauvegardeDevis\" & dossierEnregistrement & "\Infos.csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
Close

'Call InsertData

End Sub

''''''''''''''''''''''''''''Enregistrement BDD''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'1) Connexion BDD

Private Sub ConnectionDB()
Dim S As String
    Set oConnect = New ADODB.Connection
    S = "DRIVER={MySQL ODBC 5.3 ANSI Driver};" & _
        "SERVER=" & Sheets("BasedeDonnees").Range("B30").Text & ";" & _
        "DATABASE=" & Sheets("BasedeDonnees").Range("B31").Text & ";" & _
        "USER=" & Sheets("BasedeDonnees").Range("B32").Text & ";" & _
        "PASSWORD=" & Sheets("BasedeDonnees").Range("B33").Text & ";" & _
        "Option=3"
      oConnect.Open S
     MsgBox ("La BDD est ouverte")
End Sub

'2) Ajout à la BDD
Sub InsertData()
Dim Rs As ADODB.Recordset
Dim Requete As String

    Set Rs = New ADODB.Recordset
    Call ConnectionDB
    With Sheets(4)
             Requete = "INSERT INTO client(idClient, nomClient, adresseClient, villeClient, telContact, mailContact, siret) VALUES(" & _
                .Cells(2, 1) & ", '" & _
                .Cells(2, 2) & "', '" & _
                .Cells(2, 3) & "', '" & _
                .Cells(2, 4) & "', '" & _
                .Cells(2, 5) & "', '" & _
                .Cells(2, 6) & "', '" & _
                .Cells(2, 7) & "')"
            Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
    End With
    oConnect.Close
    Set Rs = Nothing
End Sub

Et j'ai bien le "Public oConnect As ADODB.Connection" au début, si c'est ce que tu voulais me faire rajouter ^^

J'ai un peu honte...

Mon problème était que les informations n'étaient pas sur ma feuille 1 (ligne With sheet(1) ) mais sur la feuille 4 et c'est pour ca que j'ai tout qui planté...

Du coup je suis content, ca marche, mais par contre j'ai honte x)

Merci d'avoir répondu à mon appel a l'aide ceci dit, parce que c'est pas simple de trouver des réponses en période de vacances

Tiens, je retrouve ici du code qui vient de mon blog :

http://tatiak.canalblog.com/archives/2014/04/06/29605283.html

N'hésitez pas à citer vos sources ! 8)

Pierre Tatiak

Je n'ai pas récupéré ca sur ton blog, je ne saurai plus dire ou j'ai trouvé mon modèle a vrai dire, mais c'est la 1ère fois que j'arrive sur ton blog

desolé


Je n'ai pas récupéré ca sur ton blog, je ne saurai plus dire ou j'ai trouvé mon modèle a vrai dire, mais c'est la 1ère fois que j'arrive sur ton blog

desolé

Rechercher des sujets similaires à "interaction bdd mysql"