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

VBScript Discussion :

Automatisation publipostage word : juste le dernier enregistrement


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut Automatisation publipostage word : juste le dernier enregistrement
    Bonjour à tous,

    Je suis sur la fin d'un script vbs pour faire du publipostage automatique à partir d'une source de donnée excel.

    Le but est de faire le publipostage de la dernière ligne de la requete SQL (le dernier enregistrement fait dans le fichier excel).

    Je n'arrive pas à attribuer le LastRecord à l'ActiveRecord.

    Normalement celon les diverses sources du net cette attribution ce fait dans les options du publipostage par cette commande:
    objDoc.MailMerge.DataSource.ActiveRecord = wdLastRecord

    Active record contient 1 (le premier enregistrement) par défaut.

    Si je fait un msgbox sur la commande précédente, j'obtiens False.
    Or je ne veux pas que les deux valeurs soient comparées, je veux attribuer la valeur wdLastRecord à objDoc.MailMerge.DataSource.ActiveRecord

    Tout le reste de mon code fonctionne, si j'incrémente l'ActiveRecord, je parcours l'ensemble de mon fichier Excel.

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    Pour ceux que ca interresse, j'ai trouvé mon bonheur:

    MailMerge fonctionne avec un range: un enregistrement de début et un enregistrement de fin
    Il suffit de spécifier que l'enregistrement de début est l'enregistrement de fin par cette commande:

    objDoc.MailMerge.DataSource.FirstRecord = objDoc.MailMerge.DataSource.lastrecord

    Voici le code entier:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    NomBase = "chemin d'acces\fichier.xls"
    DocWord = "chemin d'acces\fichier.doc"
     
    Set appWord = CreateObject("Word.Application" )
    appWord.Visible = False
    Set objDoc = appWord.Documents.Open(DocWord)
     
    objDoc.mailMerge.OpenDataSource NomBase, 4, False, True, False, False, "", "", True, "", "", "Driver={Microsoft Excel Driver (*.xls)};", "SELECT * FROM [Feuille$]"
    objDoc.mailMerge.Destination = 1
    objDoc.MailMerge.DataSource.FirstRecord = objDoc.MailMerge.DataSource.lastrecord
    objDoc.mailMerge.Execute Pause=False
    appWord.documents.Close False
    appWord.Quit

    Le plublipostage prends tout les enregistrements de la feuille provenant du fichier excel et de mannière invisible, il lance l'impression du publipostage du dernier enregistrement puis il ferme les docs word ouverts sans sauvegarder.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2010, 15h47
  2. Imprimer dernier enregistrement fusion Word Excel
    Par JPDU92 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2007, 22h48
  3. Réponses: 1
    Dernier message: 20/04/2007, 13h02
  4. Réponses: 10
    Dernier message: 01/08/2003, 13h45
  5. Trouver le dernier enregistrement d'une table
    Par remi59 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/03/2003, 14h54

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