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 :

Connexion à une base de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut Connexion à une base de données
    Bonjour,

    Je ne suis pas un expert en développement sous Excel avec VBA et je requiert votre aide sur un sujet assez vaste.
    Voici mon problème, J'ai des pages Excel qui se remplissent automatiquement et je dois enregistrer les données, je souhaite donc effectuer une connexion à une base mysql (genre phpMyAdmin) pour sauvegarder les données dans une table. (Afin de les réutiliser ultérieurement).

    J'ai donc le code suivant mais je ne sais pas si celui-ci est correct :

    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
     
        Dim i As Integer
        ' id commence à 2 donc pour que l'id de ma table commence à 1
        i = id - 1
     
        Set con = New ADODB.Connection
     
     
        'Enfin pour terminer, nous allons établir la connexion au serveur MySQL.
     
        con.CursorLocation = adUseServer
        con.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & servdb & ";DATABASE=" & nomdb & ";USER=" & logindb & ";PASSWORD=" & pwddb & ";OPTION=" & optdb & ""
     
        'traitement
        Dim rst As ADODB.Recordset
        Set rst = New ADODB.Recordset
        'price est un paramètre de la procédure
        rst.Open "UPDATE Appli SET LPW" + price + " WHERE ID = " + i, con
     
        con.Close

  2. #2
    Membre éprouvé
    Homme Profil pro
    Data Analyste Senior
    Inscrit en
    Août 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Analyste Senior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2010
    Messages : 53
    Par défaut
    Pour partir sur de bons principes avec le VBA, je te conseille de commencer tous tes module par un
    Ensuite pour ta connexion et le Recorset, tu peux déclarer et initialiser l'objet en une seule fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim con As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Pour le ConnectionString je préfère passer par une variable plutôt que d'envoyer la chaîne directement dans la commande Open, mais c'est plus une préférence/habitude que j'ai qu'une règle stricte.

    Après le lancement de ta connexion, tu peux tester si celle-ci s'est bien passée et n'ourir ton recordset que si elle est active (Ici, les 2 tests sont un peu redondants mais c'est pour l'exemple)

    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
     
        On Error Resume Next
        '
        con.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & servdb & ";DATABASE=" & nomdb & ";USER=" & logindb & ";PASSWORD=" & pwddb & ";OPTION=" & optdb & ""
        '
        If Err.Number <> 0 Then
            MsgBox "Erreur lors de la connexion" _
                    & VbCrLf & Err.Number & " : " & Err.Description
        End If
        '
        On Error Goto 0
        '
        If conn.State = 1 Then
            rst.Open "UPDATE Appli SET LPW" + price + " WHERE ID = " + i, con
            con.Close
        End If
    Dernières remarques : Attention à ton Update :
    - Je pense qu'un manque un "=" après LPW
    - Le caractère de concaténation de chaîne en VBA est le &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rst.Open "UPDATE Appli SET LPW = " & price & " WHERE ID = " & i, con

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut
    Merci pour toutes ces remarques enrichissantes. Je confirme que le manque du "=" est un oublie de ma part .

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je t'invite à regarder ce lien:
    http://www.developpez.net/forums/sho...85&postcount=4
    http://www.developpez.net/forums/sho...01&postcount=6
    c'est une réponse que j'ai faite sur un poste similaire.
    si tu as des question je me tien à ta disposition.

Discussions similaires

  1. Pool de connexion à une base de données en java
    Par ppaul127 dans le forum JDBC
    Réponses: 3
    Dernier message: 15/12/2005, 17h03
  2. Réponses: 1
    Dernier message: 25/09/2005, 16h18
  3. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

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