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 :

syntaxe d'une variable dans la connection d'une base pour un publipostage vba [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut syntaxe d'une variable dans la connection d'une base pour un publipostage vba
    Bonjour,
    malgré la lecture assidue de nombreux sujets publiés par Silkyroad(et d'ailleurs merci à lui) sur les publipostage pour Word à partir de Excel, je bute sur un problème de syntaxe sur l'utilisation de variable dans la connexion de la base:
    en reprenant l'enregistrement de la macro faite dans word, j'ai souhaité remplacer le chemin de la base par une variable et la choix de la feuille source par une autre; le blocage se fait au niveau de la feuille source; quelque soit l’écriture (avec replace pour les guillemets, etc.), je ne parviens pas à me connecter; je précise que si j'écris en dur la feuille source, la variable du nom de la base permet d’accéder à la base: il n'y a donc qu'un souci avec la syntaxe de la variable de la feuille source.
    voici le code:
    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
    With docWord.MailMerge
            .OpenDataSource Name:=NomBase _
            , ConfirmConversions:=True, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
            WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
            Format:=wdOpenFormatAuto, Connection:= _
            "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=NomBase;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OL" _
            , SQLStatement:="SELECT * FROM `'Clients_factures$'`", _
            SQLStatement1:="", SubType:=wdMergeSubTypeAccess
            
            'Spécifie la fusion vers un nouveau document
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
                'Prend en compte l'ensemble des enregistrements
                With .DataSource
                    .FirstRecord = wdDefaultFirstRecord
                    .LastRecord = wdDefaultLastRecord
                End With
    bien sûr, c'est client_factures$ que je cherche à remplacer.
    merci par avance aux dévoués...

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    As tu essayé comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , SQLStatement:="SELECT * FROM `'" & Variable & "'`", _
    Jérôme

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour Jérôme,
    oui j'avais essayé et j'ai recommencé à l'instant dans le doute; mais toujours pas; j'ai lu des forums sur les variables dans les requêtes sql dans l'espoir d'y trouver une soluce: j'ai compris que les guillemets contenus dans la variable et entourant le nom de la feuille source étaient gênant: j'ai donc créé une fonction les remplacant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function quote(chaine)
    chaine = Replace(chaine, """", "")
    quote = chaine
    End Function
    dans le sub:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLStatement:="SELECT * FROM `'" & quote(feuilleSource) & " $'`",
    .
    peut être une erreur là, car dans l'affichage des variables locales, quote affiche toujours les guillemets autour du nom.
    merci pour ton attention

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    et comme cela, en supprimant les apostrophes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , SQLStatement:="SELECT * FROM `" & Variable & "`", _
    Jérôme

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    oui j'ai essayé et re-essayé, mais pas mieux;
    info: en supprimant après le nomBase le reste de la requête (commentaires) je parviens bien à la boite de dialogue Word "sélectionner le tableau", mais si je rétablis en insérant la variable, j'arrive à la boite "tables" et pas de suite.
    une autre idée?

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Et en mettant toute la requete dans la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable = "SELECT * FROM `'Clients_factures$'`"
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , SQLStatement:= Variable, _
    Jérôme

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    re, Jérôme,
    ça je n'avais pas essayé, et cela fonctionne; j'ai dû changer ma vision du déroulement de la procédure: dans le classeur origine j'avais 2 feuilles qui correspondaient chacune à une base client dans d'autres classeurs; de fait je testais la feuille active par If InStr(nomfeuille, "LM") = 0 Then et j'appelais une variable NomBase de là, je créais ma variable feuilleSource par le nomfeuille;
    j'ai donc introduit ma variable feuilleSource dans le if et définit donc d'un coup les deux variables, c'est parfaitement viable pour moi.
    ta solution est donc bien vue, mais ce qui me chagrine c'est pourquoi nous ne parvenons pas à le faire dans la requête.
    merci et à charge
    bonne soirée

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

Discussions similaires

  1. insérer une variable dans le nom d'une variable
    Par leninelenine dans le forum Général Python
    Réponses: 11
    Dernier message: 28/05/2015, 08h25
  2. Mettre une variable dans l'appel d'une variable de session
    Par PrinceMaster77 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2011, 10h12
  3. une variable type long qui recupère une valeur dans un .properties
    Par zouuc dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 27/02/2009, 17h08
  4. Réponses: 2
    Dernier message: 16/11/2006, 13h28
  5. Réponses: 9
    Dernier message: 05/07/2005, 08h37

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