Impression PDF en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nadir****

XLDnaute Occasionnel
Bonjour.

Je voudrais publier sous format PDF 2 plages de cellules disjointes de manière à ce qu'elles rentrent toutes les deux sur une seule page.
Les plages s'appellent Plage1 et Plage2 et sont définies comme des "range"

Est-ce que quelqu'un pourrait m'aider ?

Merci.
 
Re : Impression PDF en VBA

Je crois que je n'ai pas été assez clair.

Voici un fichier avec un début de code VBA pour illustrer mon problème.

Les 2 plages sont disjointes avec des structures (nombre de lignes, de colonnes, largeurs des lignes et des colonnes) différentes.

Comment imprimer ces 2 plages sur une seule page en respectant leur structure ?
Est-ce possible ?

Par avance merci.

Nadir
 

Pièces jointes

Re : Impression PDF en VBA

Bonjour Nadir,

A ma connaissance, sur Excel on ne peut imprimer qu'une Feuille et non des plages disjointes, que ce soit en PDF ou autre 😎

Sinon en copiant / collant les plages en tant qu'image sur une autre feuille
Code:
  Sheets("Feuil1").Range("L6:N11").Copy
  Sheets("Feuil2").Pictures.Paste
  Sheets("Feuil1").Range("Q20:S23").Copy
  Sheets("Feuil2").Pictures.Paste

A+
 
Dernière modification par un modérateur:
Re : Impression PDF en VBA

Bonjour Nadir,

En passant par une copie en tant qu'image des plages et en les collant l'une sous l'autre dans une autre feille.

Comme il te l'a déjà été dit, joint tes fichiers en .xls sur ce forum sinon va sur le forum 2007

Attention j'ai changé le chemin pour l'impression PDF
Code:
Sub ImprimerTableaux()
'
    Dim Plage1 As Range, Plage2 As Range
    Dim ligne As Long
    Set Plage1 = Sheets("Feuil1").Range("B6").CurrentRegion
    Set Plage2 = Sheets("Feuil1").Range("Q20").CurrentRegion
 
    'destruction des images éventuellement existantes dans la feuil2
    Sheets("Feuil2").Activate
    With ActiveSheet
 
        Do While .Pictures.Count > 0
           .Pictures(1).Delete
        Loop
        'Copie la plage 1 en tant qu'image
        Plage1.CopyPicture xlPrinter
        'Coller l'image dans la feuil2
        .Paste Range("A1")
        'Récupérer le numéro de la dernière ligne occupée par l'image collée
        ligne = .Pictures(.Pictures.Count).BottomRightCell.Row
        'Copier la plage 2 en tan qu'image
        Plage2.CopyPicture xlPrinter
        'coller 3 lignes sous l'autre
        .Paste Range("A" & ligne + 3)
        With .PageSetup
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlLandscape
            .Draft = False
            .PaperSize = xlPaperA4
            .FitToPagesWide = 1
            .FitToPagesTall = 1
            .PrintErrors = xlPrintErrorsDisplayed
        End With
        'Exportation au format pdf
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                             [B]ThisWorkbook[/B].Path & "\testimpression.pdf", Quality:=xlQualityStandard
    End With
End Sub

[Edit] Hello Bruno 😀
A+
 
Dernière modification par un modérateur:
Re : Impression PDF en VBA

Bonjour Hasco, Bonjour Bruno Merci.

Désolé pour EXCEL 2007. J'enregistrerai mes classeurs sous format .xls.

Y a t il un moyen de faire en sorte que l'image rentre sur une page ? En la réduisant à une page ?

Dans le cas présent, elle déborde et elle n'est pas imprimée entièrement.
Le code suivant:
Code:
            .FitToPagesWide = 1
            .FitToPagesTall = 1
ne suffit pas

Merci.

Nadir.
 
Re : Impression PDF en VBA

Oui Hasco.

Ceci permet de réduire de 10% la hauteur et la largeur de l'image et permet dans ce cas à l'image de rentrer dans la feuille imprimée.
J'aurais aimé avoir quelque chose de dynamique( si cela existe!)

Merci en tout cas pour les nombreuses réponses que tu m'as données.
J'ai beaucoup appris sur EXCELVBA en 4 semaines!
Mais, il m'en reste encore beaucoup à apprendre ....
A+
 
Re : Impression PDF en VBA

Oui Nadir,

Pour du dynamique:

Code:
Sub ImprimerTableaux()
'
    Dim Plage1 As Range, Plage2 As Range
    Dim ligne As Long
    Set Plage1 = Sheets("Feuil1").Range("B6").CurrentRegion
    Set Plage2 = Sheets("Feuil1").Range("Q20").CurrentRegion
    'destruction des images éventuellement existantes dans la feuil2
    Sheets("Feuil2").Activate
    With ActiveSheet
        Dim largeur As Single
        largeur = Application.CentimetersToPoints(29.7)
        Do While .Pictures.Count > 0
            .Pictures(1).Delete
        Loop
        With .PageSetup
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlLandscape
            .Draft = False
            .PaperSize = xlPaperA4
            .FitToPagesWide = 1
            .FitToPagesTall = 1
            .PrintErrors = xlPrintErrorsDisplayed
        End With
        'Copie la plage 1 en tant qu'image
        Plage1.CopyPicture xlPrinter
        'Coller l'image dans la feuil2
        .Paste Range("A1")
        'Récupérer le numéro de la dernière ligne occupée par l'image collée
        With .Pictures(.Pictures.Count)
            .ShapeRange.LockAspectRatio = msoTrue
            '.Height = .Height * 0.9
            .Width = Range(Cells(1, 1), ActiveSheet.VPageBreaks(1).Location.Offset(, -1)).Width
           ' ligne = .BottomRightCell.Row
        End With
        'Copier la plage 2 en tan qu'image
'       Plage2.CopyPicture xlPrinter
        'coller 3 lignes sous l'autre
        .Paste Range("A" & ligne + 3)
        'Exportation au format pdf
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                             ThisWorkbook.Path & "\testimpression.pdf", Quality:=xlQualityStandard
    End With
End Sub

A+
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
549
Retour