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 extraire des données de MySQL vers une Excel (Sheet ou UserForm)


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 extraire des données de MySQL vers une Excel (Sheet ou UserForm)
    Bonjour,

    je voudrais manipuler ma base de données MySQL depuis une macro Excel.
    Je fais bien la connexion et je peux même bien faire certains INSERT depuis le worksheet Excel à ma base de donnée MySQL. Mais quand il s’agit de faire interrogation et en afficher les résultats sur une feuille ou pire un userform Excel, tout se complique.
    Afficher le résultat d’une interrogation simple ou le résultat ne s’affiche que sur une cellule, c’est bon. Mais quand il s’agit, et dans la pratique ce sera ça la finalité, d’afficher les résultats sur un range ("A2 : D5" par exemple), je ne trouve pas le code qui fonction.

    Je cherche un code pour afficher les données d’une table avec plus d’une colonne et plus d’une ligne. En fouillant sur le net, j’ai vu des codes avec EOF que je ne maitrise pas encore.
    Merci d’avance pour vos contributions et votre aide.

    Voici mon code de connexion qui fonction à merveille pour uploader depuis la feuille Excel des données, et en extraire sur une seule cellule. On passe par un formulaire pour que pas à mettre les infos sur une feuille cachée.
    Le Code de connexion :
    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
    Option Explicit
    Public oConnect As ADODB.Connection
    Public myServeur1 As String
    Public mySchema1 As String
    Public myUser1 As String
    Public myPswd1 As String
     
    Private Sub ConnectionDB()
    '
    Dim S As String
    Dim myServeur1 As String
    Dim mySchema1 As String
    Dim myUser1 As String
    Dim myPswd1 As String
    '
    myServeur1 = frm_Connexion2.txt_Serveur.Value
    mySchema1 = frm_Connexion2.txt_Schema.Value
    myUser1 = frm_Connexion2.txt_User.Value
    myPswd1 = frm_Connexion2.txt_Pswd.Value
     
    Set oConnect = New ADODB.Connection
        S = "DRIVER={MySQL ODBC 5.1 Driver};" & _
            "SERVER=" & myServeur1 & ";" & _
            "DATABASE=" & mySchema1 & ";" & _
            "USER=" & myUser1 & ";" & _
            "PASSWORD=" & myPswd1 & ";" & _
            "Option=3"
        oConnect.Open S
    End Sub
    Le code utiliser pour insérer des données depuis ma feuille Excel vers ma base de donnée MySQL :
    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
    Sub MySQLInsertData()
    Dim Rs As ADODB.Recordset
    Dim Derligne As Integer, i As Integer
    Dim Requete As String
    Dim SqlValue
     
        Set Rs = New ADODB.Recordset
        Call ConnectionDB
        With Sheets(1)
            Derligne = .Range("A65000").End(xlUp).Row
            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) & "')"
            Next i
            oConnect.Execute Requete & SqlValue
        End With
        oConnect.Close
        Set Rs = Nothing
        MsgBox Application.UserName & vbCr & (i - 2) & " enregistrement(s) ajouté(s) avec succès", _
        vbInformation, "RastaBomboclat - Insertion des données"
    End Sub

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '......
     
    sSql = "SELECT * FROM [Tatable] WHERE...."
    Set Rs = New ADODB.Recordset
    Set Rs = oConnect.Execute(sSQL)
    feuil1.Range("A2").CopyFromRecordset Rs
    oConnect.Close
    Set Rs = Nothing 
     
    '.....

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour RastaBomboclat,
    Je ne reviendrais pas sur ce qu'a dit mercatog, que je salut, et qui est parfaitement exacte.
    Mais comment filtrer une requête {close Where} et parcourir un recordSet.

    Tu noteras que je n'es pas utiliser * qui veut dire tous les champs mais je les ai énuméré.
    Je pouvais récupérer que nom,prénom si je le voulais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sql="select ID_EMP, NOM, PRENOM, ADRESSE, VILLE, PAYS, TEL, EMAIL from employes_tbl where  NOM='Dysorthographie'"
    Set Rs=Cn.execute(Sql)
    While not Rs.eof
    Debug.print Rs("NOM"),Rs("PRENOM")
    Rs.movenext
    Wend

  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
    A mercatog et dysorthographie, merci pour vos reponses.

    Je vais les tester toutes les deux et revenir juste après vous en donner la suite.

Discussions similaires

  1. [XL-2007] Macro pour extraire des données
    Par Ecomed dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2016, 18h03
  2. Réponses: 0
    Dernier message: 05/09/2014, 21h11
  3. [XL-2007] Macro pour exporter des données sur WORD vers Excel (version 2007)
    Par krokos55 dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 31/10/2012, 13h10
  4. Réponses: 1
    Dernier message: 03/01/2010, 12h49
  5. Réponses: 1
    Dernier message: 31/12/2009, 11h22

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