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 :

Publipostage VBA via connexion DDE [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Par défaut Publipostage VBA via connexion DDE
    Bonjour à tous,

    J'ai créé dans un fichier Excel 2010 une macro afin de lancer un publipostage sous Word 2010, type facture.
    Jusque là tout va bien, sauf que visiblement Word n'accepte pas qu'un champs de fusion comporte plus de 255 caractères, ce qui fait que certains champs sont tronqués.

    A priori, le problème semble venir de la connexion OLE qu'emploie nativement Word et Excel.

    Comment forcer que la connexion se fasse par DDE (par VBA), ce qui semble être indiqué dans les posts repérés sur le net ?



    Ci-dessous mon script actuel :



    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
      NomBase = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
        Application.ScreenUpdating = False
        Set appWord = CreateObject("Word.Application")
        appWord.Visible = True
     
        '*** Ouverture du modèle word
        ModeleFacture = Worksheets("Paramètres").Range("FactureFichier")
        Set docWord = appWord.Documents.Open(ModeleFacture)
     
        '*** paramétrage du publipostage pour le document spécifié
        With docWord.MailMerge
            .OpenDataSource Name:=NomBase, _
            Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & NomBase & "; ReadOnly=True;", _
            SQLStatement:="SELECT * FROM [Publipostage_Annexe$]"
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
     
            'Exécute l'opération de publipostage
            .Execute Pause:=False
        End With
     
        Application.ScreenUpdating = True
        docWord.Close False
        Set docWord = Nothing


    J'ai vu sur certains posts qu'il faillait forcer via SubType:=wdMergeSubTypeWord2000 au niveau de OpenDataSource, mais quand je l'utilise, mon document Word s'ouvre sur une fenêtre demandant de sélectionner une table.

    Merci d'avance de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    sens garantie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & NomBase & ";Extended Properties=""Excel 12.0;HDR=YES;"""
    !

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Par défaut
    Merci dysorthographie pour ta réponse.

    L'ajout de propriétés étendues provoquent un message d'erreur de mon script.
    Je pense que la commande que tu m'as donnée ne fonctionne que pour du ODBC.

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    J'ai lu à quelque part, mais j'ai oublié où, que DDE présentait une faille de sécurité et que Microsoft était en train de la zigouiller.

    Eux, ils disent que Microsoft a corrigé ses Office 2007 et suivants, mais ils donnent une méthode pour désactiver DDE manuellement.

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Par défaut
    Bonjour à tous,

    Je viens de trouver la solution. Pour ceux qui aurait un jour le même souci, voici comment j'ai procédé :

    En fait Word semble se baser sur la première ligne de données de publipostage (= ligne 2) pour savoir quelle type donnée (string, variant, date, integer) attribuer à chaque champs.

    Par conséquent, j'ai du créer en ligne 2 des cellules comportant plus de 255 caractères, et convertir tous mes champs numériques ou dates en texte en rajoutant un espace devant (qui se voit pas au publipostage). Sans cette conversion en texte, seules mes champs purement textuels n'étaient pas tronqués.

    Une fois fait, tout fonctionne nickel, j'ai juste à lancer en vba le publipostage à partir de la ligne 3 .

    C'est une bidouille, mais qui a le mérite de marcher.

    A bientôt.

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

Discussions similaires

  1. [XL-2003] Ouverture d'une connexion DDE de VBA vers un logiciel tiers
    Par david_atx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2009, 11h59
  2. [VBA-E] Connexion BD avec requete
    Par tazamorte dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/01/2007, 18h11
  3. [VBA-E] Connexion Oracle DSNless
    Par cha_cha dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/04/2006, 11h44
  4. [VBA-E]Connexion ADODB a une base de données
    Par nemesys971 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/03/2006, 17h08
  5. [VBA-E] Connexion Active Directory
    Par david522 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/12/2005, 13h49

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