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 :

Intégrer une variable dans une chaîne de connexion


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut Intégrer une variable dans une chaîne de connexion
    Bonjour,

    Par enregistrement auto macro, j'ai obtenu les lignes de code suivantes (modification d'une chaîne de connexion d'un tableau croisé).
    J'aimerais pouvoir associer le texte en bleu (Data Source=...) à une variable et appeler cette variable dans la propriété .Connection.
    J'ai essayé d'intégrer la variable avec des "" & "" au milieu du texte, mais ça ne fonctionne pas.
    Merci pour votre aide,

    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
     With ActiveWorkbook.Connections("ECROUS G").OLEDBConnection
            .BackgroundQuery = True
            .CommandText = Array("'ECROUS G$'")
            .CommandType = xlCmdTable
            .Connection = Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=\\C:\doc\CARTO TEST.xlsm;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";" _
            , _
            "Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Databa" _
            , _
            "se Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Je" _
            , _
            "t OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Com" _
            , _
            "pact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=" _
            , "False")
            .RefreshOnFileOpen = False
            .SavePassword = False
            .SourceConnectionFile = ""
            .ServerCredentialsMethod = xlCredentialsMethodIntegrated
            .AlwaysUseConnectionFile = False
            .ServerFillColor = False
            .ServerFontStyle = False
            .ServerNumberFormat = False
            .ServerTextColor = False
        End With
        With ActiveWorkbook.Connections("ECROUS G")
            .Name = "ECROUS G"
            .Description = ""
        End With
        ActiveWorkbook.Connections("ECROUS").Refresh

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour muchek,

    Dans un fichier que j'avais développer, il y a des connections vers les onglets du même classeur.
    Le fichier pouvant être dupliqué il fallait trouver une solution pour mettre a jour les connections (changement de chemin et de nom de fichier)

    Voila la solution que j'ai utilisé :
    • Une variable public qui est la chaine de correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const Chaine_Connexion = "ODBC;DSN=Excel Files;DBQ=**FullName**;DefaultDir=**Path**;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"
    Tu remarque que je remplace le FullName par **FullName** idem pour le Path.

    • Ensuite dans mon code pour la mise a jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Init_Chaines_Connexions()
        Dim t$(), i&, Connect As WorkbookConnection, s$
            s = Chaine_Connexion
            s = Replace(s, "**FullName**", ThisWorkbook.FullName)
            s = Replace(s, "**Path**", ThisWorkbook.Path)
            '...
                Connect.ODBCConnection.Connection = s
            '...
    End Sub
    C'est un peut diffèrent de ton problème mais cette solution doit pouvoir s'adapter dans ton cas.
    C'est en tout cas une piste de réflexion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    Bonjour antonysansh ,

    Et merci pour ta réponse.
    Je vais essayer avec ta méthode , ça m'a l'air jouable.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    YEP !
    Comme prévu, ça marche nickel.
    Merci BEAUCOUP.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    C'est bon pour la modif des propriétés de la chaîne de connexion.
    Mon problème à présent est de pouvoir actualiser mon tableau croisé dynamique, après avoir changé les propriétés de la connexion.
    Voici les messages successifs qui s'affichent

    Nom : messages erreurs.png
Affichages : 957
Taille : 317,4 Ko

    J'arrive à mettre à jour cette connexion en recherchant mon fichier source avec "parcourir" dans l'onglet definition de ma connexion.
    Comment puis-je exécuter la même action par macro ?


    Merci par avance,

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Août 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Août 2016
    Messages : 6
    Par défaut
    J'ai un peu avancé.
    J'ai ajouté ces lignes pour mettre à jour la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.Connections("ECROUS G").OLEDBConnection.Refresh
    Lorsque j'exécute la 1ère fois cette commande, j'obtiens le message
    "Echec de l'actualisation d'un tableau croisé dynamique, d'une function cube ou d'un segment qui utilise "Ecrous G", voulez-vous continuer l'actualisation ?"

    Si j'exécute une 2ème fois la ligne, le TCD se met bien à jour sans message d'erreur : ??...

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  3. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  4. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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