none
[WD-2003] Macro de publipostage + filtre / WHERE RRS feed

  • Question

  • Bonjour,

    J'ai des difficultés avec une macro VBA qui commande un publipostage.
    Celle-ci lit un fichier xls et fait un publipostage dans Word.
    Cela fonctionne bien sauf lorsque j'essaie de filtrer les données, pour ne prendre que les lignes ayant pour valeur de première colonne la chaîne "cfanrpwepvt" par exemple
    Je pensais manipuler les données affichées dans le xls avec un filtre

    Wb.Sheets(1).Range("A1").AutoFilter Field:=1, Criteria1:="cfanrpwepvt"

    mais le publipostage prend quand même toutes les lignes.
    J'ai alors essayer de supprimer toutes les lignes sauf les bonnes dans Sheets(1), mais j'ai le même résultat, même en faisant un .save juste avant
    J'ai aussi pensé à modifier le SQLStatement du DataSource :

    ActiveDocument.MailMerge.OpenDataSource Name:= _
            FichierSource, _
            ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
            WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
            Format:=wdOpenFormatAuto, Connection:= _
            "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" + FichierSource + ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Dat" _
            , SQLStatement:="SELECT * FROM `Feuil1 WHERE `Cod_Macro` = `cfarp`$`", SQLStatement1:="", SubType:= _
            wdMergeSubTypeAccess

    en mettant un

    SQLStatement:="SELECT * FROM `Feuil1$` WHERE `CodMacro`=`cfarp`"



    en manipulant un peu les quotes et le $ pour tenter d'avoir un truc correct mais à chaque fois j'ai une fenêtre qui s'ouvre pour sélectionner une table (syntaxe incorrecte donc?)

    Quelqu'un saurait m'éclairer sur ceci?
    Je vous remercie par avance pour vos réponses !


    • Modifié Abyssin mercredi 21 mai 2014 10:02
    mardi 20 mai 2014 13:07

Réponses

  • Ca marche avec
    SQLStatement:="SELECT * FROM [Feuil1$] WHERE [CodMacro]= 'cfarp'"

    ou avec une variable
    SQLStatement:="SELECT * FROM [Feuil1$] WHERE [CodMacro]= '" + strCodMacro + "'"

    • Marqué comme réponse Abyssin mercredi 21 mai 2014 14:57
    mercredi 21 mai 2014 14:55