OVH Cloud OVH Cloud

Création PDF (Suite)

8 réponses
Avatar
Jacques
Salut le forum

Bon je reviens avec mes histoire de PDF.

Jusqu'a présent cela ne fonctionné pas, même avec une feuille toute simple
en appuyant sur le bouton de création PDF, avec acrobat writen.

Donc, j'ai réinstallé, puis maintenant cela fonctionne.

Donc j'ai réessayer, sur mon fichier.

Donc voici le code que j'utilise, il inclu l'impression de la feuille du
mois (Pas le sujet) ainsi que la création du PDF.

Sub Impression()
Dim TheNum As Byte, reponse1, reponse2
TheNum = CByte(Month(Date))
Sheets(TheNum).Activate
Masquer 'Sert a masquer une partie de la feuillle
'Impression de la fiche de paye
reponse1 = MsgBox("Voulez-vous imprimer la feuille de paye du mois de " &
Worksheets(TheNum).Name & " ? ", vbYesNo + vbQuestion, "VALIDATION")
If reponse1 = vbYes Then
With Sheets(TheNum)
.lblDateDeSignature = "Fait à : VALENCE" & vbTab _
& vbTab & "Le : " _
& Application.Proper(Format(Now, "dddd dd mmmm yyyy ")) _
& vbTab & vbTab & "Mode de réglement : Par chèque banquaire"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Call CreationPDF
End With
Afficher 'Sert a réafficher la partie masquée de la feuillle
Else
USF_ImpFeuilleDePayeAnterieurs.Show 0
End If
End Sub

Sub CreationPDF() 'Message sur forum, Objet : Création de fichier PDF

Dim TheNum As Byte
TheNum = CByte(Month(Date))

Dim Variable_Imp As String
Masquer
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Variable_Imp = Application.ActivePrinter 'mise en memoire de l'imprimante
par defaut
' (Port PDF) 'l'imprimante à utiliser
Application.ActivePrinter = _
"Acrobat Distiller sur Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Acrobat Distiller sur D:Fiche de paye nourisse & Year(Now())&
(TheNum).pdf", Collate:=True '& (TheNum)
Application.ActivePrinter = Variable_Imp ' reinitialiser l'imprimante pas
défaut
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox "Imprimante non disponible.", vbInformation, "INFORMATION"
Application.ActivePrinter = Variable_Imp
Case Else
Application.ActivePrinter = Variable_Imp
End Select
Application.ScreenUpdating = True
Afficher
End Sub
Sub Masquer()

Columns("AN:IV").EntireColumn.Hidden = True

End Sub
Sub Afficher()

Columns("AN:IV").EntireColumn.Hidden = False

End Sub

Mon souci et l'envoie dans le répertoire voulu, ainsi que le nommage, qui
veux pas se faire.

Merci a vous, Jacques

8 réponses

Avatar
ClémentMarcotte
Bonjour,

Mon souci et l'envoie dans le répertoire voulu, ainsi que le nommage, qui
veux pas se faire.


M'est avis que cela dépend du programme de génération des PDF et pas
d'Excel.

Avatar
jps
salut jacques
pour l'envoi dans le répertoire voulu et le nommage, je ne sais pas mais
note, par contre, que "bancaire" s'écrit ainsi...
c'est quand même plus zoli sur un document qui dure toute une vie...
jps

"Jacques" a écrit dans le message de
news:43417be0$0$981$
Salut le forum

Bon je reviens avec mes histoire de PDF.

Jusqu'a présent cela ne fonctionné pas, même avec une feuille toute simple
en appuyant sur le bouton de création PDF, avec acrobat writen.

Donc, j'ai réinstallé, puis maintenant cela fonctionne.

Donc j'ai réessayer, sur mon fichier.

Donc voici le code que j'utilise, il inclu l'impression de la feuille du
mois (Pas le sujet) ainsi que la création du PDF.

Sub Impression()
Dim TheNum As Byte, reponse1, reponse2
TheNum = CByte(Month(Date))
Sheets(TheNum).Activate
Masquer 'Sert a masquer une partie de la feuillle
'Impression de la fiche de paye
reponse1 = MsgBox("Voulez-vous imprimer la feuille de paye du mois de " &
Worksheets(TheNum).Name & " ? ", vbYesNo + vbQuestion, "VALIDATION")
If reponse1 = vbYes Then
With Sheets(TheNum)
.lblDateDeSignature = "Fait à : VALENCE" & vbTab _
& vbTab & "Le : " _
& Application.Proper(Format(Now, "dddd dd mmmm yyyy ")) _
& vbTab & vbTab & "Mode de réglement : Par chèque banquaire"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Call CreationPDF
End With
Afficher 'Sert a réafficher la partie masquée de la feuillle
Else
USF_ImpFeuilleDePayeAnterieurs.Show 0
End If
End Sub

Sub CreationPDF() 'Message sur forum, Objet : Création de fichier PDF

Dim TheNum As Byte
TheNum = CByte(Month(Date))

Dim Variable_Imp As String
Masquer
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Variable_Imp = Application.ActivePrinter 'mise en memoire de l'imprimante
par defaut
' (Port PDF) 'l'imprimante à utiliser
Application.ActivePrinter = _
"Acrobat Distiller sur Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Acrobat Distiller sur D:Fiche de paye nourisse & Year(Now())&
(TheNum).pdf", Collate:=True '& (TheNum)
Application.ActivePrinter = Variable_Imp ' reinitialiser l'imprimante pas
défaut
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox "Imprimante non disponible.", vbInformation, "INFORMATION"
Application.ActivePrinter = Variable_Imp
Case Else
Application.ActivePrinter = Variable_Imp
End Select
Application.ScreenUpdating = True
Afficher
End Sub
Sub Masquer()

Columns("AN:IV").EntireColumn.Hidden = True

End Sub
Sub Afficher()

Columns("AN:IV").EntireColumn.Hidden = False

End Sub

Mon souci et l'envoie dans le répertoire voulu, ainsi que le nommage, qui
veux pas se faire.

Merci a vous, Jacques




Avatar
Jacques
Salut

Merci de vos réponses.

Le logiciel et Adobe acrobat.

Donc si je comprends bien, je ne peu pas nommer le fichier comme je le veux,
et ni choisir le chemin d'accés directement par excel, snif dommage.

Pour ce qui es de la faute d'orthographe, cela fait 1 et demi, et même
l'assitante maternelle, b'a rien vu, lol

Je vais rectifier de ce pas, car oui c'est pas trés Zoli....

Merci, Jacques
"jps" a écrit dans le message de news:
%
salut jacques
pour l'envoi dans le répertoire voulu et le nommage, je ne sais pas mais
note, par contre, que "bancaire" s'écrit ainsi...
c'est quand même plus zoli sur un document qui dure toute une vie...
jps

"Jacques" a écrit dans le message de
news:43417be0$0$981$
Salut le forum

Bon je reviens avec mes histoire de PDF.

Jusqu'a présent cela ne fonctionné pas, même avec une feuille toute
simple
en appuyant sur le bouton de création PDF, avec acrobat writen.

Donc, j'ai réinstallé, puis maintenant cela fonctionne.

Donc j'ai réessayer, sur mon fichier.

Donc voici le code que j'utilise, il inclu l'impression de la feuille du
mois (Pas le sujet) ainsi que la création du PDF.

Sub Impression()
Dim TheNum As Byte, reponse1, reponse2
TheNum = CByte(Month(Date))
Sheets(TheNum).Activate
Masquer 'Sert a masquer une partie de la feuillle
'Impression de la fiche de paye
reponse1 = MsgBox("Voulez-vous imprimer la feuille de paye du mois de " &
Worksheets(TheNum).Name & " ? ", vbYesNo + vbQuestion, "VALIDATION")
If reponse1 = vbYes Then
With Sheets(TheNum)
.lblDateDeSignature = "Fait à : VALENCE" & vbTab _
& vbTab & "Le : " _
& Application.Proper(Format(Now, "dddd dd mmmm yyyy ")) _
& vbTab & vbTab & "Mode de réglement : Par chèque banquaire"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Call CreationPDF
End With
Afficher 'Sert a réafficher la partie masquée de la feuillle
Else
USF_ImpFeuilleDePayeAnterieurs.Show 0
End If
End Sub

Sub CreationPDF() 'Message sur forum, Objet : Création de fichier PDF

Dim TheNum As Byte
TheNum = CByte(Month(Date))

Dim Variable_Imp As String
Masquer
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Variable_Imp = Application.ActivePrinter 'mise en memoire de l'imprimante
par defaut
' (Port PDF) 'l'imprimante à utiliser
Application.ActivePrinter = _
"Acrobat Distiller sur Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Acrobat Distiller sur D:Fiche de paye nourisse & Year(Now())&
(TheNum).pdf", Collate:=True '& (TheNum)
Application.ActivePrinter = Variable_Imp ' reinitialiser l'imprimante pas
défaut
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox "Imprimante non disponible.", vbInformation, "INFORMATION"
Application.ActivePrinter = Variable_Imp
Case Else
Application.ActivePrinter = Variable_Imp
End Select
Application.ScreenUpdating = True
Afficher
End Sub
Sub Masquer()

Columns("AN:IV").EntireColumn.Hidden = True

End Sub
Sub Afficher()

Columns("AN:IV").EntireColumn.Hidden = False

End Sub

Mon souci et l'envoie dans le répertoire voulu, ainsi que le nommage, qui
veux pas se faire.

Merci a vous, Jacques







Avatar
Trirème
Bonsoir Jacques
Au boulot j'ai un peu de code qui te conviendra en partie et je te
l'enverrai demain. N'étant pas doué en VBA et ne le connaissant pas par
coeur...
Il permet de créer un classeur Excel en lui donnant un nom variable,
dans un répertoire dont le nom peut varier également et dont l'existence
est vérifiée avec création éventuelle en cas d'absence.
Le code imprime également le fichier au format .pdf en lui donnant
éventuellement un autre nom.

Ce code très simple est puisé dans le forum (éventuellement recherche
avec Google dans MPFE), l'aide d'Excel VBA (si si) et un peu dans mon
cerveau.

A plus
Trirème

Salut

Merci de vos réponses.

Le logiciel et Adobe acrobat.

Donc si je comprends bien, je ne peu pas nommer le fichier comme je le veux,
et ni choisir le chemin d'accés directement par excel, snif dommage.

Pour ce qui es de la faute d'orthographe, cela fait 1 et demi, et même
l'assitante maternelle, b'a rien vu, lol

Je vais rectifier de ce pas, car oui c'est pas trés Zoli....

Merci, Jacques
"jps" a écrit dans le message de news:
%

salut jacques
pour l'envoi dans le répertoire voulu et le nommage, je ne sais pas mais
note, par contre, que "bancaire" s'écrit ainsi...
c'est quand même plus zoli sur un document qui dure toute une vie...
jps

"Jacques" a écrit dans le message de
news:43417be0$0$981$

Salut le forum

Bon je reviens avec mes histoire de PDF.

Jusqu'a présent cela ne fonctionné pas, même avec une feuille toute
simple
en appuyant sur le bouton de création PDF, avec acrobat writen.

Donc, j'ai réinstallé, puis maintenant cela fonctionne.

Donc j'ai réessayer, sur mon fichier.

Donc voici le code que j'utilise, il inclu l'impression de la feuille du
mois (Pas le sujet) ainsi que la création du PDF.

Sub Impression()
Dim TheNum As Byte, reponse1, reponse2
TheNum = CByte(Month(Date))
Sheets(TheNum).Activate
Masquer 'Sert a masquer une partie de la feuillle
'Impression de la fiche de paye
reponse1 = MsgBox("Voulez-vous imprimer la feuille de paye du mois de " &
Worksheets(TheNum).Name & " ? ", vbYesNo + vbQuestion, "VALIDATION")
If reponse1 = vbYes Then
With Sheets(TheNum)
.lblDateDeSignature = "Fait à : VALENCE" & vbTab _
& vbTab & "Le : " _
& Application.Proper(Format(Now, "dddd dd mmmm yyyy ")) _
& vbTab & vbTab & "Mode de réglement : Par chèque banquaire"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Call CreationPDF
End With
Afficher 'Sert a réafficher la partie masquée de la feuillle
Else
USF_ImpFeuilleDePayeAnterieurs.Show 0
End If
End Sub

Sub CreationPDF() 'Message sur forum, Objet : Création de fichier PDF

Dim TheNum As Byte
TheNum = CByte(Month(Date))

Dim Variable_Imp As String
Masquer
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Variable_Imp = Application.ActivePrinter 'mise en memoire de l'imprimante
par defaut
' (Port PDF) 'l'imprimante à utiliser
Application.ActivePrinter = _
"Acrobat Distiller sur Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Acrobat Distiller sur D:Fiche de paye nourisse & Year(Now())&
(TheNum).pdf", Collate:=True '& (TheNum)
Application.ActivePrinter = Variable_Imp ' reinitialiser l'imprimante pas
défaut
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox "Imprimante non disponible.", vbInformation, "INFORMATION"
Application.ActivePrinter = Variable_Imp
Case Else
Application.ActivePrinter = Variable_Imp
End Select
Application.ScreenUpdating = True
Afficher
End Sub
Sub Masquer()

Columns("AN:IV").EntireColumn.Hidden = True

End Sub
Sub Afficher()

Columns("AN:IV").EntireColumn.Hidden = False

End Sub

Mon souci et l'envoie dans le répertoire voulu, ainsi que le nommage, qui
veux pas se faire.

Merci a vous, Jacques











Avatar
Eric
Salut,

Ce que tu peux faire, si tu utilise Acrobat Distiller, c'est imprimer ton
classeur dans un fichier prn, avec le nom que tu veux
Propriétés : OutputFileName:= nom de ton fichier, puis ensuite, une fois
distiller, tu déplaces le fichier PDf vers l'endroit souhaité.



Le code ci-dessous concerne un document word, mais c'est exactement pareil
avec XL.

Ce qui est important, c'est OutputFileName et PrintToFile = True

Le nom du fichier est contenu dans la variable NF

Le lecteur réseau q: correspond au répertoire In configuré dans Acobat
Distiller 5.0 (Menu configuration/Dossier de controle)
ensuite, j'ai connecté un autre lecteur au répertoire Out (contenant le
fichier PDF distiller), dans lequel, je récupère mon fichier PDF.


ChangeFileOpenDirectory "q:"
NF = "Valeur de la cellule A1" & ".prn"

Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item: _
wdPrintDocumentContent, Copies:=1, Pages:="1", _
ManualDuplexPrint:úlse, Collate:=True, Background:úlse,
PrintToFile:= _
True, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
PrintZoomPaperHeight:=0, OutputFileName:="Attes" & NF, Append:úlse

a+
Eric


"Jacques" a écrit dans le message de
news:434198d1$0$1023$
Salut

Merci de vos réponses.

Le logiciel et Adobe acrobat.

Donc si je comprends bien, je ne peu pas nommer le fichier comme je le
veux,

et ni choisir le chemin d'accés directement par excel, snif dommage.

Pour ce qui es de la faute d'orthographe, cela fait 1 et demi, et même
l'assitante maternelle, b'a rien vu, lol

Je vais rectifier de ce pas, car oui c'est pas trés Zoli....

Merci, Jacques
"jps" a écrit dans le message de news:
%
salut jacques
pour l'envoi dans le répertoire voulu et le nommage, je ne sais pas mais
note, par contre, que "bancaire" s'écrit ainsi...
c'est quand même plus zoli sur un document qui dure toute une vie...
jps

"Jacques" a écrit dans le message de
news:43417be0$0$981$
Salut le forum

Bon je reviens avec mes histoire de PDF.

Jusqu'a présent cela ne fonctionné pas, même avec une feuille toute
simple
en appuyant sur le bouton de création PDF, avec acrobat writen.

Donc, j'ai réinstallé, puis maintenant cela fonctionne.

Donc j'ai réessayer, sur mon fichier.

Donc voici le code que j'utilise, il inclu l'impression de la feuille
du



mois (Pas le sujet) ainsi que la création du PDF.

Sub Impression()
Dim TheNum As Byte, reponse1, reponse2
TheNum = CByte(Month(Date))
Sheets(TheNum).Activate
Masquer 'Sert a masquer une partie de la feuillle
'Impression de la fiche de paye
reponse1 = MsgBox("Voulez-vous imprimer la feuille de paye du mois de "
&



Worksheets(TheNum).Name & " ? ", vbYesNo + vbQuestion, "VALIDATION")
If reponse1 = vbYes Then
With Sheets(TheNum)
.lblDateDeSignature = "Fait à : VALENCE" & vbTab _
& vbTab & "Le : " _
& Application.Proper(Format(Now, "dddd dd mmmm yyyy ")) _
& vbTab & vbTab & "Mode de réglement : Par chèque banquaire"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Call CreationPDF
End With
Afficher 'Sert a réafficher la partie masquée de la feuillle
Else
USF_ImpFeuilleDePayeAnterieurs.Show 0
End If
End Sub

Sub CreationPDF() 'Message sur forum, Objet : Création de fichier PDF

Dim TheNum As Byte
TheNum = CByte(Month(Date))

Dim Variable_Imp As String
Masquer
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Variable_Imp = Application.ActivePrinter 'mise en memoire de
l'imprimante



par defaut
' (Port PDF) 'l'imprimante à utiliser
Application.ActivePrinter = _
"Acrobat Distiller sur Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Acrobat Distiller sur D:Fiche de paye nourisse & Year(Now())&
(TheNum).pdf", Collate:=True '& (TheNum)
Application.ActivePrinter = Variable_Imp ' reinitialiser l'imprimante
pas



défaut
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox "Imprimante non disponible.", vbInformation, "INFORMATION"
Application.ActivePrinter = Variable_Imp
Case Else
Application.ActivePrinter = Variable_Imp
End Select
Application.ScreenUpdating = True
Afficher
End Sub
Sub Masquer()

Columns("AN:IV").EntireColumn.Hidden = True

End Sub
Sub Afficher()

Columns("AN:IV").EntireColumn.Hidden = False

End Sub

Mon souci et l'envoie dans le répertoire voulu, ainsi que le nommage,
qui



veux pas se faire.

Merci a vous, Jacques











Avatar
Trirème
Salut Jacques
Parallèlement à la réponse d'Eric je te fourni le code dont je t'ai
parlé hier.
Dans une boucle, il crée un fichier, l'enregistre en xls et l'imprime en
pdf.

Pour l'impression en pdf, j'accepte avec humilité tout autre processus
moins compliqué et tout aussi efficace. Les remarques et critiques
seront donc lues avec bienveillance. Merci d'avance.

J'ai trouvé plusieurs variantes pour imprimer en pdf, et le seul code
que j'ai réussi à faire fonctionner consiste à imprimer au format .prn
sur l'imprimante virtuelle installée par acrobat puis, pendant que mon
code s'exécute, je lance Acrobat Distiller (probablement là : C:Program
FilesAdobeAcrobat 5.0Distillracrodist.exe) en lui faisant
'surveiller' le dossier :
U:RequêtesProcBudg2005Diffusionin

Pour paramétrer Acrobat Distiller : Configuration, Dossier de contrôle,
Ajouter le répertoire : U:RequêtesProcBudg2005Diffusionin

Les fichiers pdf seront créés automatiquement dans
U:RequêtesProcBudg2005Diffusionout
Penser également à régler les préférences, les options et les protections.

Sub Machin()
' Seuls les extraits les plus palpitants sont copiés ici
' Préparation des répertoires où seront enregistrés les documents xls et pdf

' Nom du répertoire destiné à accueillir le document format Excel
RepertoireXLS = "U:RequêtesProcBudg2005Diffusion"

' Si le dossier n'existe pas, le créer (seul le dernier sous répertoire
est créé,
' dans l'exemple il s'agit de 'Diffusion')
If Dir(RepertoireXLS, vbDirectory) = "" Then MkDir RepertoireXLS

' J'ajoute encore un sous répertoire trimestriellement
Trimestre ="Trim1" 'Que je crée s'il ne l'est pas déjà
RepertoireXLS = RepertoireXLS & Trimestre & ""
If Dir(RepertoireXLS, vbDirectory) = "" Then MkDir RepertoireXLS

' Nom du répertoire destiné à accueillir le document format PDF
RepertoirePDF = "U:RequêtesProcBudg2005Diffusionin"
'Le répertoire in sera scruté par Distiller
' Le dossier doit exister, on vérifie et on le crée s'il n'existe pas
If Dir(RepertoirePDF, vbDirectory) = "" Then MkDir RepertoirePDF

' ICI commence la boucle principale qui crée plusieurs fichiers
' Les noms à utiliser sont dans une table, dans un classeur ouvert pour
'l'occasion avant de lancer la macro

For i ...
...
...
' Le fichier Excel que je crée (création non développée ici) prend un
'nom composé,
' à partir du chemin (RepertoireXLS) et 2 autres variables : LeService
'et Etape
LeService = Application.Index(Range("TableService"), i, 3)
' Table service est un nom dans une feuille
' Le nom complet et définitif du fichier est donc :
NomFichierXLS = RepertoireXLS & LeService & "-" & Etape
...
...
...

' Ce nouveau fichier prend son nom au moment où on l'enregistre. On
' l'enregistre donc (certains paramètres sont optionnels) :
ActiveWorkbook.SaveAs Filename:= _
NomFichierXLS, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse, _
CreateBackup:úlse

' Création du .PDF
NomFichierPDF = RepertoirePDF & LeService & " -" & Etape & ".prn"
' Ici j'imprime sur l'imprimante virtuelle nommée Acrobat Distiller
'
ActiveWorkbook.PrintOut PrintToFile:=True, PrToFileName:=NomFichierPDF,
ActivePrinter:="Acrobat Distiller", Copies:=1, Collate:=True

' Rappel : Il faut lancer le programme Distiller qui est probablement
' dans C:Program FilesAdobeAcrobat 5.0Distillracrodist.exe

' Pour finir
' Une tit' sauvegarde du nouveau classeur, avant de passer au suivant
ActiveWorkbook.Save
ActiveWindow.Close ' Puis on le ferme

Next i
End Sub


Cordialement
Trirème

Salut

Merci de vos réponses.
Donc si je comprends bien, je ne peu pas nommer le fichier comme je le veux,
et ni choisir le chemin d'accés directement par excel, snif dommage.


Avatar
Jacques
Clément Marcot, tejps, Trième le forum

Merci pour vos infos.

Trième, j'ai essayé un peu ton code et je n'ai pas tout suivi.

Je vais analyser un peu plus celui-ci.

Merci, jacques


"Trirème" a écrit dans le message de news:
%
Salut Jacques
Parallèlement à la réponse d'Eric je te fourni le code dont je t'ai parlé
hier.
Dans une boucle, il crée un fichier, l'enregistre en xls et l'imprime en
pdf.

Pour l'impression en pdf, j'accepte avec humilité tout autre processus
moins compliqué et tout aussi efficace. Les remarques et critiques seront
donc lues avec bienveillance. Merci d'avance.

J'ai trouvé plusieurs variantes pour imprimer en pdf, et le seul code que
j'ai réussi à faire fonctionner consiste à imprimer au format .prn sur
l'imprimante virtuelle installée par acrobat puis, pendant que mon code
s'exécute, je lance Acrobat Distiller (probablement là : C:Program
FilesAdobeAcrobat 5.0Distillracrodist.exe) en lui faisant 'surveiller'
le dossier :
U:RequêtesProcBudg2005Diffusionin

Pour paramétrer Acrobat Distiller : Configuration, Dossier de contrôle,
Ajouter le répertoire : U:RequêtesProcBudg2005Diffusionin

Les fichiers pdf seront créés automatiquement dans
U:RequêtesProcBudg2005Diffusionout
Penser également à régler les préférences, les options et les protections.

Sub Machin()
' Seuls les extraits les plus palpitants sont copiés ici
' Préparation des répertoires où seront enregistrés les documents xls et
pdf

' Nom du répertoire destiné à accueillir le document format Excel
RepertoireXLS = "U:RequêtesProcBudg2005Diffusion"

' Si le dossier n'existe pas, le créer (seul le dernier sous répertoire
est créé,
' dans l'exemple il s'agit de 'Diffusion')
If Dir(RepertoireXLS, vbDirectory) = "" Then MkDir RepertoireXLS

' J'ajoute encore un sous répertoire trimestriellement
Trimestre ="Trim1" 'Que je crée s'il ne l'est pas déjà
RepertoireXLS = RepertoireXLS & Trimestre & ""
If Dir(RepertoireXLS, vbDirectory) = "" Then MkDir RepertoireXLS

' Nom du répertoire destiné à accueillir le document format PDF
RepertoirePDF = "U:RequêtesProcBudg2005Diffusionin"
'Le répertoire in sera scruté par Distiller
' Le dossier doit exister, on vérifie et on le crée s'il n'existe pas
If Dir(RepertoirePDF, vbDirectory) = "" Then MkDir RepertoirePDF

' ICI commence la boucle principale qui crée plusieurs fichiers
' Les noms à utiliser sont dans une table, dans un classeur ouvert pour
'l'occasion avant de lancer la macro

For i ...
...
...
' Le fichier Excel que je crée (création non développée ici) prend un 'nom
composé,
' à partir du chemin (RepertoireXLS) et 2 autres variables : LeService 'et
Etape
LeService = Application.Index(Range("TableService"), i, 3) ' Table service
est un nom dans une feuille
' Le nom complet et définitif du fichier est donc :
NomFichierXLS = RepertoireXLS & LeService & "-" & Etape
...
...
...

' Ce nouveau fichier prend son nom au moment où on l'enregistre. On
' l'enregistre donc (certains paramètres sont optionnels) :
ActiveWorkbook.SaveAs Filename:= _
NomFichierXLS, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse,
_
CreateBackup:úlse

' Création du .PDF
NomFichierPDF = RepertoirePDF & LeService & " -" & Etape & ".prn"
' Ici j'imprime sur l'imprimante virtuelle nommée Acrobat Distiller
'
ActiveWorkbook.PrintOut PrintToFile:=True, PrToFileName:=NomFichierPDF,
ActivePrinter:="Acrobat Distiller", Copies:=1, Collate:=True

' Rappel : Il faut lancer le programme Distiller qui est probablement
' dans C:Program FilesAdobeAcrobat 5.0Distillracrodist.exe

' Pour finir
' Une tit' sauvegarde du nouveau classeur, avant de passer au suivant
ActiveWorkbook.Save
ActiveWindow.Close ' Puis on le ferme

Next i
End Sub


Cordialement
Trirème

Salut

Merci de vos réponses.
Donc si je comprends bien, je ne peu pas nommer le fichier comme je le
veux, et ni choisir le chemin d'accés directement par excel, snif
dommage.




Avatar
Jacques
Re

Bon, c'est pas gagné, lol

Donc ce dode fonctionne a peu prés :

Sub CreationPDF() 'Message sur forum, Objet : Création de fichier PDF

'Pour le choix de la feuille
Dim TheNum As Byte
TheNum = CByte(Month(Date))

Dim Variable_Imp As String Masquer 'Masque une partie de la feuille
On Error GoTo ErrorHandler
Application.ScreenUpdating = False
Variable_Imp = Application.ActivePrinter 'mise en memoire de l'imprimante
par defaut
' (Port PDF) 'l'imprimante à utiliser
Application.ActivePrinter = _
"Acrobat Distiller sur Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"Acrobat Distiller sur D:Fiche de paye nourisse & Year(Now())&
(TheNum).pdf", Collate:=True '& (TheNum)
Application.ActivePrinter = Variable_Imp ' reinitialiser l'imprimante pas
défaut
ErrorHandler:
Select Case Err.Number
Case 1004
MsgBox "Imprimante non disponible.", vbInformation, "INFORMATION"
Application.ActivePrinter = Variable_Imp
Case Else
Application.ActivePrinter = Variable_Imp
End Select
Application.ScreenUpdating = True
Afficher'Réaffiche la pertie de la feuille qui était masquée
End Sub

A ce niveau cela fait :

Ouvre bien le dossier : D:Fiche de paye nourisse

Ce que je n'arrive pas a faire, c'est tester s'il y a le dossier de l'année,
si non le créer.
Et enregistré le fichier dans le dossier de l'anné, le mois en cours
sélectionne avec "TheNum" sous son nom. et pas sous le nom du classeur
ouvert.

Merci pour votre aide, Jacques

"Trirème" a écrit dans le message de news:
%
Salut Jacques
Parallèlement à la réponse d'Eric je te fourni le code dont je t'ai parlé
hier.
Dans une boucle, il crée un fichier, l'enregistre en xls et l'imprime en
pdf.

Pour l'impression en pdf, j'accepte avec humilité tout autre processus
moins compliqué et tout aussi efficace. Les remarques et critiques seront
donc lues avec bienveillance. Merci d'avance.

J'ai trouvé plusieurs variantes pour imprimer en pdf, et le seul code que
j'ai réussi à faire fonctionner consiste à imprimer au format .prn sur
l'imprimante virtuelle installée par acrobat puis, pendant que mon code
s'exécute, je lance Acrobat Distiller (probablement là : C:Program
FilesAdobeAcrobat 5.0Distillracrodist.exe) en lui faisant 'surveiller'
le dossier :
U:RequêtesProcBudg2005Diffusionin

Pour paramétrer Acrobat Distiller : Configuration, Dossier de contrôle,
Ajouter le répertoire : U:RequêtesProcBudg2005Diffusionin

Les fichiers pdf seront créés automatiquement dans
U:RequêtesProcBudg2005Diffusionout
Penser également à régler les préférences, les options et les protections.

Sub Machin()
' Seuls les extraits les plus palpitants sont copiés ici
' Préparation des répertoires où seront enregistrés les documents xls et
pdf

' Nom du répertoire destiné à accueillir le document format Excel
RepertoireXLS = "U:RequêtesProcBudg2005Diffusion"

' Si le dossier n'existe pas, le créer (seul le dernier sous répertoire
est créé,
' dans l'exemple il s'agit de 'Diffusion')
If Dir(RepertoireXLS, vbDirectory) = "" Then MkDir RepertoireXLS

' J'ajoute encore un sous répertoire trimestriellement
Trimestre ="Trim1" 'Que je crée s'il ne l'est pas déjà
RepertoireXLS = RepertoireXLS & Trimestre & ""
If Dir(RepertoireXLS, vbDirectory) = "" Then MkDir RepertoireXLS

' Nom du répertoire destiné à accueillir le document format PDF
RepertoirePDF = "U:RequêtesProcBudg2005Diffusionin"
'Le répertoire in sera scruté par Distiller
' Le dossier doit exister, on vérifie et on le crée s'il n'existe pas
If Dir(RepertoirePDF, vbDirectory) = "" Then MkDir RepertoirePDF

' ICI commence la boucle principale qui crée plusieurs fichiers
' Les noms à utiliser sont dans une table, dans un classeur ouvert pour
'l'occasion avant de lancer la macro

For i ...
...
...
' Le fichier Excel que je crée (création non développée ici) prend un 'nom
composé,
' à partir du chemin (RepertoireXLS) et 2 autres variables : LeService 'et
Etape
LeService = Application.Index(Range("TableService"), i, 3) ' Table service
est un nom dans une feuille
' Le nom complet et définitif du fichier est donc :
NomFichierXLS = RepertoireXLS & LeService & "-" & Etape
...
...
...

' Ce nouveau fichier prend son nom au moment où on l'enregistre. On
' l'enregistre donc (certains paramètres sont optionnels) :
ActiveWorkbook.SaveAs Filename:= _
NomFichierXLS, FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:úlse,
_
CreateBackup:úlse

' Création du .PDF
NomFichierPDF = RepertoirePDF & LeService & " -" & Etape & ".prn"
' Ici j'imprime sur l'imprimante virtuelle nommée Acrobat Distiller
'
ActiveWorkbook.PrintOut PrintToFile:=True, PrToFileName:=NomFichierPDF,
ActivePrinter:="Acrobat Distiller", Copies:=1, Collate:=True

' Rappel : Il faut lancer le programme Distiller qui est probablement
' dans C:Program FilesAdobeAcrobat 5.0Distillracrodist.exe

' Pour finir
' Une tit' sauvegarde du nouveau classeur, avant de passer au suivant
ActiveWorkbook.Save
ActiveWindow.Close ' Puis on le ferme

Next i
End Sub


Cordialement
Trirème

Salut

Merci de vos réponses.
Donc si je comprends bien, je ne peu pas nommer le fichier comme je le
veux, et ni choisir le chemin d'accés directement par excel, snif
dommage.