VBA/Excel : bouton impression PDF et nom de fichier sur cellule
Résolu/Fermé
Averroes_75000
Messages postés
8
Date d'inscription
mercredi 13 août 2014
Statut
Membre
Dernière intervention
14 août 2014
-
13 août 2014 à 13:52
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 15 août 2014 à 11:06
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 15 août 2014 à 11:06
A voir également:
- Code vba pour imprimer une feuille excel en pdf
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Imprimer tableau excel sur une page - Guide
- Comment signer un pdf sans l'imprimer - Guide
5 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
14 août 2014 à 11:13
14 août 2014 à 11:13
Il faut avoir PDFCreator pour pouvoir créer un pdf avec Excel 2003
Insérer un UserForm et mettre un CommandButton
Voici le code
Insérer un UserForm et mettre un CommandButton
Voici le code
Option Explicit Private Sub CommandButton1_Click() ToPdf End Sub Sub ToPdf() Dim pdfjob As Object Dim DefaultPrinter Dim chemsave As String chemsave = "C:\Users\Daniel\Documents\Nouveau dossier\" ' mettre ton chemin avec \ à la fin If chemsave = "" Then Exit Sub Set pdfjob = CreateObject("PDFCreator.clsPDFCreator") With pdfjob If .cstart("/NoProcessingAtStartup") = False Then MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator" Exit Sub End If .cOption("UseAutosave") = 1 .cOption("UseAutisaveDirectory") = 1 .cOption("AutosaveDirectory") = chemsave 'chemin destination .cOption("AutosaveFilename") = ActiveSheet.Range("B12").Value & ".pdf" 'nom du fichier .cOption("AutosaveFormat") = 0 .cClearCache End With ActiveWindow.SelectedSheets.PrintOut From:=1, To:=32766, Copies:=1, ActivePrinter:="PDFCreator" 'on imprime la feuille active Do Until pdfjob.cCountOfPrintjobs = 1 DoEvents Loop pdfjob.cPrinterStop = False Do Until pdfjob.cCountOfPrintjobs = 0 DoEvents Loop With pdfjob .cDefaultprinter = DefaultPrinter .cClearCache .cClose End With Set pdfjob = Nothing Dim Ret As Variant MsgBox "Votre PDF se trouve à cet emplacement: " & chemsave, vbInformation, "Convertir en PDF" End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
15 août 2014 à 11:04
15 août 2014 à 11:04
Si tu veux faire une boucle sur toutes les feuilles de ton classeur et les convertir,
Voici le code:
Bon WE
Voici le code:
Option Explicit Dim chemsave As String Private Sub CommandButton1_Click() Dim Ws As Worksheet 'Boucle sur les feuilles du classeur. For Each Ws In ThisWorkbook.Worksheets Ws.Select ToPdf Next Ws MsgBox "Vos PDF se trouvent à cet emplacement: " & chemsave, vbInformation, "Convertir en PDF" End Sub Sub ToPdf() Dim pdfjob As Object Dim DefaultPrinter chemsave = "C:\Users\Daniel\Documents" ' mettre ton chemin suivi de \ à la fin If chemsave = "" Then Exit Sub Set pdfjob = CreateObject("PDFCreator.clsPDFCreator") With pdfjob If .cstart("/NoProcessingAtStartup") = False Then MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator" Exit Sub End If .cOption("UseAutosave") = 1 .cOption("UseAutisaveDirectory") = 1 .cOption("AutosaveDirectory") = chemsave 'chemin destination .cOption("AutosaveFilename") = ActiveSheet.Range("B12").Value & ".pdf" 'nom du fichier pdf .cOption("AutosaveFormat") = 0 .cClearCache End With ActiveWindow.SelectedSheets.PrintOut From:=1, To:=32766, Copies:=1, ActivePrinter:="PDFCreator" 'on imprime la feuille active Do Until pdfjob.cCountOfPrintjobs = 1 DoEvents Loop pdfjob.cPrinterStop = False Do Until pdfjob.cCountOfPrintjobs = 0 DoEvents Loop With pdfjob .cDefaultprinter = DefaultPrinter .cClearCache .cClose End With Set pdfjob = Nothing 'MsgBox "Votre PDF se trouve à cet emplacement: " & chemsave, vbInformation, "Convertir en PDF" End Sub
Bon WE
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
15 août 2014 à 11:06
15 août 2014 à 11:06
Il faut lire:
chemsave = "C:\Users\Daniel\Documents\" ' mettre ton chemin suivi de \ à la fin
chemsave = "C:\Users\Daniel\Documents\" ' mettre ton chemin suivi de \ à la fin
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 août 2014 à 16:59
13 août 2014 à 16:59
Bonjour,
Si tu as Office 2007 et plus, tu peux mettre ceci pour enregistrer au format pdf:
Si tu as Office 2007 et plus, tu peux mettre ceci pour enregistrer au format pdf:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "W:\nomdelentreprise\TRANSACTIONS\Commandes\" & Range("B12").Value & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False
Averroes_75000
Messages postés
8
Date d'inscription
mercredi 13 août 2014
Statut
Membre
Dernière intervention
14 août 2014
Modifié par Averroes_75000 le 14/08/2014 à 09:59
Modifié par Averroes_75000 le 14/08/2014 à 09:59
Bonjour,
Je te remercie pour ta réponse.
J'ai oublié de préciser que je suis sur Excel 2003.
Ce code ne fonctionne pas...
Aurais-tu une autre astuce ?
J'ai trouvé un code qui répond presque à ma demande :
Les problèmes sont les suivants :
- Pas de prise en compte de la cellule pour nommer le fichier PDF ;
- Pas de prise en compte du parcours pour enregistrer le fichier ;
- Plusieurs fenêtres s'ouvrent : enregistrer sous de Windows, PDF creator.
Je te remercie pour ta réponse.
J'ai oublié de préciser que je suis sur Excel 2003.
Ce code ne fonctionne pas...
Aurais-tu une autre astuce ?
J'ai trouvé un code qui répond presque à ma demande :
Private Sub CommandButton1_Click()
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
Filename = "C:\Test" & ActiveSheet.Range("A1").Value & ".pdf"
SendKeys Filename & "{ENTER}", False
End Sub
Les problèmes sont les suivants :
- Pas de prise en compte de la cellule pour nommer le fichier PDF ;
- Pas de prise en compte du parcours pour enregistrer le fichier ;
- Plusieurs fenêtres s'ouvrent : enregistrer sous de Windows, PDF creator.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Averroes_75000
Messages postés
8
Date d'inscription
mercredi 13 août 2014
Statut
Membre
Dernière intervention
14 août 2014
14 août 2014 à 14:40
14 août 2014 à 14:40
cs_Le Pivert,
Tu es un roi. C'est exactement ce code que je recherchais.
Tout fonctionne à merveille (au passage j'ai supprimé la ligne 1).
MERCI
Tu es un roi. C'est exactement ce code que je recherchais.
Tout fonctionne à merveille (au passage j'ai supprimé la ligne 1).
MERCI
Modifié par Averroes_75000 le 14/08/2014 à 15:04
J'ai une question supplémentaire.
Comment faire si je souhaite imprimer plusieurs PDF à partir du CommandButton ?
Ma démarche est la suivante :
- Je dispose d'une liste déroulante en C1 qui commence de 1 à 100
- J'ai 100 PDF à lancer.
Si tu trouve ça, tu passes au niveau empereur ! :)
14 août 2014 à 16:11
Ce qu'il faut savoir c'est sous quel nom tu vas enregistrer ces fichiers, pour modifier la macro ToPdf ?
Voici un exemple de boucle que j'avais fait sur une listBox, tu peux t'en inspirer:
14 août 2014 à 16:38
Mon cas est le suivant :
- C1 est ma liste déroulante
- B12 est ma cible pour enregistrer sous en PDF (le code que tu as trouvé).
Au passage, à chaque fois que je change le numéro de la liste déroulante (C1), la cellule B12 change automatiquement. C'est ce qui me permet de nommer le fichier.
Ma problématique est de savoir si je peux exécuter le tout dans un seul code, c'est-à-dire les deux que tu proposes.
J'espère ne pas t'avoir embrouillé :)
14 août 2014 à 16:43
Donc il faut faire une boucle sur ta liste. Comment ce nomme t'elle?
14 août 2014 à 17:09
Pour le changement automatique de ma cellule, j'utilise la fonction RechercheV (=RECHERCHEV(F6;Base_de_données;21))