Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2011, 14h35   #1
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Par défaut Impression PDF d'une sélection de cellules

Bonjour à toutes et à tous,

Je souhaiterais imprimer en PDF certaines cellules d'un document Excel.
Après recherche et réflexion, je suis arrivé au code suivant, qui utilise PDFCreator :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub ToPdf()
 
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
NomExcel = ThisWorkbook.Name
NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
 
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") = ThisWorkbook.Path
    .cOption("AutosaveFilename") = NomPdf
    .cOption("AutosaveFormat") = 0
    .cClearCache
End With
 
Worksheets(3).Range("A2:M9,B35:E73").PrintOut copies:=1, ActivePrinter:="PDFCreator"
 
 
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
 
End Sub
Cela fonctionne et crée un document PDF. La plage de cellule sélectionnée Range("A2:M9,B35:E73") sort cependant sur 2 feuilles différentes (une pour A2:M9, une autre pour B35:E73), alors qu'elle a la place d'être sur une même feuille.

Je n'ai pas réussi à trouver le bout de code qui permettrait de restreindre l'impression à une seule page au lieu des 2 par défaut.

J'en appelle à vos brillants
Merci d'avance
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h59   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Il y a une option dans "mise en page" qui permet de faire tenir l'impression sur n feuilles en largeur et m feuilles en longueur. Un petit coup d'enregistreur de macro devrait te donner la propriété à utiliser.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 15h48   #3
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Bonjour et merci de ta réponse !

Effectivement, je connais cette fonction. Je ne m'explique pas pourquoi elle ne fonctionne pas dans ce cas : j'ai beau indiquer que je souhaite imprimer ma sélection sur 1 seule feuille, la sélection se partage sur 2 feuilles... rageant !

Cela pourrait-il venir du fait que les 2 plages de cellules sélectionnées sont non jointes et que leur espacement est trop important ? Quelle solution pour contourner ce problème si c'est bien le cas ?

Merci d'avance
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 16h21   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Je dirais que le mieux c'est que tu essaies manuellement pour trouver une solution qui marche avant de l'implémenter dans ta macro.
Si tu sélectionnes directement A2:M73, ça ne fonctionne pas comme tu veux ?
Si tu veux que les 2 plages soient collées, je pense qu'il faut d'abord copier sur une autre feuille pour avoir la mise en page que tu veux avant d'imprimer.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 17h53   #5
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Je te remercie pour ces éléments d'info !
Certaines cellules que je ne souhaite pas imprimer figurent dans la plage A2:M73, d'où ma volonté de sélectionner certaines plages..

Merci !
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h28.


 
 
 
 
Partenaires

Hébergement Web