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

VBA Word Discussion :

Boucle Publipostage & PDF - VBA


Sujet :

VBA Word

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut Boucle Publipostage & PDF - VBA
    Bonjour !

    J'ai lu les tutoriels publipostages & pdf (notamment...) mais je n'arrive pas à trouver la solution à mon pbl.

    Le but : j'ai une base de données de 10000 clients à qui je dois faire une lettre (ok, simple publipostage gérée par des champs ds Word).
    Mais, ça se complique... chaque client achète un des 5 produits à un des 100 distributeurs. Pour chaque distributeur et à chq produit, il faut que j'envoie en pdf copies des documents envoyés aux clients (un pdf regroupant plusieurs lettres).

    Souci n°1 : j'ai repris le tuto "publipostage" (7-G), il y a une fusion & attribution de noms pour des doc allant de i à i en les nommant en fonctions de 2 critères ... C'est top... mais pour mon cas, il faudrait aller de i à j avec j+1 correspondant à une combinaison produit / distributeur différente. Mais ça, je ne sais pas l'écrire.

    Souci n°2 : pour la transformation en pdf, le tuto "Word en pdf" (III-B) donne une macro qui ne veut pas fonctionner. J'ai bien coché "enregistrement automatique", j'ai supprimé "date & heure" et n'est pas coché l'emplacement par défaut "mes documents", et malgré le texte de la macro, il nomme le fichier en date & heure.pdf sous mes documents... j'ai dû louper qq ch ??

    Souci n°3 : pour que cela marche, je me disais que la macro devait permettre de trier la base de données selon les critères pdt / distributeur. J'ai trouvé le code suivant, mais qui s'applique à SQL, et non à Excel. Je ne sais pas écrire open... pour mon doc Excel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SetDataSortOrder()
        Dim appOffice As OfficeDataSourceObject
     
        Set appOffice = Application.OfficeDataSourceObject
     
        appOffice.Open bstrConnect:="DRIVER=SQL Server;SERVER=ServerName;" & _
            "UID=user;PWD=;DATABASE=Northwind", bstrTable:="Employees"
     
        appOffice.SetSortOrder SortField1:="ZipCode", _
            SortAscending1:=False, SortField2:="LastName", _
            SortField3:="FirstName"
    End Sub
    Bref, j'ai bien cherché... mais il me manque des petites choses partout qui font que je n'obtiens pas le résultat attendu, il me manque aussi beaucoup de pratique pour le VBA surtout sous word ! Ce serait super gentil de bien vouloir me filer un coup de main...

    En vous remerciant bcp d'avance.
    Elise

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,


    1-
    la boucle se fait de 0 à iR qui est le nombre maximum de lignes.
    Si tu vas à iR + 1 tu n'as plus de données.

    2-
    Pour la macro avec PDF, il n'est pas besoin de cocher quoi que ce soit.
    As-tu un message d'erreur ?

    3-
    Le SQL ne fonctionne pas pour Excel.

    Essaie d'être plus précises sur les problèmes que tu rencontres, parce que là j'ai du mal de bien cerner tes soucis.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    Salut Heureux-Oli !

    Sorry, je vais essayer d'être + claire...

    Souci 1: J'ai repris ton tuto
    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
    For i = 1 To iR
        With oDoc.MailMerge
            .DataSource.FirstRecord = i
            .DataSource.LastRecord = i
            .Destination = wdSendToNewDocument
            .Execute
            .DataSource.ActiveRecord = i
            DocName = .DataSource.DataFields(37).Value
            DocName = DocName & "-" & .DataSource.DataFields(2).Value
            Debug.Print DocName; i
        End With
        With ActiveDocument
            .SaveAs "c:\" & DocName & ".doc"
            .Close
        End With  
    Next i
    La macro ne fusionne / n'enregistre que la première ligne (lettre) pour chacune des combinaisons "produit" & "distributeur" (2 & 37 ci-dessus). Je n'ai donc pas tous les enregistrements.
    Ds mon fichier, une ligne = une lettre, et je souhaiterais avoir des doc de plusieurs lettres qui réuniraient toutes les mêmes conditions des colonnes "produit" & "distributeur".
    Il faudrait donc que "DataSource.LastRecord = j" (et non "i"),et pour cela définir j comme étant le dernier enregistrement qui réunisse les mêmes critères (pdt & distrib)que i. Et c'est là que je bloque.

    Souci 2: Joli copier-coller de ton cours...
    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
    Sub testPrintPDF()
    Dim oldPrinter As String
    Dim stChemin As String
    Dim stNom As String
     
    Dim PDFCreator1 As New clsPDFCreator
    oldPrinter = ActivePrinter
    ActivePrinter = "PDFCreator"
    If Len(ActiveDocument.Path) = 0 Then
        stChemin = "c:\temp"
    Else
        stChemin = ActiveDocument.Path
    End If
    If Len(ActiveDocument.Name) = 0 Then
        stNom = "documentPDF.pdf"
    Else
        stNom = ActiveDocument.Name
    End If
    With PDFCreator1
       .cOption("UseAutosave") = 1
       .cOption("UseAutosaveDirectory") = 1
       .cOption("AutosaveDirectory") = stChemin
       .cOption("AutosaveFilename") = stNom
       .cOption("AutosaveFormat") = 0                            ' 0 = PDF
       .cStart
       .cClearCache
    End With
    ActiveDocument.PrintOut Background:=True
    PDFCreator1.cClose
    ActivePrinter = oldPrinter
     
    End Sub
    Si je comprends bien, normalement les phrases :
    stChemin = ActiveDocument.Path
    et stNom = ActiveDocument.Name
    devraient permettre d'enregistrer le fichier à l'endroit où il est et avec le nom qu'il porte déjà. Mais ce n'est pas le cas. J'ai coché "enregistrement automatique" ds les options PDFCreator (autrement j'avais la fenetre qui me demandait le nom & l'emplacement). Maintenant, ça se fait bien automatique, sans de message d'alerte, mais il ne tient pas compte du tout de la macro. Il prend les critères par défaut de l'enregistrement automatique c'est à dire qu'il nomme le fichier date&heure.pdf et qu'il l'enregistre sous "mes documents" (et non à l'emplacement du fichier original).

    Pour le souci 3 : Oui, le code était fait pour du SQL. Est-ce que cela veut dire qu'on ne peut pas trier le fichier source Excel depuis Word et que cette fonction ne pouvait s'appliquer que sur SQL ? Si inadapté, je le ferai depuis Excel. Pas de souci.

    Merci bcp d'avance. Espère avoir été + claire.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut

    Pour le souci 1
    Peux tu me mettre ton fichier source que je jette un oeil ?
    si c'est possible. Tu peux le vider de sa substance.

    Pour le second, la macro doit être simplement lancée, elle n'a aucun impact sur la boîte de dialogue liée à l'impression.
    Tu crées un document, tu fais un sauvegarde, tu te positionnes dans le code et tu fais F5

    Non, on ne peut utiliser du SQL pour Excel, le langage SQL est utilisé dans les bases de données.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    Sur l'exemple en PJ, il faudrait obtenir 9 fichiers de 1 à 17 pages.

    Pour le souci 2... il vient encore de me créer un fichier 20090202195903.pdf sous "mes documents"... . Il n'en fait qu'à sa tête...
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Comment fais-tu pour obtenir ce fichier ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Comment espères-tu avoir 9 fichier de 1 à 17 pages ?
    Dans la colonnes 1, je n'ai que 5 valeurs différentes ?
    Pour les noms, ils sont tous différents ?
    Pour les produits il n'y a que trois différences ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    Le fichier de base de données ? C'est une extraction du Cklikview qui requete sur le logiciel client.

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour imprimer le fichier ?
    comment fais-tu ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    9 fichiers =
    1 fichier chaise - distrib 1 incluant 1 pages.
    1 fichier chaise - distrib 2 incluant 1 pages.
    1 fichier chaise - distrib 3 incluant 17 pages.
    1 fichier Table - distrib 1 incluant 17 pages.
    1 fichier Table - distrib 2 incluant 11 pages.
    1 fichier Table - distrib 3 incluant 13 pages.
    1 fichier Table - distrib 4 incluant 6 pages.
    1 fichier chaise - distrib 2 incluant une page.
    1 fichier chaise - distrib 3 incluant une page.

    Chaque client reçoit une page.
    Chq distributeur doit recevoir une copie de tout ce que nous avons envoyé à chacun de leurs clients et cela avec un classement par produit.

    Plus clair ainsi ?

    Dans la vraie vie, le fichier a bcp plus de colonnes (info) à reporter et bcp + de lignes (les fameuses 10 000 ....)

  11. #11
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    Pour imprimer le fichier en pdf, je mets sur le document que je souhaite imprimer, je fais outil, macro, testpdf.

    J'ai essayé aussi en me mettant sur l'appli VBA et F5, il enregistre bien un doc en .pdf, mais pas du tout au bon nom ni au bon endroit...

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pour ce qui est du nom de fichier et du répertoire, ça ne fonctionne plus, je vais chercher pourquoi !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    ok, je file avant de me faire enfemer au buro. Merci bcp de m'aider. A demain (si tu es dispo) pour la suite...
    Bonne soirée / nuit.
    Elise

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour le PDF, j'ai un peu avancé.
    Il faut supprimer l'enregistrement automatique et activer le moniteur d'impression PDFCreator.
    Dans ce cas, on ne pose pas de question à l'utilisateur, il est juste avertit que son document est en cours d'impression.

    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
    Sub testPrintPDF()
    Dim oldPrinter As String
    Dim stChemin As String
    Dim stNom As String
     
     Shell "C:\Program Files\PDFCreator\PDFCreator.exe", vbNormalFocus
     
    Dim PDFCreator1 As New clsPDFCreator
    oldPrinter = ActivePrinter
    'On va mettre en mémoire dans une
    'variable le nom de l'imprimante par défaut
    ActivePrinter = "PDFCreator"
    'Mettre comme imprimante par défaut PDFCreator
    If Len(ActiveDocument.Path) = 0 Then
        stChemin = "c:\temp"
    Else
        stChemin = ActiveDocument.Path
    End If
    'Si le document n'a pas été sauvegardé, le PDF sera dans le répertoire c:\temp
    'et un nom par défaut documentPDF;pdf
    If Len(ActiveDocument.Name) = 0 Then
        stNom = "documentPDF.pdf"
    Else
        stNom = ActiveDocument.Name
    End If
    'les option PDFCreator
    With PDFCreator1
       .cOption("UseAutosave") = 1
       .cOption("UseAutosaveDirectory") = 1
       .cOption("AutosaveDirectory") = stChemin
       .cOption("AutosaveFilename") = stNom
       .cOption("AutosaveFormat") = 0                            ' 0 = PDF
       .cStart
       .cClearCache
    End With
    ActiveDocument.PrintOut Background:=True
    PDFCreator1.cClose
    ActivePrinter = oldPrinter
    ' Change l'imprimante par défaut
     
    End Sub
    J'ai juste ajouté un ligne.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    Bonjour Oli,

    Ca veut pas marcher... Le résultat, c'est qu'il m'ouvre le fenetre de moniteur d'impression, il l'a referme sans effet.
    Il ouvre aussi la fenêtre normal de PDFCreator avec Titre / date / auteur / ... qu'il faut valider sinon rien ne se passe.
    Il propose ensuite l'enregistrement sous "mes documents" (emplacement par défaut qui ne correspond pas à l'emplacement de mon doc d'essai qui est sur le bureau).
    bref... ça veut pas... ça marchait chez toi ?

    Elise

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Oui,

    C'était concluant chez moi, c'est pour cette raison que j'ai posté le code.


    Citation Envoyé par Lilou51 Voir le message
    Bonjour Oli,

    Ca veut pas marcher... Le résultat, c'est qu'il m'ouvre le fenetre de moniteur d'impression, il l'a referme sans effet.
    Il ouvre aussi la fenêtre normal de PDFCreator avec Titre / date / auteur / ... qu'il faut valider sinon rien ne se passe.
    Il propose ensuite l'enregistrement sous "mes documents" (emplacement par défaut qui ne correspond pas à l'emplacement de mon doc d'essai qui est sur le bureau).
    bref... ça veut pas... ça marchait chez toi ?

    Elise
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    Le pbl viendrait peut-être du fait que je n'ai pas téléchargé le formulaire fourni par PDFCreator, comme mon besoin était d'automatiser la procédure d'impression, ça ne semblait pas utile. Est-ce que cela peut avoir un impact ?
    S'il faut que je télécharge, je ne sais pas comment faire... J'ai pris le txt ci-dessous, l'ai mis ds un module, mais ça ne doit pas fonctionner comme cela...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Load "frmPDFCreator"
    frmPDFCreator.Show
    Sorry de ne pas savoir mieux me débrouiller...

  18. #18
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Non, le formulaire n'a aucun impact.

    Là où je suis perdu, c'est que je viens d'essayer le code donné au boulot et ça fonctionne très bien.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  19. #19
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 170
    Points : 191
    Points
    191
    Par défaut
    A l'aide ! Après un après-midi de plus à chercher sur les forums et autres tutos, suis toujours ds la panade !

    Résumons :
    Souci 2 : PDF
    Heureux-Oli me propose un code pour enregistrer automatiquement en pdf, je fais comme lui, mais ça ne marche pas... Qq'un aurait une idée ? un début d'explication ?

    Souci 1 : boucle publipostage
    J'ai un code qui est capable de générer une lettre par enregistrement correspondant à la combinaison de 2 critères (colonne 2 & 37).
    Le souci c'est qu'il ne génère qu'une lettre et qu'il faudrait qu'il génére plusieurs lettres car il existe plusieurs enregistrements correspondant à cette combinaison.
    Il y a une histoire de boucle ou de filtre à gérer que je ne sais pas gérer.
    Je joins le code :
    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
    Sub Macro()
     
     
    Dim iR As Integer
    Dim i As Integer
    Dim oDoc As Document
    Dim DocName As String
    Dim oDS As MailMergeDataSource
     
     
    Set oDoc = ActiveDocument
    Set oDS = oDoc.MailMerge.DataSource
     
    iR = oDoc.MailMerge.DataSource.RecordCount - 1
     
    Debug.Print x
     
     
        sup = MsgBox("Voulez-vous démarrer la fusion du document ?", vbYesNoCancel + vbQuestion, "Fusion ?")
     
     
     
    If sup = vbYes Then
     
     
    For i = 1 To iR
        With oDoc.MailMerge
            .DataSource.FirstRecord = i
             .DataSource.LastRecord = i
            .Destination = wdSendToNewDocument
            .Execute
            .DataSource.ActiveRecord = i
            DocName = .DataSource.DataFields(37).Value
            DocName = DocName & "-" & .DataSource.DataFields(2).Value
            Debug.Print DocName; i
        End With
        With ActiveDocument
            .SaveAs "c:\" & DocName & ".doc"
            .Close
        End With
     
    Next i
    End If
     
    End Sub
    Ca inspirerait qq'un, ce serait cool... Parce que là, je désespère...

    Merci bcp d'avance de votre aide & disponibilité.

  20. #20
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour ta boucle, il faut que tes lignes soient triées.
    Et seulement dans ce cas, on peut faire une boucle sur les valeurs des différentes lignes.

    Mais tu ne dois pas utiliser la méthode de publipostage normale, mais plutôt envoyer dans un fichier tes données.

    La méthode que je donne dans le tuto ne permet pas une sélection des enregistrement, mais une boucle sur tous les enregistrements.

    Par contre, pour le PDF je ne vois pas ce qui coince.
    N'as-tu pas une seconde machine pour essayer.
    J'ai Win XP.

    Si tu as un peu de temps, tu peux toujours faire une machine virtuelle

    M$ fournit VPC 2007 qui permet d'avoir une machine virtuelle sur une machine existante.
    C'est parfois très pratique pour faire des test.

    Ce qui se passe avec la commande Shell : une fenêtre avec la liste des impressions en cours s'affiche.

    Essaies par le menu démarrer d'ouvrir la console PDFCreator et d'utiliser le code pour l'impression.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/06/2011, 00h22
  2. faire un publipostage en PDF avec nom d'enregistrement
    Par Bernard67 dans le forum VBA Word
    Réponses: 31
    Dernier message: 01/02/2008, 20h51
  3. Impression en boucle de doc.pdf en php
    Par Ashleycole dans le forum Langage
    Réponses: 1
    Dernier message: 20/07/2007, 13h45
  4. [FPDF] Publipostage de PDF avec PHP
    Par jcachico dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 08/05/2007, 20h44
  5. Utiliser pour publipostage sous pdf
    Par toppich88 dans le forum BIRT
    Réponses: 3
    Dernier message: 12/06/2006, 17h34

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