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 :

Comment créer une connexion avec une base de données MySql en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Comment créer une connexion avec une base de données MySql en VBA
    Bonjour,

    Je souhaiterais écrire une macro en VBA qui me permettrais de lire les informations contenu dans une base de données MySql.

    Cette base de données est sur une autre machine avec IP:***.***.***.*** ,port:****, login:*******, password:*******

    J'ai cherché pendant un moment sur ce forum et je n'ai réussi à faire fonctionner aucun code. La connectionString ne doit pas être correcte.

    Voici le code que j'ai trouvé :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Function sql() As Integer
     
    Dim LigneTraitee As Long
    Dim LigneDebTFElec As Long
    Dim LigneDebTFGaz As Long
    Dim lundi As String
     
     
    Dim NomRepertoire As String
     
    Dim Datedeb As String
    Dim Datefin As String
     
    'Définition du nombre de requêtes
    Dim StrSQL(4) As String
     
    'Définition des variables de connexion
    Dim Conn_MySQL_2 As ADODB.Connection
    Dim Conn_MySQL_3 As ADODB.Connection
     
    'Définition des variables d'enregistrement
    Dim Rs_MySQL_TF As ADODB.Recordset
    Dim Rs_MySQL_TFGaz As ADODB.Recordset
    Dim Rs_MySQL_TF_Part As ADODB.Recordset
    Dim Rs_MySQL_TFGaz_Part As ADODB.Recordset
     
    'Définition des variables de commande de la bse
    Dim Cmd_MySQL_2 As ADODB.Command
    Dim Cmd_MySQL_3 As ADODB.Command
     
    'définition du début des lignes
    LigneDebTFElec = 4
    LigneDebTFGaz = 16
     
    'on initialise la valeur retour de test du déroulement de la fonction xxxx
    Donnees_COTF = 0
    lundi = Now()
    'Mise en forme de la date à récuperer dans la base xxxx
    Datedeb = Mid(lundi, 7, 4) & "-" & Mid(lundi, 4, 2) & "-" & Mid(lundi, 1, 2)
    Datefin = Mid(lundi, 7, 4) & "-" & Mid(lundi, 4, 2) & "-" & Mid(lundi, 1, 2) + 4
     
     
     
    'Initialisation des variables de connexion
    Set Conn_MySQL_2 = New ADODB.Connection
    Set Conn_MySQL_3 = New ADODB.Connection
     
       'Initialisation des variables d'enregistrement
       Set Rs_MySQL_TF = New ADODB.Recordset
       Set Rs_MySQL_TFGaz = New ADODB.Recordset
       Set Rs_MySQL_TF_Part = New ADODB.Recordset
       Set Rs_MySQL_TFGaz_Part = New ADODB.Recordset
     
       'Initialisation des variables de commande
       Set Cmd_MySQL_2 = New ADODB.Command
       Set Cmd_MySQL_3 = New ADODB.Command
     
       'Activation du fichier TdB
       'Workbooks(Feuil1).Activate
     
       'Initialisation des variables d'indicateurs de bons déroulement des requêtes sur base COTF
       indicateur_fin_traitement_COTF_ELEC = 0
       indicateur_fin_traitement_COTF_GAZ = 0
     
    'On Error GoTo ErreuraccesbaseCOTF_ELEC
       'Paramètre connexion nouvelle base
       Conn_MySQL_2.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver} ;" _
                                                        & "SERVER= ***.***.***.*** ;" _
                                                        & "PORT=**** ;" _
                                                        & "DATABASE= **** ; " _
                                                        & "UID= **** ; " _
                                                       & "PWD= ****  ; "
     
       Conn_MySQL_2.Open
     
       Cmd_MySQL_2.ActiveConnection = Conn_MySQL_2
     
     
       StrSQL(1) = "SELECT * " & _
                "FROM ind_adm_fct " & _
                "WHERE dateInd >= '" & Datedeb & "' and dateInd <= '" & Datefin & "'" & _
                "AND indicProPart = '0';"
     
       StrSQL(2) = "SELECT * " & _
                "FROM ind_adm_fct " & _
                "WHERE dateInd >= '" & Datedeb & "' and dateInd <= '" & Datefin & "'" & _
                "AND indicProPart = '1';"
     
       'Exécution des 2 requêtes et mise en mémoire des résultats dans 2 enregistrements
       Cmd_MySQL_2.CommandText = StrSQL(1)
       Cmd_MySQL_2.CommandType = adCmdText
       Cmd_MySQL_2.CommandTimeout = 15
       Set Rs_MySQL_TF = Cmd_MySQL_2.Execute()
     
       Cmd_MySQL_2.CommandText = StrSQL(2)
       Cmd_MySQL_2.CommandType = adCmdText
       Cmd_MySQL_2.CommandTimeout = 15
       Set Rs_MySQL_TF_Part = Cmd_MySQL_2.Execute()
     
    End Function
    Si quelqu'un pouvait m'aider et m'expliquer clairement à quoi corresponde les différents paramètres de la connectionString.

    Merci.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    Par défaut
    Bonjour,
    Tu peux lancer msquery en utilisant l'enregistreur de macro et faire une requête.
    Ca te donnera la chaîne de connexion.

    Ca passe par contre par un driver ODBC, il faut qu'il soit installé.

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Il y a plusieurs tutos sur le sujet. Voir par exemple ici, et notamment 2.5

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Réponses: 3
    Dernier message: 02/08/2008, 06h46
  5. Réponses: 4
    Dernier message: 27/08/2007, 12h11

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