IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA et MySQL - Macro pour inserer des données dans MySQL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut VBA et MySQL - Macro pour inserer des données dans MySQL
    Slt,

    Je suis coincé en essayant d'insérer des données se trouvant sur ma feuille Excel, vers une base de données MySQL, via une macro.
    J’ai trouvé un tuto sur le net qui fonctionne parfaitement en lui-même, mais quand j’essaie de l’adapter à mes besoins, avec mes données, ça bug.

    Ci-dessous, les codes que j’ai utilisé, les erreurs générées, et mes données Excel (factices).

    Dans la feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Derligne As Integer
        Derligne = Range("A65000").End(xlUp).Row
        If Not Intersect(Target, Range("A2:D" & Derligne)) Is Nothing Then
            Call UpdateData(Target.Row, Target.Column)
        End If
    End Sub
    Dans le Module:
    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
    Option Explicit
     
    Public oConnect As ADODB.Connection
     
    Private Sub ConnectionDB()
    Dim S As String
        Set oConnect = New ADODB.Connection
        S = "DRIVER={MySQL ODBC 5.1 Driver};" & _
            "SERVER=" & Sheets("config").Range("B1").Text & ";" & _
            "DATABASE=" & Sheets("config").Range("B2").Text & ";" & _
            "USER=" & Sheets("config").Range("B3").Text & ";" & _
            "PASSWORD=" & Sheets("config").Range("B4").Text & ";" & _
            "Option=3"
        oConnect.Open S
    End Sub
     
    Sub MySQLInsertData()
    Dim Rs As ADODB.Recordset
    Dim Derligne As Integer, i As Integer
    Dim Requete As String
     
        Set Rs = New ADODB.Recordset
        Call ConnectionDB
        With Sheets(1)
            Derligne = .Range("A65000").End(xlUp).Row
            For i = 2 To Derligne
                Requete = "INSERT INTO employes_tbl(ID_EMP, NOM, PRENOM, ADRESSE, VILLE, PAYS, TEL, EMAIL) VALUES(" & .Cells(i, 1) & ", '" & .Cells(i, 2) & "', '" & .Cells(i, 3) & "', " & .Cells(i, 4) & "', " & _
                .Cells(i, 5) & "', " & .Cells(i, 6) & "', " & .Cells(i, 7) & ", '" & .Cells(i, 8) & ")'"
                Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
            Next i
        End With
        oConnect.Close
        Set Rs = Nothing
    End Sub
    La feuille des données de connexion:
    Nom : Capture.JPG
Affichages : 795
Taille : 19,7 Ko

    La feuille des données à insérer:
    Nom : Capture0.JPG
Affichages : 828
Taille : 73,3 Ko

    Les messages d'erreur:
    Nom : Capture_A.JPG
Affichages : 810
Taille : 19,8 Ko
    Nom : Capture_B.JPG
Affichages : 855
Taille : 31,6 Ko

    Merci d'avance pour vos contribution.
    Images attachées Images attachées  

  2. #2
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Je viens avec le fichier excel du travaille que je fais, pour ce qui voudront le voir.


    Merci d'avance.
    Fichiers attachés Fichiers attachés

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Requete = "INSERT INTO employes_tbl(ID_EMP, NOM, PRENOM, ADRESSE, VILLE, PAYS, TEL, EMAIL) VALUES "
    SqlValue=""
    For i = 2 To Derligne
            if SqlValue <>"" then SqlValue=SqlValue & ","
             SqlValue=SqlValue & "   (" & .Cells(i, 1) & ", '" & .Cells(i, 2) & "', '" & .Cells(i, 3) & "', '" & .Cells(i, 4) & "'," & _
                .Cells(i, 5) & "', " & .Cells(i, 6) & "', " & .Cells(i, 7) & ", '" & .Cells(i, 8) & "')"
                'Rs.Open Requete, oConnect, adOpenDynamic, adLockOptimistic
            Next i
    oConnect.execute Requete & SqlValue
    Attention à la syntaxe.

    "values (12345,'Dysorthographie','Robert','9 rue','Paris',FR',6938456,'Dysorthographie@developpez.com'),(12346,'Etc...',"
    Dernière modification par Invité ; 20/02/2019 à 07h48.

  4. #4
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Merci,

    Je vais la tester et reviens pour dire comment ça marche.

  5. #5
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Bonjour Dysorthographie ,

    Après teste, je reçois le message d'erreur suivant:

    Nom : a.JPG
Affichages : 760
Taille : 25,8 Ko


    Nom : b.JPG
Affichages : 864
Taille : 88,0 Ko

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    As-tu vérifié juste avant la ligne erreur le contenu de Requete & SqlValue à l'aide de Debug.Print par exemple?

  7. #7
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Bonjour

    As-tu vérifié juste avant la ligne erreur le contenu de Requete & SqlValue à l'aide de Debug.Print par exemple?
    Oui, je l’ai fait, merci.

    Cela m’a permis de voir les éventuelles erreur et variantes non déclarées, vu que je travaille en "Option Explicit". Tu verras que j’ai en commentaire mon code avant de copier celui de Dysorthographie. J’ai déclaré en Variant le "SqlValue" pour être sûr qu’il passe et on cherchera plus tard son type exacte.
    Si tu as décelé quelque chose, pourrais-tu s’il te plait me le montrer ?

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Apparemment le champs Téléphone n'est pas numérique mais du texte. Doit être entouré par des '

    Aussi il faudra voir l'éventualité qu'une information de type texte qui peut contenir une apostrophe.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlValue = SqlValue & "(" & .Cells(i, 1) & ",'" & .Cells(i, 2) & "','" & .Cells(i, 3) & "','" & .Cells(i, 4) & "','" & _
                       .Cells(i, 5) & "','" & .Cells(i, 6) & "','" & .Cells(i, 7) & "','" & .Cells(i, 8) & "')"

  9. #9
    Invité
    Invité(e)
    Par défaut
    oui attention aux apostrophes!

    txt=replace(L'apostrophe","'","''")

  10. #10
    Membre éclairé Avatar de RastaBomboclat
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 240
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    oui attention aux apostrophes!

    txt=replace(L'apostrophe","'","''")
    Bien noté Dysorthographie.
    Je vais m'y exercer

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/06/2017, 16h14
  2. [XL-2007] VBA : Macro pour actualiser des données automatiquement
    Par Devqnn dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/04/2015, 14h17
  3. Réponses: 3
    Dernier message: 14/05/2014, 12h00
  4. [XL-2007] Macro pour afficher des données dans une listbox
    Par LaurentIA dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/08/2012, 17h56
  5. Réponses: 3
    Dernier message: 05/05/2006, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo