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,

N'étant pas du tout informaticien je cherche, nom soucis pas trouver ci-dessous ou presque mais faut donc modifier:
Salut Guillaume, le Forum

Peut-être comme cela

Code :
Sub EssAiImpressIon()
Dim P As Byte
P = MsgBox(Range("Database!K33"), vbYesNo + vbDefaultButton1) 'je suppose que c'est un box mais "Databasa!K33" l'emplacement et j'ai pas l'exemple!
If P = vbNo Then Exit Sub
Application.Dialogs(xlDialogPrinterSetup).Show
With Sheets("Feuil1") ' ici la feuille à imprimer
.PageSetup.PrintArea = "$C$2:$T$30" ' les cellules
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
.BlackAndWhite = True
End With
.PrintOut Copies:=1
End With
End Sub
Bonne Journée

voilà quelques annotation dans la citation pour voir si j'ai bien compris mais je ne suis pas encore en pdf?

merci pour l'aide.

Marc
 

david84

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

Bonjour,
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.
Tes explications sont trop vagues...
d'imprimer une feuille (qui a sa zone d'impression définie)
Tu parles bien d'une feuille Excel (nous sommes sur un forum Excel) ?
Si c'est le cas :
- tu stockes le nom de l'imprimante active dans une variable de type string
Code:
Dim ImprActuelle As String
ImprActuelle = Application.ActivePrinter
- tu choisis l'imprimante que tu veux utiliser pour imprimer ton document
Code:
Application.ActivePrinter = "nom de l'imprimante"
- tu définis sa zone d'impression (utilisation de la propriété PageSetup.PrintArea) et tu l'imprimes c'est tout...que vient faire le format Pdf là-dedans ?
- puis tu rétablis l'imprimante initiale en tant qu'imprimante par défaut
Code:
Application.ActivePrinter = ImprActuelle
A+
 

bellenm

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

re bonjour David,
Dim ImprActuelle As String
ImprActuelle = Application.ActivePrinter

Application.ActivePrinter = "nom de l'imprimante"

Application.ActivePrinter = ImprActuelle

Voilà je suppose le code que je dois insérer dans la page mais où et comment?

Pour le pdf c'est un logiciel style "PDF créator" qui au lieu d'imprimer transforme la sélection en un fichier pdf

j'ai mis le fichier ci joint d'une des pages qu'il faut transformer en fichier pdf (3 le même pour trois équipes différentes)

j'espère pas été trop compliqué

Marc
 

Pièces jointes

  • imprimer.xlsm
    108.5 KB · Affichages: 51
  • imprimer.xlsm
    108.5 KB · Affichages: 62

david84

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

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.
Un essai dont certaines parties du code doivent être renseignées par tes soins :
Code:
'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 = "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

A+
 

bellenm

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

re David,

cela parait simple mais je ne trouve pas comment activer la fonction, j'ai bien mis le code dans la zone du code, mais je dois l'activer comment?
Lorsque je fais "CTRL + p" c'est l'imprimante par défaut du pc qui se connecte!

Pour changer le nom du document PDF créer y a t'il moyen de prendre le texte ce situant sur la feuille en "Z2" ?
'fichier pdf placé dans au même endroit que ce fichier Excel
NomFichier = ThisWorkbook.Path & "\" & "testPdf.pdf" 'ici sûrement mais comment?

Merci pour l'info
ps: Code bien expliquer

Marc
 

david84

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

Accéder à la fenêtre Visual Basic (Ctrl+F11)>menu Insertion>module>coller le code dans le module.
Placer un bouton comme celui du contrôle "Menu">clic droit>affecter une macro>sélectionner la macro ZoneImpressionEnPdf
Concernant le nom de fichier : sur le principe remplacer en Z2
Code:
NomFichier = ThisWorkbook.Path & "\" & "testPdf.pdf"
par
Code:
NomFichier = Range("Z2").Value
mais là cela ne fonctionnera pas puisque cette cellule ne comporte pas un chemin de fichier.
Le plus simple est de placer le chemin de fichier dans une autre cellule et d'y faire référence.
A+
 

bellenm

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

Bonjour David84,

j'ai essayer de mettre le code j'ai bien des référence dans Macro "Feuille22.ZoneimpressionEnPdf" je fait executer il box s'affiche :
Microsoft Visual Basic pour Applicationc
cercle rouge avecune croix 400

Là je suis perdu

Marc
 

david84

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

Bonjour,
place le fichier contenant ta tentative en pièce jointe que je comprenne la manière dont tu t'y es pris et ce qui ne va pas.
Si je te fais tout de A à Z tu vas repartir avec la solution sous le bras sans avoir rien compris et ce n'est (à mon avis) pas le but de ce forum.
A+
 

david84

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

La procédure doit être placée dans un module classique et non un module de feuille.
Où est le bouton qui doit être placé sur la feuille et qui permet de déclencher la procédure ZoneImpressionEnPdf ?
La cellule Z2 ne contient pas le chemin du fichier.
Les explications t'ont déjà été fournies dans le message #8.
A+
 

kiki29

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

Salut, l'erreur est tellement grossière que je laisse bellenm la chercher : on n'apprend que de ses erreurs.

vu l'animal à rajouter qqch comme ceci, histoire de vérifier le nom du fichier
Code:
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
 
Dernière édition:

bellenm

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

Bonjour à tous ,

je m'y remet mais je répète je ne suis pas informaticien donc je ne comprend pas toujours tout, les différence entre macro et visual basic?

Dans le message #8 David tu écris pour accéder au module
Accéder à la fenêtre Visual Basic (Ctrl+F11)>menu Insertion>module>coller le code dans le module.
Placer un bouton comme celui du contrôle "Menu">clic droit>affecter une macro>sélectionner la macro ZoneImpressionEnPdf

Bon lorsque je fait "CTRL+F11" j'arrive sur une nouvelle page blanche avec comme non de la page "Macro1" !

Sur le haut d la page dans les onglet je vais donc sur le troisième "INSERTION"

Je n'ai pas "module"
voici ce qu'il y a: modes d'affichage, afficher, zoom, fenêtre et macros : dans cet case il y a afficher macro, enregistrer et utiliser référence relative!
Dans afficher: j'ai exécuter, pas à pas détaillé et modifier!

Donc j'ai y mettre de la bonne volonté mais je ne vois toujours pas ou coller la formule? :confused:

Créer un bouton et y affecter une macro un lien hyper texte j'arrive à le faire mais placer un code dans un module que je n'arrive pas à créer là je bloque vraiment.

Merci pour votre patience et votre aide.

Marc
 

bellenm

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

Sur la feuille "Macro1" en cliquant dessus j'ai: Feuille, graphique, macro ms excell 4.0, macro inti MS excell 4.0, boîte de dialogue microsoft, bienvenue dans excel, calendriers des absences de..., calendrier pertpétuel.

Voilà rien de plus donc toujours pas de module pour coller le code!
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 180
dernier inscrit
Vcr