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 :

Utilisation de liens OLE pour communiquer entre Excel et MySQL


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Points : 107
    Points
    107
    Par défaut Utilisation de liens OLE pour communiquer entre Excel et MySQL
    Bonjour,

    je ne sais pas si quelqu'un ici a déjà essayé et réussi à attaquer depuis excel un serveur MySQL avec des liens OLE mais je tente ma chance après 3 jours de recherches infructueuses.

    J'ai installé le pilote suivant (que tout le monde recommande sur le net) :

    myoledb-3.9.6

    que j'ai trouver sur MySQL.com

    J'ai bien fait l'install comme prévu , (on lance le msi qui s'installe sur le C:\Program File, puis j'ai copié dans C:\WINNT\system32 les fichiers libmysql.dll et MyProv.dll et j'ai bien sur fait un regsvr32.exe MyProv.dll)

    Voici le code que j'utilise dans VB pour tester la 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
     
    Sub test()
     
    Dim objConnexion, chaineConn
     
      ' Créer l'objet ADO
      Set objConnexion = New ADODB.Connection
     
      '  Set objConnexion = Server.CreateObject("ADODB.Connection")
      ' chaineConn = "provider=MICROSOFT.JET.OLEDB.4.0;DataSource=D:\Cedric\R\02 - Base\base.mdb;User ID=nonDusager;Password=MotDePasse;"
     
      ' Ouvrir la base sans DSN avec chaîne de connexion
      chaineConn = "provider=MySQLProv;server = 141.71.4.40;DataSource=eurocorp;User ID=root;Password=saq;"
      objConnexion.Open chaineConn
     
      ' Traitement...
     
      ' Fermer la connexion et détruire l'objet
      objConnexion.Close
      Set objConnexion = Nothing
     
    End Sub
    Bien sur ça ne marche pas , j'ai le message d'erreur suivant "erreur d'execution -2147467259 (80004005) "

    Erreur que je ne sais pas résoudre...

    Un expert est dans la place ?

    Merci

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut,

    J'ai bien fait l'install comme prévu , (on lance le msi qui s'installe sur le C:\Program File, puis j'ai copié dans C:\WINNT\system32 les fichiers libmysql.dll et MyProv.dll et j'ai bien sur fait un regsvr32.exe MyProv.dll)
    C'est quoi ton Windows? NT ?

    Sinon pour XP(W2k) en standard, j'aurais penché pour C:\Windows\System32.
    Mais çà n'a peut-être rien à voir.

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Points : 107
    Points
    107
    Par défaut
    Je suis sous windows 2000, donc pas de c:\windows...

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut,

    curieux de nature je viens de très très vite regarder le site de Mysql.

    j'ai trouvé des liens qui pourraient t'aider.

    les voici.

    http://dev.mysql.com/doc/refman/5.0/...onnectors.html
    http://dev.mysql.com/doc/refman/5.0/fr/index.html
    http://dev.mysql.com/doc/refman/5.0/...c-with-vb.html

    Il y a du code avec ADO et ODBC.

  5. #5
    M3r
    M3r est déconnecté
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut voici une macro qui se connecte sur du Mysql et effectue des requêtes


    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
    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(nom_fichier_tdb).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.Open "DRIVER={MySQL ODBC 3.51 Driver};" _
                                & "SERVER=xxx.xx.xxx.xxx;" _
                                & "DATABASE=xxxx;" _
                                & "UID=root;PWD=xxxxx; OPTION=3; Port=3306"
     
       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()

  6. #6
    Membre régulier
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Points : 107
    Points
    107
    Par défaut
    Merci pour vos aides, malheureusement tout ce qu'on y trouve est de l'ODBC. Je n'ai plus le droit de les utilisés car pas assez puissant pour une application qui sera deployée sur plusieurs postes.

    En fait, de ce que j'ai lu sur loa toile, ODBC est le plus ancien, après est venu OLEDB puis ADO. On m'a demandé de le faire en OLEDB...et là ça coince quasi impossible de trouver des aides sur le net... donc je continue à chercher

  7. #7
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Merci pour vos aides, malheureusement tout ce qu'on y trouve est de l'ODBC. Je n'ai plus le droit de les utilisés car pas assez puissant pour une application qui sera deployée sur plusieurs postes.
    Ah bon ?

    Parce que chez MySql il donnent cela comme technique et installer ODBC sur plusieurs postes, ce n'est pas vraiment infaisable.

    Mais bonne chance dans tes recherche.

  8. #8
    Membre régulier
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Points : 107
    Points
    107
    Par défaut
    I know , je l'ai déjà fait mais sa pause des problèmes de sécurité informatique lors des migration et patati et patata...et sur des forum certains expliquent que les OLE et ADO sont bcp plus puissant et stable....alors...et surtout je travail dans une grosse structure ou on est de plus en plus les mains liées...

    Je précise je ne suis pas informaticien, mais je suis obligé de suivre les règle de mon IT groupe....

    En tout cas dés que j'ai la solution je la poste

    Encore merci

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    et surtout je travail dans une grosse structure ou on est de plus en plus les mains liées...
    Cela je connais très bien.....

  10. #10
    Membre régulier
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Points : 107
    Points
    107
    Par défaut
    Excusez mois j'avais oublié de poster la solution qui marche très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set oConnection = New ADODB.Connection
     
    oConnection.ConnectionString = "DRIVER=MySQL ODBC 3.51 Driver;SERVER=server IP;DATABASE=database name;UID=login;PWD=pwd; OPTION=3"
    oConnection.Open

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. OLE pour communiquer entre différente instance d'une application
    Par justgreat dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 12/12/2009, 20h59
  2. Win API - meilleur moyen pour communiquer entre 2 apps ?
    Par user 56gt8 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 15/12/2008, 18h12
  3. Utilisation de /proc pour communiquer entre deux process
    Par Mokhtar BEN MESSAOUD dans le forum Linux
    Réponses: 8
    Dernier message: 11/06/2008, 15h52
  4. Comment utiliser QtSql pour communiquer avec un serveur MySQL ?
    Par sebatlante dans le forum Bases de données
    Réponses: 8
    Dernier message: 10/06/2008, 14h34
  5. Réponses: 1
    Dernier message: 26/03/2007, 12h58

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