XL 2016 Excel code VBA pour ajuster le contenu d’une plage sur 1 page

bouclesdor

XLDnaute Occasionnel
Bonjour à vous les pros d’Excel,

Je vous écris car j’ai un code VBA dans un fichier Excel qui créé un PDF à partir d’une plage de cellules et j’aimerais modifier ce code pour que si le contenu de la plage n’entre pas sur 1 page je veux que le contenu s’ajuste sur 1 page.

Voici mon code:

With OutMail
.to = Sheets("po").Range("a12")
.CC = "PierreJean@ABCcompagnie.com"

' fait un cutePDF de la feuille PO de la plage a1 à o60
===> c’est ici que je pense que je devrais modifier mon code pour lui dire d’ajuster le contenu de la plage A1 à O60 sur une page mais je ne trouve pas comment…
Sheets("PO").Range("A1:eek:60").ExportAsFixedFormat xlTypePDF, "O:\Financial\PO\" & "PO " & Range("ad1") & " " & Range("a8") & ".pdf

'Pour enregistrer la copie du PO avec le même nom de fichier et joindre ce fichier au e-mail
PJ = "O:\Financial\PO\" & "PO " & Range("ad1") & " " & Range("a8") & ".pdf"

.attachments.Add (PJ)
.Subject = ActiveWorkbook.Name
.HTMLBody = StrBody & "<br>" & signature 'strbod
.ReadReceiptRequested = True

'Change Item(1)to the account number that you want to use
Set .SendUsingAccount = OutApp.Session.Accounts.Item(1)
.Display​

J'ai trouvé ce code

With Sheets("PO").PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With​
Mais ça n'ajuste pas selon ma plage A1:O60 et je ne sais pas comment imbriquer mes 2 codes pour que ça fonctionne...

Merci à l'avance,

Bouclesdor
 

bouclesdor

XLDnaute Occasionnel
Merci beaucoup cp4 pour votre réponse et désolé du délai de réponse j'ai été débordée dernièrement...

Je comprends que c'est difficile sans fichier mais comme il y a des infos confidentiels dedans donc je ne peux le mettre ici il faudrait que je fasse beaucoup de manipulation... C'est pour ça que j'ai pris une chance de mettre le code au cas où quelqu'un pourrait m'aider!

Merci beaucoup pour ces 2 pistes je vais tenté de regarder avec les sauts de page et l'enregistreur macro!

Bonne journée,

Bouclesdor
 

bouclesdor

XLDnaute Occasionnel
Bonjour cp4,

Merci encore pour votre suggestion!! Vous m'avez mis sur la bonne piste pour trouver mon code!! :) J'ai finalement réussi à faire ce que je voulais. Voici mon code modifié au cas où ça aiderait quelqu'un d'autre sur ce site. En rouge c'est ce que j'ai ajouté et/ou modifié pour définir mes zones de texte!
_________________
With OutMail
.to = Sheets("po").Range("a12")
.CC = "PierreJean@ABCcompagnie.com"


'identifie la zone d'impression
Range("A1:n61,A64:N105").Select 'voici mes 2 plages à imprimer et à ajuster sur 1 page
Range("A107").Activate
ActiveSheet.PageSetup.PrintArea = "$A$1:$n$61,$A$64:$N$105"
With ThisWorkbook.Worksheets("PO").PageSetup
.Zoom = False
.FitToPagesTall = 1
' c'est ici que je dis que je veux mettre chaque contenu de mes plages sur 1 page
.FitToPagesWide = 1 'ici pour une page de large...
End With

' fait un cutePDF de la feuille PO en imprimante les zone d'impression que j'ai défini juste avant!
Sheets("PO").ExportAsFixedFormat xlTypePDF, "O:\Financial\PO\" & "PO " & Range("ad1") & " " & Range("a8") & ".pdf

'Pour enregistrer la copie du PO avec le même nom de fichier et joindre ce fichier au e-mail
PJ = "O:\Financial\PO\" & "PO " & Range("ad1") & " " & Range("a8") & ".pdf"

.attachments.Add (PJ)
.Subject = ActiveWorkbook.Name
.HTMLBody = StrBody & "<br>" & signature 'strbod
.ReadReceiptRequested = True

'Change Item(1)to the account number that you want to use
Set .SendUsingAccount = OutApp.Session.Accounts.Item(1)
.Display
________________________

Voilà!

Encore un gros merci cp4 d'avoir répondu à mon message, car c'est ce qui m'a mis sur la bonne piste pour trouver mon code!

Salutations,

Bouclesdor
 

Discussions similaires

Réponses
2
Affichages
98

Statistiques des forums

Discussions
311 720
Messages
2 081 902
Membres
101 834
dernier inscrit
Jeremy06510