Enregistrement feuille en PDF avec VBA

  • Initiateur de la discussion Initiateur de la discussion naitgo
  • Date de début Date de début

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 !

naitgo

XLDnaute Nouveau
Bonjour à tous,

Avec votre aide j'ai créé un code qui enregistre une feuille au format ".xlsm" et au format ".pdf".
Avec XP tous fonctionne bien, mais maintenant je veux le faire fonctionner sous Windows 7 et là ça coince au moment de l'enregistrement du "pdf", le fichier au format "xlsm" s'enregistre correctement.
Je ne comprends pas pourquoi d'où vient le souci.
Quelqu'un aurait-il la solution à ce problème ?

D'avance je vous remercie pour votre aide.

Voici le code :
Code:
Private Sub CommandButton1_Click()

    'enregistre le fichier excel
    ActiveWorkbook.SaveAs Filename:="E:\Mes Documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".xlsm"
    'enregistre la lettre en .PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "E:\Mes documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
        
    'envoi la dernière version enregistrée.
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
   ' modifie l'adresse mail et le sujet avant l'envoi
    With OutMail
        .To = Sheets("Lettre").Range("F12")
        .CC = ""
        .BCC = ""
        .Subject = "Devis n°" & " " & [C12].Value
        .Body = "bonjour,"
        .HTMLBody = "<HTML><HEAD></HEAD> " & vbCr & _
                "<BODY bgColor=#ffffff>" & vbCr & _
                "<DIV><FONT face=Arial size=3>Bonjour,</FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3> </FONT></DIV>" & vbCr & _
                "<br>" & vbCr & _
                "<DIV><FONT face=Arial size=3>Veuillez trouver, en pièce jointe, l'offre de prix concernant votre demande.</FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3></FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3>Sincères Salutations.</FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3> </FONT></DIV>" & vbCr & _
                "<br>" & vbCr & _
                "<blockquote><DIV><FONT face=Arial size=3>Christian  GOURDON</FONT></DIV></blockquote>" & vbCr & _
                "<img src=""E:\logo_signature.jpg"" /></BODY></HTML>"
                                
        'joint le classeur
        '.Attachments.Add ActiveWorkbook.FullName
        ' joint le fichier ciblé par son chemin
        .Attachments.Add ("E:\Mes documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".pdf")
        
        ' affiche le mail avant son envoi.
        .Display
        'envoi le mail sans affichage préalable
        '.Send
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
        
        
        

End Sub
 
Re : Enregistrement feuille en PDF avec VBA

oui, puisque c'est le même chemin que pour le fichier Excel et que celui-ci s'enregistre sans problème.
Je pense que ce sont les options de "Quality :" qui posent problèmes, elles ne sont peut-être pas interprétées de la même façon sous Windows 7.
 
Re : Enregistrement feuille en PDF avec VBA

Re
Je ne crois pas
J'avais 2007 et suis passé a 2010 et la macro Pdf que j'avais fonctionne tres bien
la voici j'ai essayé de l'adapter a ton code mais j'ai une erreur de chemin
peut etre faut il eviter les "mes documents ou autres " qui sont utilisés par le systeme de Windows
enfin si ma macro peut t'aider
Code:
Sub pdf()

Dim Fichier As String
Dim x As String
Dim Y As String
Dim Z As String
Sheets("SAISIE").Select
x = Range("G8").Value
Y = Range("J6").Value
Z = Range("G6").Value
Fichier = Z & " " & Y & " " & x
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"E:\Sauvegarde_2009\" & Fichier, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
 
Re : Enregistrement feuille en PDF avec VBA

BONJOUR
on pourrait avancer si tu nous indiquais quelle est le type d'erreur que tu as
plutôt du coté de VBA?
de l'enregistrement pure?
comme tactic6, je pense à un problème de chemin
la lettre du lecteur E par exemple
as tu bien un lecteur E?
 
Re : Enregistrement feuille en PDF avec VBA

Ok, je m'apprêtais à vous communiquer le message d'erreur que voici :
"Erreur d'exécution '5':
Argument ou appel procédure incorrect"
En ce qui concerne le chemin, celui qui est dans le code que vous voyez est bien celui qui fonctionne sous Windows XP. C'est-à dire que le code fonctionne tel qu'il est sous Windows XP.

Mais j'ai copié le programme sur un autre ordinateur qui lui est sous Windows 7, Excel est toujours sous la même version.

Voici le code avec le chemin sur le nouvel ordinateur :
'enregistre le fichier excel
ActiveWorkbook.SaveAs Filename:="C:\Users\systemory\Documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".xlsm"
'enregistre la lettre en .PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\systemory\Documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
 
Re : Enregistrement feuille en PDF avec VBA

Je vous remercie de vous intéresser à mon problème mais cela fonctionne toujours pas.

Toujours le même message d'erreur :
" Erreur d'exécution '5':
Argument ou appel de procédure incorrect"


Voici la totalité du code avec le nouveau chemin pour le nouvel ordinateur :
Code:
Private Sub CommandButton1_Click()

    'enregistre le fichier excel
    ActiveWorkbook.SaveAs Filename:="C:\Users\systemory\Documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".xlsm"
    'enregistre la lettre en .PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\systemory\Documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
        
    'envoi la dernière version enregistrée.
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
   ' modifie l'adresse mail et le sujet avant l'envoi
    With OutMail
        .To = Sheets("Lettre").Range("F12")
        .CC = ""
        .BCC = ""
        .Subject = "Devis n°" & " " & [C12].Value
        .Body = "bonjour,"
        .HTMLBody = "<HTML><HEAD></HEAD> " & vbCr & _
                "<BODY bgColor=#ffffff>" & vbCr & _
                "<DIV><FONT face=Arial size=3>Bonjour,</FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3> </FONT></DIV>" & vbCr & _
                "<br>" & vbCr & _
                "<DIV><FONT face=Arial size=3>Veuillez trouver, en pièce jointe, l'offre de prix concernant votre demande.</FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3></FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3>Sincères Salutations.</FONT></DIV>" & vbCr & _
                "<DIV><FONT face=Arial size=3> </FONT></DIV>" & vbCr & _
                "<br>" & vbCr & _
                "<blockquote><DIV><FONT face=Arial size=3>Christian  GOURDON</FONT></DIV></blockquote>" & vbCr & _
                "<img src=""E:\logo_signature.jpg"" /></BODY></HTML>"
                                
        'joint le classeur
        '.Attachments.Add ActiveWorkbook.FullName
        ' joint le fichier ciblé par son chemin
        .Attachments.Add ("C:\Users\systemory\Documents\Graphic Communication\Devis Clients\" & [C12].Value & " " & [F9].Value & ".pdf")
        
        ' affiche le mail avant son envoi.
        .Display
        'envoi le mail sans affichage préalable
        '.Send
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
        
        
        

End Sub
 
Re : Enregistrement feuille en PDF avec VBA

Bonjour à tous,
Dans la ligne d'exportation vers PDF, ne faut-il pas remplacer :
"C:\Users\systemory\Documents\Graphic Communication\Devis Clients\"
par
C:\Users\systemory\Documents\Graphic Communication\Devis Clients/?
Bon courage.
A bientôt.
 
- 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
6
Affichages
671
Réponses
10
Affichages
2 K
  • Question Question
Microsoft 365 Code VBA - Erreur
Réponses
1
Affichages
673
Réponses
0
Affichages
1 K
Retour