Impression excel en pdf avec macro VBA

Fermé
simdup Messages postés 13 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 27 février 2015 - 19 nov. 2014 à 14:54
simdup Messages postés 13 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 27 février 2015 - 20 nov. 2014 à 09:24
Bonjour,
Je cherche si quelqu'un aurait une solution à mon problème. J'ai crée un macro qui imprime mon fichier excel. J'aimerais si c'est possible en crée une identique mais qui "imprime" en pdf.
voici ma macro :

Public Sub Imprime()

ActiveSheet.Range("A1:AH126").PrintOut

If Cells(4, 49) <> 0 Then
ActiveSheet.Range("A127:AH189").PrintOut
End If
If Cells(5, 49) <> 0 Then
ActiveSheet.Range("A190:AH253").PrintOut
End If
If Cells(6, 49) <> 0 Then
ActiveSheet.Range("A254: AH316 ").PrintOut
End If
If Cells(7, 49) <> 0 Then
ActiveSheet.Range("A317: AH380 ").PrintOut
End If
If Cells(8, 49) <> 0 Then
ActiveSheet.Range("A381: AH443 ").PrintOut
End If

End Sub

Si quelqu'un à la réponse à ma question je le remercie déjà à l'avance

Bonne journée le forum

5 réponses

PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
Modifié par PlacageGranby le 19/11/2014 à 14:57
hmm...

On imprime sur du papier, mais on enregistre sous format PDF.

Je ne comprend pas ta question, pourrais-tu clarifier si tu veux imprimer ou enregistrer.
0
simdup Messages postés 13 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 27 février 2015
19 nov. 2014 à 14:59
Oui pardon pour cet abus de language, je veux en effet enregistré mon fichier en pdf.
0
simdup Messages postés 13 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 27 février 2015
19 nov. 2014 à 15:09
En fait dans mon fichier excel j'ai crée un bouton pour imprimer ma feuille sous conditions ( avec ma macro posté dans mon premier message ) et j'aimerais crée un deuxième bouton qui enregistre mon fichier avec les mêmes conditions. Si possible avec le même nom de fichier que celui enregistrer en .xlsm en .pdf et dans le même dossier.
Je ne sais pas si mes explications sont clairs mais si quelqu'un à une solution je le remercie car cela me débloquerais bien.
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
19 nov. 2014 à 16:15
On ne peut pas vraiment enregistrer qu'une partie de la feuille.

Ce qui est possible, copier la sélection dans une nouvelle feuille et ensuite enregistrer cette feuille en PDF.
Ensuite on supprime la nouvelle feuille temporaire

    ActiveSheet.Range("A127:AH189").Select  'Zone à imprimé
    Selection.Copy
    ActiveWorkbook.Worksheets.Add  'on ajoute une feuille temporaire
    ActiveSheet.Paste 'on y colle la zone à imprimer
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ActiveWorkbook.Name & ".PDF", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    Application.DisplayAlerts = False  'ignore l'avertissement quand on supprime une feuille
    ActiveSheet.Delete  'bye bye la feuille temporaire
    Application.DisplayAlerts = True  'On remet les msg d'avertissement



Attention a bien sauvegarder ton classeur sous un autre nom avant de faire les manipulation.
Quand on joue avec des activesheet.delete et pas d'avertissement, mieux vaut toujours avoir un backup.
0
simdup Messages postés 13 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 27 février 2015
20 nov. 2014 à 09:10
Bonjour,
merci pour cette réponse mais il y a un souci car la feuille temporaire n'a pas la même taille de cellule et donc tout est décalé. Et aussi la macro ne prend pas en compte les conditions comme ma macro impression.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simdup Messages postés 13 Date d'inscription lundi 17 novembre 2014 Statut Membre Dernière intervention 27 février 2015
20 nov. 2014 à 09:24
Bonjour, alors en regroupant toutes les informations que j'ai pu récolter j'ai réussi à améliorer ma première macro en choisissant l'imprimante et donc je peu sélectionner pdfCreator :
Public Sub Imprime()
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveSheet.Range("A1:AH126").PrintOut

If Cells(4, 49) <> 0 Then
ActiveSheet.Range("A127:AH189").PrintOut
End If
If Cells(5, 49) <> 0 Then
ActiveSheet.Range("A190:AH253").PrintOut
End If
If Cells(6, 49) <> 0 Then
ActiveSheet.Range("A254: AH316 ").PrintOut
End If
If Cells(7, 49) <> 0 Then
ActiveSheet.Range("A317: AH380 ").PrintOut
End If
If Cells(8, 49) <> 0 Then
ActiveSheet.Range("A381: AH443 ").PrintOut
End If

End Sub

Merci à tous, bonne journée le forum
0