Enregistrement feuille en PDF avec VBA

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
 

naitgo

XLDnaute Nouveau
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.
 

tactic6

XLDnaute Impliqué
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
 

naitgo

XLDnaute Nouveau
Re : Enregistrement feuille en PDF avec VBA

Pourquoi le chemin fonctionnerai pour le fichier Excel et pas pour le fichier PDF ?
J'ai la même version "Excel", ce qui change c'est la plateforme, je passe de windows XP à windows 7 64 bits
 

pascal21

XLDnaute Barbatruc
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?
 

naitgo

XLDnaute Nouveau
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
 

naitgo

XLDnaute Nouveau
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
 

mprexcel

XLDnaute Junior
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.
 

Discussions similaires

Réponses
6
Affichages
298
Réponses
10
Affichages
1 K
Réponses
1
Affichages
551

Statistiques des forums

Discussions
312 185
Messages
2 086 009
Membres
103 089
dernier inscrit
johnjohn1969