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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    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 confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

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

  3. #3
    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
    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 confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

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

  5. #5
    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
    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 confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    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, _

+ 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