Pb imprime en PDF avec vba, plusieurs copies...

CFR

XLDnaute Nouveau
Bonjour à tous, j'ai déjà écrit un Post concernant ce sujet, mais je trouve qu'il n'était pas clair et qu'il n'explique pas bien mon problème que voici :

J'essaie d'imprimer en PDF. Je veux imprimer plusieurs fois la même feuille mais, avec des données différentes.

Voici le code :
Code:
Sub Macro2()
Sheets("table").Activate
Cells(1, 1).Select

For Each ligne In ActiveSheet.Rows
    If ligne.Cells(1, 1).Value = "oui" Then
    ligne.Cells(1, 2).Select
    Selection.Copy
    Sheets("Comparatif").Activate
    'colle
    Range("B6:B7").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    'imprime
   [COLOR="Red"]Filename = "C:\Test\" & ActiveSheet.Range("C1").Value & ".pdf"
    SendKeys Filename & "{ENTER}", False
    ActiveSheet.PrintOut Copies:=1, ActivePrinter:="Adobe PDF sur Ne03:", Collate:=True[/COLOR]   
    End If
    If ligne.Cells(1, 1).Value = "End" Then
    Exit For
    End If

Sheets("table").Activate
Next

End Sub

J'ai fait la macro pour qu'elle change les données et imprime jusqu'à ce quelle rencontre la valeur "End" dans l'autre feuille.
Mon problème est la partie en rouge...
Pour la première impression, tout marche nickel. Pour la deuxième, elle me demande d'entré un nom de fichier plutôt que d'aller chercher la cellule C1 comme indiqué dans le code.

Je comprend que dalle.
Je ne sais pas pourquoi ça marche pour la première et pas pour les autres...

Si personnes peut maider, je vais laisser tomber ce projet car cela fait déjà trop de temps que je met la dessus...

Merci d'avance

Frank
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Pb imprime en PDF avec vba, plusieurs copies...

Bonjour CFR :),
En ce qui me concerne, je n'ai jamais réussi via VBA à donner un nom de fichier différent en passant par l'imprimante PDF. Par contre, vu que tu as Acrobat Pro, cela signifie que tu as Distiller, donc en activant la référence Distiller, tu peux passer par un fichier PS. Voici ma macro que j'utilise pour faire un PDF de chaque onglet sélectionné en nommant le PDF du nom de l'onglet.
Code:
Sub ImpressionPdf()
[COLOR=red]' Nécessite l'activation Outils -> Références... -> Acrobat Distiller[/COLOR]
[COLOR=red]' Nécessite réglage imprimante AcrobatPDF décocher Se limiter aux polices système[/COLOR]
Dim NomFichierPS As String
Dim NomFichierPDF As String
Dim ImprimanteVirtuelle As PdfDistiller
Dim Feuille As Worksheet
NomFichierPS = [COLOR=red]"C:\temp\Temporaire.ps"[/COLOR]
[COLOR=red]' A vérifier mais tu as certainement un dossier temp à cet endroit là[/COLOR]
Set ImprimanteVirtuelle = New PdfDistiller
For Each Feuille In ThisWorkbook.Windows(1).SelectedSheets 'ThisWorkbook.Worksheets
Feuille.Activate
NomFichierPDF =[COLOR=red] "C:\Résultats\" & ActiveSheet.Name & ".pdf"[/COLOR]
[COLOR=red]' Modifier le chemin et le nom en fonction de tes besoins[/COLOR]
ActiveSheet.PrintOut Copies:=1, Preview:=False, _
    ActivePrinter:="AcrobatDistiller sur [COLOR=red]ne00[/COLOR]", PrintToFile:=True, _
    Collate:=True, PrToFileName:=NomFichierPS
[COLOR=red]' Si tu as un débogage sur cette ligne, il est probable que ça vienne de ne00 qui définit le NetWork,[/COLOR]
[COLOR=red]' qui est lié, il me semble, à l'ordre d'installation de tes imprimantes[/COLOR]
[COLOR=red]' A tester à ce moment là avec ne01, ne02, etc.[/COLOR]
ImprimanteVirtuelle.FileToPDF NomFichierPS, NomFichierPDF, ""
On Error Resume Next
Kill NomFichierPS
Kill[COLOR=red] "C:\Résultats\" & ActiveSheet.Name & ".log"[/COLOR]
[COLOR=red]' Distiller créé un log systématiquement, si la macro ne crée pas de PDF, tu peux[/COLOR]
[COLOR=red]' désactiver le Kill, afin de lire le log pour savoir où est le souci (souvent problème de polices...)[/COLOR]
On Error GoTo 0
Next
End Sub
A adapter pour tes besoins (j'ai ajouté quelques commentaires à ton intention en rouge).
Si ça te convient, n'oublie pas de clôturer ton autre fil ;)...
Bon WE :cool:
 

CFR

XLDnaute Nouveau
Re : Pb imprime en PDF avec vba, plusieurs copies...

Ça marche Nickel!!

Merci

Voici le code final, pour ceux qui pourrait avoir le même type de problème un jour :
Code:
Sub MakePDFNS()

Dim NomFichierPS As String
Dim NomFichierPDF As String
Dim ImprimanteVirtuelle As PdfDistiller
NomFichierPS = "C:\Test\Temporaire.ps"
' A vérifier mais tu as certainement un dossier temp à cet endroit là
Set ImprimanteVirtuelle = New PdfDistiller

Sheets("table").Activate
Cells(1, 1).Select

For Each ligne In ActiveSheet.Rows
    If ligne.Cells(1, 1).Value = "oui" Then
    ligne.Cells(1, 2).Select
    Selection.Copy
    Sheets("Comparatif").Activate
    'colle
    Range("B6:B7").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    'imprime
       NomFichierPDF = "C:\Test\" & ActiveSheet.Range("C1").Value & ".pdf"
    ' Modifier le chemin et le nom en fonction de tes besoins
    ActiveSheet.PrintOut Copies:=1, Preview:=False, _
    ActivePrinter:="AcrobatDistiller sur ne03", PrintToFile:=True, _
    Collate:=True, PrToFileName:=NomFichierPS
    ' Si tu as un débogage sur cette ligne, il est probable que ça vienne de ne00 qui définit le NetWork,
    ' qui est lié, il me semble, à l'ordre d'installation de tes imprimantes
    ' A tester à ce moment là avec ne01, ne02, etc.
    ImprimanteVirtuelle.FileToPDF NomFichierPS, NomFichierPDF, ""
    On Error Resume Next
    Kill NomFichierPS
    Kill "C:\Test\" & ActiveSheet.Range("C1").Value & ".log"
    ' Distiller créé un log systématiquement, si la macro ne crée pas de PDF, tu peux
    ' désactiver le Kill, afin de lire le log pour savoir où est le souci (souvent problème de polices...)
    On Error GoTo 0
   
    End If
    If ligne.Cells(1, 1).Value = "End" Then
    Exit For
    End If

 
Sheets("table").Activate
   
Next

End Sub

Un gros Merci à JNP!!

Frank
 

Discussions similaires

Statistiques des forums

Discussions
312 371
Messages
2 087 704
Membres
103 646
dernier inscrit
ouattara dad