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 :

[VBA-E/W] publipostage a partir d'excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Par défaut [VBA-E/W] publipostage a partir d'excel
    Bonjour,

    J'ai fouiné dans les différents posts mais je n'ai pas trouvé mon bonheur.

    Je voudrais, une fois une ligne saisie dans excel, qu'une macro m'ouvre word génère un publipostage, de la ligne en question uniquement, de façon à compléter ce courrier à façon.

    Merci pour votre aide.

    Daniel

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour le principe :
    Trois fichiers : La base de données.xls, un fichier xls temporaire, le .doc
    Depuis ma base de données Excel, je crée un fichier xls avec entêtes de colonnes temporaire ne contenant que la ou les lignes de la base que je souhaite voir fusionnées.

    Ta lettre type doit être réalisée
    Elle doit être liée au nom du fichier temporaire (.xls) et les champs de fusion insérés dans ton texte

    Pour ouvrir Word et lui demander d'ouvrir la lettre modèle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        paramètre = Chemin + "\" + NomFich ' + ".doc"
        n = "WINWORD.EXE " + paramètre
        DemWord = Shell(n, 3) '3 pour maximized
        AppActivate DemWord
    Là, Word est ouvert sur la lettre désirée
    Ici, tu as plusieurs solutions mais je te passe ce que j'ai fait : Une macro en auto_open, dans Word, lance la fusion.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Public NomLettreType
    Sub AutoOpen()
        Main
    End Sub
     
    Public Sub Main()
        Fusionner
    End Sub
     
    Sub Fusionner()
    Dim r, i
        With ActiveDocument.MailMerge
            .Destination = wdSendToNewDocument
            .Execute
        End With
        'Un msgbox avec les boutons Oui et Annulé
        r = MsgBox("Fusion réalisée." & Chr(13) & "Souhaitez vous examiner le document avant impression ?" & Chr(13) & "(Annuler ferme Word et renvoie sur l'application Excel)", 51, "ÉDITER LE RÉSULTAT DE LA FUSION")
        If r = 6 Then
                Exit Sub
            ElseIf r = 2 Then
                quitter
        End If
        NomLettreType = ActiveDocument.Name
        Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
            wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
            Collate:=True, Background:=False, PrintToFile:=False
        quitter
    End Sub
     
    Sub quitter()
        If NomLettreType <> "" Then
            Set MonFichier = GetObject(NomLettreType)
            MonFichier.Activate
            MonFichier.Close SaveChanges:=wdDoNotSaveChanges
        End If
     
        Set MonFichierXls = GetObject("CheminFichierTemporaire\FichierTemporaire.xls")
        MonFichierXls.Activate
        MonFichierXls.Close SaveChanges:=False
     
        Set MonFichierXls = GetObject("D:\xls\FichierExcelAppelant.xls")
        MonFichierXls.Activate
        Set MonFichierXls = nothing
     
        Set MonAppli = Application
        MonAppli.Visible = True
        MonAppli.Quit SaveChanges:=wdDoNotSaveChanges
    End Sub
    La sortie de cette macro renvoie sur le fichier Excel du départ
    Tu peux tout faire à partir d'Excel mais là, je n'ai pas le code sous la main

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Par défaut
    Merci Ouskel'n'or,

    Je regarde tout ça et je reviens

    Daniel

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    NB - J'ai écrit cette macro en 98, tu pourras simplifier, c'est pas interdit (!) En attendant elle fonctionne telle quelle
    A+

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Par défaut
    Me revoila, depuis le temps !!!

    Je constate un petit pb, une fois le publipostage effectué si je choisis :

    - "oui" a la fenetre "editer le resultat de la fusion" il imprime mon courrier en 1 ex : OK, mais aussi le fichier de publipostage (avec les champs) en 4ex ? De plus une fois que je referme mes 2 fichiers word (la lettre et le fichier de publipostage) puis les 2 xls (la base de donnees et le temp) il m'ouvre une fenetre intitulée "fichier maintenant disponible" avec : "temp.xls est maintenant disponible pour modification" choix de "lecture-ecriture" ou "annuler"

    - "non" : même résultat en sortie de fichiers avec le pb de temp.xls

    - "annuler" : il referme les 2 words, les 2 xls, mais même pb pour le temp.xls

    Merci

    Danielh

Discussions similaires

  1. [Toutes versions] VBA : Ouvrir un fichier Word à partir d'Excel en désactivant la mise à jour des données.
    Par napidev dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2014, 16h07
  2. [XL-2013] Publipostage Word à partir d'Excel : Création d'un nombre de pages illimité
    Par Chtik dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/03/2014, 19h20
  3. Publipostage Word à partir d'Excel
    Par Kara dans le forum Delphi
    Réponses: 30
    Dernier message: 17/08/2007, 17h39
  4. [VBA-E]Fermeture de windows à partir d'Excel
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2007, 08h22
  5. [VBA-E]ouverture d'access à partir de EXCEL
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/08/2006, 12h40

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