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 :

Excel VBA : enregistrer pages selectionnées Word sous PDF depuis excel [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    métreur
    Inscrit en
    Juillet 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : métreur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Excel VBA : enregistrer pages selectionnées Word sous PDF depuis excel
    Bonjour à vous,

    Je reviens vers vous pour la suite de mon programme :
    N'arrivant pas à gérer les destinataires lors de mon publipostage (24 pages vides qui s'affichent) j'ai voulu contourner le problème en enregistrant les 4 premières pages en pdf...
    mais finalement ça ne fonctionne pas non plus (PDF de 28 pages) pourtant ma syntaxe ne semble pas trop déconnante à mon sens
    Si une bonne âme pouvais me mettre sur la bonne voie je lui en serai fortement reconnaissant.
    voici la partie du code en question :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
            Dim docWord As Word.Document
            Dim appWord As Word.Application
            Dim NomBase As String
            Dim TabTarif As Range
            Dim I As Integer
            Dim cheminPergo As String
            Dim Dossier As String
            Dim Dossier2 As String
            Dim Fichier As String
            Dim tmpChemin As String
            Dim tmpFichier As String
     
     
     
                For I = 1 To 20
                    If (Worksheets("tmptarif").Range("A" & I).Value <> "") Then
                        I = I + 1
                    Else
                        Exit For
                    End If
                Next I
                Set TabTarif = Workbooks("0A-H-A calcul VBA").Worksheets("tmptarif").Range("A1:B" & I - 1)
                TabTarif.Copy
     
                NomBase = "D:\ahaVBA\0A-H-A calcul VBA.xlsm"
     
     
                Set appWord = CreateObject("Word.Application")
                appWord.Visible = True
                Set docWord = appWord.Documents.Open("D:\ahaVBA\DevisAHA.docx", ReadOnly:=False)
     
                    docWord.Bookmarks("TableauTarif").Select
                    appWord.Selection.PasteSpecial link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine, DisplayAsIcon:=False
                    docWord.Tables(1).AutoFitBehavior wdAutoFitWindow
                    Application.CutCopyMode = False
     
     
                With docWord.mailMerge
                    'Ouvre la base de données
                    .OpenDataSource Name:=NomBase, _
                    Connection:="Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [tmpBDD$]"
                ''''        'Spécifie la fusion vers l'imprimante
                ''''        .Destination = wdSendToPrinter
                    .suppressBlankLines = True
                ''''            'Prend en compte l'ensemble des enregistrements
                    With .DataSource
                        .firstRecord = wdDefaultFirstRecord
    '                    .lastRecord = wdDefaultLastRecord
                    End With
                        'Exécute l'opération de publipostage
                    .Execute Pause:=False
                End With
                Application.ScreenUpdating = True
     
     
                cheminPergo = "D:\Pergola Alu - Verrière -Puit de Lumière"
                Dossier = UCase(Left(ufFicheClient.tbNom, 1)) & LCase(Mid(ufFicheClient.tbNom, 2)) & " " & "(" & UCase(Left(ufFicheClient.tbVille, 1)) & LCase(Mid(ufFicheClient.tbVille, 2)) & ")"
                Dossier2 = UCase(Left(ufFicheClient.tbNom, 1)) & LCase(Mid(ufFicheClient.tbNom, 2)) & " " & UCase(Left(ufFicheClient.tbPrenom, 1)) & LCase(Mid(ufFicheClient.tbPrenom, 2)) _
                & " " & "(" & UCase(Left(ufFicheClient.tbVille, 1)) & LCase(Mid(ufFicheClient.tbVille, 2)) & ")"
                Fichier = UCase(Left(ufFicheClient.tbNom, 1)) & LCase(Mid(ufFicheClient.tbNom, 2)) & " " & Format(Day(Date), "00") & Format(Month(Date), "00") & Format(Year(Date), "00")
     
     
                If (Worksheets("tmpBDD").Range("AU2").Value <> "") Then
                    tmpChemin = cheminPergo & "\" & Dossier2
                    MkDir (tmpChemin)
                    appWord.ActiveDocument.ExportAsFixedFormat OutputFileName:=tmpChemin & "\" & Fichier & ".pdf", ExportFormat:= _
                    17, OpenAfterExport:=True, OptimizeFor:=0, Range:=0, From:=1, To:=4, Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
                    CreateBookmarks:=0, DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
                    DoEvents
    '                appWord.Close True
                Else
                    tmpChemin = cheminPergo & "\" & Dossier
                    MkDir (tmpChemin)
                    appWord.ActiveDocument.ExportAsFixedFormat OutputFileName:=tmpChemin & "\" & Fichier & ".pdf", ExportFormat:= _
                    17, OpenAfterExport:=True, OptimizeFor:=0, Range:=0, From:=1, To:=1, Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
                    CreateBookmarks:=0, DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
                    DoEvents
    '                appWord.Close True
                End If
            Else
            End If
     
            Unload Me
            Unload ufChiffrage
            Unload ufrecap
            Unload ufFicheClient
            Unload ufTypeClient
    La partie de code en question est ligne 63 mais au moins vous avez une vue d'ensemble du travail

    Merci d'avance pour vos conseils avisés

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, est-ce que cela t'aidera : Impression Document Word en PDF ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    métreur
    Inscrit en
    Juillet 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : métreur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    j'ai eu une fausse joie en voyant les " sur from:="3" mais ça ne résoud pas mon problème les 28 pages sont toujours là
    Mais merci pour la piste

  4. #4
    Membre à l'essai
    Homme Profil pro
    métreur
    Inscrit en
    Juillet 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : métreur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    en fait j'ai 1 problème qui peut être résolu par 2 solutions:
    1- réussir à n'imprimer que les premières pages en PDF
    2- gerer la liste des destinataires par du code mais l'enregistreur de macro n'enregistre rien quand c'est fait manuellement donc je me demande si c'est possible...

  5. #5
    Membre à l'essai
    Homme Profil pro
    métreur
    Inscrit en
    Juillet 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : métreur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2017
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    merci kiki29, j'ai trouvé grâce à ton lien

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

Discussions similaires

  1. Imprimer un word avec publipostage depuis excel (VBA)
    Par Jeradam dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/10/2015, 10h29
  2. [XL-2007] Enregistrer un document Word en PDF depuis une macro EXCEL 2007
    Par davr971 dans le forum Excel
    Réponses: 3
    Dernier message: 13/06/2014, 16h36
  3. Vba imprime word en pdf depuis excel 2003
    Par Kestion100 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/03/2014, 09h41
  4. Mise en page d'un document word depuis excel VBA
    Par tinange dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2012, 12h42
  5. Réponses: 2
    Dernier message: 18/01/2012, 12h48

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