XL 2013 Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut [Résolu]

bellenm

XLDnaute Impliqué
Bonsoir tout le monde,

Le sujet de mon problème se trouve dans le titre, je voudrais une macro me permettant d'imprimer une feuille (qui a sa zone d'impression définie) en format pdf.

Le répertoire serait choisi plus tard (disons le lecteur: D)

De revenir après l’impression sur l'imprimante par défaut pour continuer l'impression normalement.

Merci car je pas trouver des discussion similaire sur le forum!

Marc
 
Dernière modification par un modérateur:

bellenm

XLDnaute Impliqué
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Bonjour David,

voilà j'y suis bien arriver en fait c'est le code d'une macro!

Il y a une erreur:
Code:
'vérifier que le fichier Excel est bien enregistré sur le bureau ou dans un dossier de ton ordinateur

Sub ZoneImpressionEnPdf()

End Sub
Dim ImprActuelle As String, NomFichier As String, ws As Worksheet
ImprActuelle = Application.ActivePrinter 'on stocke dans une variable le nom de l'imprimante actuelle
Application.ActivePrinter = "nom de l'imprimante" 'placer le nom de l'imprimante choisie

Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$AA$59" ' les cellules

'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = Range("ab2").Value ' don ici la cellule est juste à côter de la "z2"

'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    NomFichier, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
    
'on replace l'imprimante initiale comme imprimante par défaut
Application.ActivePrinter = ImprActuelle
 
 Option Explicit

Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const CaracInterdits As String = """*/:<>?[\]|"
    NomFichierValide = True
    If Len(sChaine) = 0 Then
        NomFichierValide = False
        Exit Function
    End If
    For i = 1 To Len(CaracInterdits)
        If InStr(sChaine, Mid$(CaracInterdits, i, 1)) > 0 Then
            NomFichierValide = False
            Exit Function
        End If
    Next i
End Function
End Function

Erreur de compilation

Là où le code bug: à la deuxième ligne "Sub ZoneImpressionEnPdf()
est en surligné en jaune
et le "Dim" deux ligne plus bas est aussi surligné en bleu

Donc ne va pas plus loin!

Où puis je trouvé le nom de l'imprimante, car je suppose qu'il ne s'agit pas de la marque mais bien d'une adresse ?

Marc
 
Dernière modification par un modérateur:

david84

XLDnaute Barbatruc
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Je ne comprends rien à ce que tu fais...efface tout le code contenu dans la fenêtre de code (là où tu a collé les codes fournis) et place ce code juste en dessous de Option Explicit (si Option Explicit apparaît en haut de la fenêtre de code) :
Code:
'vérifier que le fichier Excel est bien enregistré sur le bureau ou dans un dossier de ton ordinateurSub ZoneImpressionEnPdf()
Dim ImprActuelle As String, NomFichier As String, ws As Worksheet


ImprActuelle = Application.ActivePrinter 'on stocke dans une variable le nom de l'imprimante actuelle
Application.ActivePrinter = "nom de l'imprimante" 'placer le nom de l'imprimante choisie


Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$AA$59" ' les cellules


'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = ThisWorkbook.Path & "\" & "testPdf.pdf"


'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    NomFichier, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
    
'on replace l'imprimante initiale comme imprimante par défaut
Application.ActivePrinter = ImprActuelle
End Sub

Crée un bouton et affecte cette macro au bouton comme expliqué plus haut, puis lance la macro.
Vois déjà si cela fonctionne en l'état.
N'oublie pas de remplacer "nom de l'imprimante" par le nom de l'imprimante que tu veux sélectionner (étant entendu que ce n'est pas l'imprimante par défaut actuelle, sinon aucun intérêt).

Le fichier contenant cette macro doit être enregistré sur le bureau ou dans un dossier.
Le fichier .pdf sera créé dans le même dossier que le fichier Excel (ou sur le bureau si le fichier Excel est sur le bureau).
A+
 

bellenm

XLDnaute Impliqué
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

re:

'vérifier que le fichier Excel est bien enregistré sur le bureau ou dans un dossier de ton ordinateur
Sub ZoneImpressionEnPdf()
Dim ImprActuelle As String, NomFichier As String, ws As Worksheet


ImprActuelle = Application.ActivePrinter 'on stocke dans une variable le nom de l'imprimante actuelle
Application.ActivePrinter = "Microsoft Print to PDF" 'placer le nom de l'imprimante choisie


Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$AA$59" ' les cellules


'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = Range("ab2").Value


'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
NomFichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

j'ai mis pour essaye le Sub devant ca ppasse mais bug ici:
Application.ActivePrinter = "Microsoft Print to PDF" 'placer le nom de l'imprimante choisie

C'est l'imprimante due je voudrais mais est ce bien le bon nom?

Marc
 
Dernière modification par un modérateur:

david84

XLDnaute Barbatruc
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Ça c'est à toi de le savoir...lance cette macro et note le nom de l'imprimante que tu veux parmi toutes celles disponibles :
Code:
Sub ListeDesImprimante()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub
Comme ça tu verras si c'est le bon nom.
A+
 

bellenm

XLDnaute Impliqué
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Bonsoir David,

C'est le problème que je cherche a solutionner car manuellement l'imprimante PDF fonctionne trés bien mais une fois mis dans un code c'est comme si elle n'était pas reconnue!

Pour preuve, avec ton code l'imprimante est bien là mais une fois que je fait configuration c'est celle par défaut qui s'affiche donc je commence à douter qu'excel reconnait les autres imprimante que celle par défaut.

le code a reconnus plusieurs imprimante mais même soucis qu'avec la PDF pour la config toujours celle par défaut, comment y remédier?

Marc
 

david84

XLDnaute Barbatruc
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Bonjour,

pourquoi me parles-tu d'imprimante pdf ?

Il y a quelque chose que je ne saisis pas dans ton attente : tu as un document Excel dans lequel tu définis une zone
d'impression
Code:
ws.PageSetup.PrintArea = "$B$2:$AA$59"

Que veux tu faire avec cette zone d'impression ?

1) Veux-tu la placer dans un document Pdf ? Auquel cas il faut créer un document Pdf ce que fait
Code:
'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
NomFichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Mais alors pas besoin de passer par une imprimante pour faire cela.

2) Veux-tu imprimer cette zone d'impression ? Si c'est le cas pas besoin de créer un document Pdf tu peux l'imprimer directement
Code:
ws.PageSetup.PrintOut

Et si tu veux l'imprimer pourquoi ne pas utiliser ton imprimante par défaut ?

Bref ce pas pas clair ton histoire (en tout cas pour moi).

A+
 

bellenm

XLDnaute Impliqué
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Bonjour David,

Oui c'est ça que je désire en fait sauvegarder la zone d'impression en PDF pour garder un fichier de notre rencontre! (puisque ce sont des feuilles de matchs et qu'une fois la rencontre finie, pour le match suivant on efface les résultat et on recommence! ou alors il faudrait trouver une autre solution pour garder ces infos et pouvoir les consulter plus tard.

Pourquoi je disais toujours une imprimante PDF, c'est que pour faire un document pareil je passais toujours par imprimer et là je choisis pdf creator ce qui au lieu d'imprimer ca me fait un fichier PDF!

le nom du fichier je peux aussi le choisir ou lui donner le nom de la cellule "AB2" ?

je viens d'essayer il une erreur de compilation:
ws.PageSetup.PrintArea = "$B$2:$AA$59"
les celulles : "$B$2:$AA$59" en bleu

Marc
 

david84

XLDnaute Barbatruc
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Pourquoi je disais toujours une imprimante PDF, c'est que pour faire un document pareil je passais toujours par imprimer et là je choisis pdf creator ce qui au lieu d'imprimer ca me fait un fichier PDF!

Je te l'avais pourtant déjà expliqué au message #6 : pas besoin de PdfCreator !
Tu es sur une version 2013 d'Excel donc pas utile de passer par PdfCreator puisque qu'il existe une méthode ExportAsFixedFormat qui permet d'enregistrer un fichier en .pdf.

Ce code fonctionne chez moi et a été testé sur le fichier exemple que tu as joins : un fichier Pdf appelé "testPdf.pdf" est bien créé.
Code:
'vérifier que le fichier Excel est bien enregistré sur le bureau ou dans un dossier de ton ordinateur
Sub ZoneImpressionEnPdf()
Dim NomFichier As String, ws As Worksheet

Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$AA$59" ' les cellules

'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = ThisWorkbook.Path & "\" & "testPdf.pdf"

'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    NomFichier, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
End Sub

Si cela ne fonctionne toujours pas joins un fichier Exemple comprenant le code actualisé que je puisse tester.
A+
 

bellenm

XLDnaute Impliqué
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

re David,

Oui ca marche , excuse moi de ne pas avoir tilter de suite j'ai modifier le code avec les indications données sur les postes antérieurs!
Code:
'vérifier que le fichier Excel est bien enregistré sur le bureau ou dans un dossier de ton ordinateur
Sub ZoneImpressionEnPdf()
Dim NomFichier As String, ws As Worksheet

Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$b$52" ' les cellules

'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = ThisWorkbook.Path & "\" & Range("AB2").Value '
'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    NomFichier, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False
End Sub

merci donc pour ta patience. :rolleyes:

Dernier truc y a t'il possibilité de faire un box de choix:
premier choix si oui imprimer avec l'imprimante par défaut ( si possible choix du nombre de copie ou alors 3 par défaut) si non passer par le PDF :eek:

Merci d'avance

J'ai déjà appris pal mal de chose pour le moment

Marc
 

david84

XLDnaute Barbatruc
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Tu as tout ce qu'il faut pour la construire toi-même si tu as compris.
Je te fais la structure et essaie par toi-même (pour la création d'un Pdf c'est déjà fait) :
Code:
Sub ZoneImpressionEnPdf2()
Dim ImprActuelle As String, ImprNouv As String, NomFichier As String, ws As Worksheet, Imprimer

Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$AA$52" ' les cellules

Imprimer = MsgBox("Voulez-vous imprimer (répondre oui) ou créer un pdf (répondre non) ?", vbYesNo)
If Imprimer = vbYes Then
'placer ici le code qui va bien : regarde le message #3 tu as pratiquement tout ce qu'il faut dedans

Else
  'fichier pdf placé dans au même endroit que ce fichier Excel
  NomFichier = ThisWorkbook.Path & "\" & "testPdf.pdf"
  'NomFichier = Range("Z2").Value
  
  'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      NomFichier, Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      False
End If
 
End Sub
A+
 

bellenm

XLDnaute Impliqué
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Re David,

Un problème lors de la création PDF pourtant la formule est correct mais n’enregistre que la colonne "B"

'vérifier que le fichier Excel est bien enregistré sur le bureau ou dans un dossier de ton ordinateur
Sub ZoneImpressionEnPdf()
Dim NomFichier As String, ws As Worksheet

Set ws = Worksheets("Feuille A") 'la feuille
ws.PageSetup.PrintArea = "$B$2:$AA$59" ' les cellules

'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = ThisWorkbook.Path & "\" & Range("z2").Value

'copie en pdf de la zone d'impression (IgnorePrintAreas:=False)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
NomFichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
Voici le fichier fait "aaa" Et comme il devrais sortir "A108"
Pourquoi?

Avec la box juste un problème de end sub, doit il être mis avant un nouveau sub?

Marc
 

Pièces jointes

  • PDF RILTT.zip
    253 KB · Affichages: 23
Dernière modification par un modérateur:

david84

XLDnaute Barbatruc
Re : Imprimer une sélection en pdf puis revenir sur mon imprimante par défaut

Bon déjà reprends la structure que je t'ai proposée au message 27 parce que sinon on ne sait plus où on en est.
Ensuite chez moi le pdf est créé sans problème, la seule chose est qu'il s'appelle "0.pdf"...normal et je t'ai déjà expliqué pourquoi dans l'un de mes précédents messages donc relis-les.
Un problème lors de la création PDF pourtant la formule est correct mais n’enregistre que la colonne "B"
chez moi l'ensemble de la zone d'impression définie par la macro apparaît dans le pdf
Voici le fichier fait "aaa" Et comme il devrais sortir "A108"
Pourquoi?
je ne comprends pas ce que tu veux dire.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 316
Membres
103 176
dernier inscrit
jean.yvesjean.yves