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 commande word


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    En manuel, dans Word, tu n'arrives pas enregistrer un document au format PDF non plus ?

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci Fring,

    En manuel, sous word ou excel, je ne peux pas enregistrer en PDF, il faut que je fasse "imprimer" et que je sélectionne l'imprimante virtuelle "PDFCreator".....

    Et en te répondant, je commence à comprendre ce qui a pu se passer : étant donné que ma version de Excel n'offre pas la possibilité "d'enregistrer sous... PDF" , ton code ne peut pas fonctionner....alors qu'avec HTML, ça fonctionne puisqu'il apparait dans "enregistrer sous....HTML"

    Donc, en fait, il faudrait passer par l'imprimante virtuelle....c'est à dire que l'"Export"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDoc.ExportAsFixedFormat OutputFileName:=fichePD & nomfiche & ".pdf", ExportFormat:=wdExportFormatPDF
    doit être remplacé par "PRINT"....


    Mais si c'est ça, j'aurai besoin que tu m'aides car hier j'ai fait F2 pour trouver des instructions concernant PDF, et je n'ai rien trouvé.....qui a fonctionné....

    Merci,

    A+

  3. #23
    Expert confirmé
    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
    Par défaut
    Salut, bis repetita placent ... Cette formulation est pour Excel PC 2007+.
    Utilise l'enregistreur de macros en sélectionnant l'imprimante PDFCreator et tu auras le code correspondant.

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci kiki29,

    J'avais déjà suivi ton conseil, (avec l'enregistreur de macro), je sais donc comment écrire mon imprimante virtuelle. Par contre c'est le code qui pose problème : la macro word ne peut pas être mise dans VBA excel, et donc, soit je crée et j'ouvre en permanence un fichier word avec la macro d'impression en PDF et je la fait tourner pour ma fiche, soit il a une autre solution (et c'est celle-là que je cherche.....)

    Merci,
    A+

  5. #25
    Expert confirmé
    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
    Par défaut
    Salut, voir ceci : exécuter macro Word à partir d'excel

    Re, ici cela fonctionne
    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
    Option Explicit
     
    Sub Imprimer_DocWordDepuisExcel()
    Dim AppWord As Object
    Dim sChemin As String
    Dim sPrinterDefault As String
     
        sChemin = ThisWorkbook.Path & "\" & "Test.doc"
     
        Set AppWord = CreateObject("Word.Application")
        sPrinterDefault = AppWord.ActivePrinter
     
        AppWord.ActivePrinter = "PDFCreator"
     
        With AppWord.Documents.Open(sChemin)
            .PrintOut Background:=False, Copies:=1
            .Close False
        End With
     
        AppWord.ActivePrinter = sPrinterDefault
        AppWord.Quit
     
        Set AppWord = Nothing
    End Sub

  6. #26
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    super kiki29,

    exactement ce que je cherchais à faire !!!

    j'ai juste une dernière petite galère...: au moment de l'impression en imprimante virtuelle, je suis obligé de valider = "enregistrer " + définir chemin du fichier pdf


    j'ai essayé de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application .displayalert =true
    ça ne fonctionne pas...idem avec "false "....

    il n'y à pas moyen de valider automatiquement et d'indiquer le chemin de l'emplacement du pdf ??

    merci,
    À+

  7. #27
    Expert confirmé
    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
    Par défaut
    Salut, il te faut paramétrer PDFCreator
    Aller dans le dossier d'installation

    • Lancer le moniteur d'impression PDFCreator.exe

    Puis dans Menu Imprimante
    • Options
    • Enregistrement Automatique

    Cocher
    • Utiliser l'enregistrement automatique
    • Utiliser ce répertoire pour l'enregistrement automatique
    chez moi tous les PDF ( Adobe Acrobat, PDFCreator ) vont dans
    C:\Documents and Settings\Philippe\Mes documents\PdfOut\
    • Cliquer sur le bouton Enregistrer

  8. #28
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    ça fonctionne pile - poil !!!

    merci kiki29

    dois-je en conclure qu' on ne peut pas mettre ces "arguments " (enregistrement et chemin) dans le code VBA et que donc, il faut modifier "manuellement " le chemin ?

    merci,
    À+

  9. #29
    Expert confirmé
    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
    Par défaut
    Salut, oui cela est faisable, livré brut de fonderie.
    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
    Option Explicit
     
    Sub Imprimer_PDFCreator_SelFichier()
    Dim sDossier As String
    Dim FD As FileDialog, sNomPDF As String
     
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add "Documents Word", "*.doc*", 1
            If .Show <> -1 Then Exit Sub
            DoEvents
        End With
     
        sNomPDF = "Test Word.pdf"
        sDossier = ThisWorkbook.Path & "\"
        PdfCreator FD.SelectedItems(1), sNomPDF, sDossier
    End Sub
     
    Private Sub PdfCreator(sNomFichier As String, sNomFichierOutPDF As String, sDossier As String)
    Dim jobPDF As Object
    Dim AppWord As Object
    Dim sPrinterDefault As String
     
        Set jobPDF = CreateObject("PDFCreator.clsPDFCreator")
        Set AppWord = CreateObject("Word.Application")
     
        With jobPDF
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
                Exit Sub
            End If
            .cOption("UseAutosave") = 1
            .cOption("UseAutosaveDirectory") = 1
            .cOption("AutosaveDirectory") = sDossier
            .cOption("AutosaveFilename") = sNomFichierOutPDF
     
            '   0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx,
            '   5=tif, 6=ps, 7=eps, 8=txt
            .cOption("AutosaveFormat") = 0
            .cClearCache
        End With
     
        sPrinterDefault = AppWord.ActivePrinter
        AppWord.ActivePrinter = "PDFCreator"
     
        With AppWord.Documents.Open(sNomFichier)
            .PrintOut Background:=False, copies:=1
            .Close False
        End With
     
        DoEvents
     
        With AppWord
            .ActivePrinter = sPrinterDefault
            .Quit
        End With
     
        Set AppWord = Nothing
     
        Do Until jobPDF.cCountOfPrintjobs = 1
            DoEvents
        Loop
     
        jobPDF.cPrinterStop = False
        Do Until jobPDF.cCountOfPrintjobs = 0
            DoEvents
        Loop
     
        jobPDF.cClose
        Set jobPDF = Nothing
    End Sub
     
    Private Sub KillPDFCreator()
    Dim RetVal As Long
        RetVal = Shell("Taskkill /im PDFCreator.exe /f", 0)
    End Sub
    A titre purement documentaire : Imprimez vos documents Word au format PDF à l'aide de PDFCreator

  10. #30
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci kiki29

    le code fonctionne super bien, même si d'après toi il est livré brut de fonderie....

    Je suis arrivé à l'enregistrer avec le nom et dans le dossier que je souhaitais, en changeant sNomPDF et sDossier

    Par contre, je ne suis pas arrivé à modifier le "FD" : il ne faudrait que le code demande où chercher le document (=ouverture de la boite dialogue), mais qu'il l'ouvre "automatiquement".....j'ai essayé de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Filters.Add "Chemin_Complet\Nom_Fichier",".doc", 1
    , mais ça ne fonctionne pas, puisque d'après ce que j'ai compris FD "ouvre" la boite dialogue windows de recherche de fichier....

    Merci de m'indiquer la voie à suivre....

    (et merci de m'avoir donné le lien de Heureux-oli, j'avais déjà regardé le tuto, mais je n'ai pas tout compris concernant les codes....mais je vais m'y replonger...)


    A+

  11. #31
    Expert confirmé
    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
    Par défaut
    Re,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChDir ThisWorkbook.Path
    ou autre

  12. #32
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci kiki29,

    J'ai essayé de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .AllowMultiSelect = False
            .Filters.Clear
            .Filters.Add ChDir ThisWorkbook.Path, 1
            If .Show <> -1 Then Exit Sub
            DoEvents
        End With
    Ca ne fonctionne pas,
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set FD= ChDir ThisWorkbook.Path
    marche pas....Je comprends bien le "chdir", mais je ne sais pas où le mettre dans ton code......

    Une dernière aide ?

    Je te remercie

    A+

  13. #33
    Expert confirmé
    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
    Par défaut
    Re, tu fais n'importe quoi, l'aide en ligne |F1] n'est pas faite pour rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .....
    Dim FD As FileDialog, sNomPDF As String
     
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .InitialFileName = ThisWorkbook.Path
            .AllowMultiSelect = False
            .....

  14. #34
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci kiki29,

    J'ai repris ton code et l'ai modifié suivant tes conseils :
    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
    Option Explicit
     
    Sub Imprimer_PDFCreator_SelFichier()
    Dim sDossier As String
    Dim FD As FileDialog, sNomPDF As String
     
     
        Set FD = Application.FileDialog(msoFileDialogFilePicker)
        With FD
            .InitialFileName = ThisWorkbook.Path & "\Fiches\" & Sheets("Fichiers").Cells(1, 1)
            .AllowMultiSelect = False
            '.Filters.Clear
            '.Filters.Add "document word", "*.doc", 1
            'If .Show <> -1 Then Exit Sub
            DoEvents
        End With
     
        sNomPDF = Sheets("Fichiers").Cells(1, 2) & ".pdf"
        sDossier = ThisWorkbook.Path & "\Fiches format PDF\"
        PDFCreator FD.SelectedItems(1), sNomPDF, sDossier
    End Sub
     
    Private Sub PDFCreator(sNomFichier As String, sNomFichierOutPDF As String, sDossier As String)
    Dim jobPDF As Object
    Dim AppWord As Object
    Dim sPrinterDefault As String
     
        Set jobPDF = CreateObject("PDFCreator.clsPDFCreator")
        Set AppWord = CreateObject("Word.Application")
     
        With jobPDF
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
                Exit Sub
            End If
            .cOption("UseAutosave") = 1
            .cOption("UseAutosaveDirectory") = 1
            .cOption("AutosaveDirectory") = sDossier
            .cOption("AutosaveFilename") = sNomFichierOutPDF
     
            '   0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx,
            '   5=tif, 6=ps, 7=eps, 8=txt
            .cOption("AutosaveFormat") = 0
            .cClearCache
        End With
     
        sPrinterDefault = AppWord.ActivePrinter
        AppWord.ActivePrinter = "PDFCreator"
     
        With AppWord.Documents.Open(sNomFichier)
            .PrintOut Background:=False, copies:=1
            .Close False
        End With
     
        DoEvents
     
        With AppWord
            .ActivePrinter = sPrinterDefault
            .Quit
        End With
     
        Set AppWord = Nothing
     
        Do Until jobPDF.cCountOfPrintjobs = 1
            DoEvents
        Loop
     
        jobPDF.cPrinterStop = False
        Do Until jobPDF.cCountOfPrintjobs = 0
            DoEvents
        Loop
     
        jobPDF.cClose
        Set jobPDF = Nothing
    End Sub
     
    Private Sub KillPDFCreator()
    Dim RetVal As Long
        RetVal = Shell("Taskkill /im PDFCreator.exe /f", 0)
    End Sub
    (je vais l'inclure dans mon code initial, et donc, il y aura une boucle type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for j = 1 to derniereligne
    et donc cells(1,2) deviendra cells (j,2)....)

    Lorsque j'ai tatonné pour modifier le code, après molt essais ça a fonctionné. J'ai sauvegardé, j'ai éteint/rallumé l'ordi et ce matin, lorsque je veux faire tourner le code il s'arrête à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PdfCreator FD.SelectedItems(1), sNomPDF, sDossier
    avec pour message d'erreur "argument ou appel de procédure incorrect".....et là, je ne comprends plus rien....hier soir cela fonctionnait très bien, je n'ai rien changé hormis avoir éteint l'ordi...

    Une idée ?

    Merci,
    A+

    Re,

    Je viens de faire plusieurs essais (en m'inspirant du F2....), et en modifiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PDFCreator FD.SelectedItems(1), sNomPDF, sDossier
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim sNomfichier as string
    PDFCreator sNomfichier, sNomPDF, sDossier
    Cela fonctionne...

    Mais je ne sais pas si ce "remplacement" entre et "sNomfichier" a une conséquence.....

    J'ai fait un test en l'incluant dans mon code, tout fonctionne, mais.....je préfère m'assurer que je ne fais pas une énième bêtise......

    Merci,

    A+

    (je propose aussi de modifier l'intitulé du post et rajouter "impression en pdf"...)

  15. #35
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut Excel commande Word et impression PDF
    Apparemment, le code ne pose pas de problème, je vous remercie tous pour vos conseils, soutien, apports.

    J'ai modifié l'intitulé afin qu'il se rapproche au plus près du post.....

    A+ pour de prochaines aventures.....

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [WD-2003] Commander Excel depuis Word
    Par MarcoCham dans le forum VBA Word
    Réponses: 3
    Dernier message: 15/02/2011, 15h15
  2. Réponses: 1
    Dernier message: 08/01/2006, 00h33
  3. Réponses: 5
    Dernier message: 07/01/2006, 17h55
  4. Excel dans word
    Par belgiuman dans le forum VBA Word
    Réponses: 3
    Dernier message: 11/08/2005, 14h19
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 09/08/2005, 00h43

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