Comment imprimer un document type (Publipostage Excel - Excel) ?

Bonjour,

J'ai un fichier comprenant deux feuilles, l'une contentant une base de donnée et l'autre une présentation d'un document type.

Dans la feuille Document type, celle-ci contient des champs à remplir où excel devra aller rechercher les informations dans la feuille 1 (Base de donnée)

Dans cette base de donnée, figure de nombreux Id (noms de différentes sociétés).

j'aimerai que lorsqu'on est dans le fichier Document type, lors de l'impression, à la prévisualisation plus précisément excel doit générer un Document par ID. (le même procédé final du publipostage sous Word)

exemple : si j'ai 50 noms de sociétés, le document type doit être généré d'un total de 50 ( un exemplaire par société)

une des solutions est de passer sous Word, mais j'aimerai dans la mesure du possible rester sous Excel, et savoir si une solution existe (Avec ou sans VBA)

Pour info, VBA est mon prochain chapitre d'apprentissage (niveau de connaissance actuel "0" :-) )

un tout grand merci pour vos réponses

Bonjour,

J'ai une proposition à vous faire, sans être certain qu'elle corresponde parfaitement à votre souhait. Ce serait de faire une boucle sur les identifiants et au sein de cette boucle, de générer un PDF et/ou une impression papier (sans prévisualisation si vous êtes sûr de votre document type).

Sinon, la solution word existe certainement. Mais pour ma part, je ne maitrise pas et je pense qu'elle est plus contraignante...

Cordialement,

Voici le code à peu de choses près :

Sub Generation()

Dim Dossier$, NomFic$
Dim NbClient%, i%

Dossier = thisworkbook.path & "\" 'dossier pour pdf (supprimer si pas besoin)
NbClients = application.counta(Sheets("Base").range("Clients")) 'nombre clients

for i = 1 to NbClients 'pour chaque client
    With Sheets("DocType") 'sur feuille Doctype
        .Range("NomClient").value = Sheets("Base").range("Clients").cells(i).value 'nom client vaut client en cours
        NomFic = "DOC " & format(now, "YYMMDD") & " " & .Range("NomClient").value & ".pdf" 'nom fichier
        .exportasfixedformat type:=xltypepdf, filename:=Dossier & NomFic, ignoreprintareas:=false 'édition pdf dans dossier
        .Printout copies:=1, ignoreprintareas:=false 'impression papier
    end with
next i

msgbox "Impressions terminées"

end sub

Où il faudra ajuster avec vos références à vous (feuilles "DocType" et "Base", colonnes "Clients" de Base et cellule "Client" de DocType à modifier).

Et je crois que je viens de comprendre en fait votre besoin, à savoir créer un fichier par client (même si je pense que c'est une moins bonne solution...)

Alors, il faudrait plutôt ceci :

Sub Publipostage()

Dim NvWb as workbook
Dim Dossier$, NomFic$
Dim NbClient%, i%

Dossier = thisworkbook.path & "\" 'dossier courant où enregistrer nv doc
NbClients = application.counta(Sheets("Base").range("Clients")) 'nombre de clients dans colonne clients de Base

for i = 1 to NbClients 'pour chaque client
    With Sheets("DocType") 'sur feuille DocType
        .Range("NomClient").value = Sheets("Base").range("Clients").cells(i).value 'Nom client vaut le client en cours sur Base
        NomFic = "DOC " & format(now, "YYMMDD") & " " & .Range("NomClient").value & ".xlsx" 'nom fichier : Doc Date Client
        .copy 'copie dans un nouveau classeur (qui devient actif)
    end with
    set NvWb = Activeworkbook 'notre nouveau classeur
    With NvWb 'sur ce classeur
        '!!! Ces 3 lignes permettent de rompre les liaisons avec fichier de départ (supprimer si pas besoin)
        .activesheet.cells.copy 'copie toutes les cellules
        .activesheet.cells.Pastespecial paste:=xlpastevalues 'collage spécial valeurs
        .activesheet.cells.Pastespecial paste:=xlpasteformats 'collage spécial formats
        'fermeture et sauvegarde
        .close savechanges:=true filename:=Dossier & NomFic
    end with
next i

set NvWb = Nothing
msgbox "Impressions terminées"

end sub

Encore une fois à adapter.

Cdlt,

Bonjour 3GB,

j'ai profité de ma pause pour vous remercier de votre réponse, je me lance en VBA, et je vais essayer le code :-)

je reviens si la problématique n'est pas résolue

Je suis en train de préparer le fichier en question (en mode anonyme) afin de le placer dans le forum pour avoir une meilleur compréhension de ma demande

encore une fois un très grand merci

Cordialement

Rechercher des sujets similaires à "comment imprimer document type publipostage"