Enregristrement en pdf
bonjour,
Voila mon souci : J'ai un code vba pour enregistrer une feuille en PDF qui fonctionne, mais si j'enregistre avec la même valeur en "c10" et en changeant quelques lignes de ma feuille. Le premier fichier PDF est écrasé par le nouveau.
Je n'ai pas de message me disant : "le fichier existe déjà voulez-vous le remplacer?"
Est-ce possible d'avoir ce message?
Je vous joins le code
Merci
Sub enregistrement_pdf()
Dim Chemin As String, nomFichier As String
Chemin = "C:\Users\Jérôme\Documents\BET Metreur\Facture\Facture clients\Facture pdf\"
nomFichier = ActiveSheet.Range("c10").Value & ".pdf"
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Chemin & nomFichier, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
SALUT
AVEZ VOUS QUELQUE CHOSE COmme ça " Application.DisplayAlerts = False
" quelque part dans le code
Non tout le code est là
Hello,
J'ai résolu ce problème en inverse il y'a 6 mois
ConflictResolution:=xlOtherSessionChanges
Tu trouvera la totalité de la méthode liée à la save, sur ce lien
https://msdn.microsoft.com/en-us/library/bb214129%28v=office.12%29.aspx
Voilà une partie du code que j'utilise pour faire de la save auto, sans message d'alerte :
'3. Désactivation des messages de sécurité, pour permettre l'automatisation sans passer par l'utilisateur
Application.DisplayAlerts = False
'4. Commande de lieu et de type d'enregistrements fichier
If Not SAVEHARD = "NON" Or IsEmpty(SAVEHARD) Then
ChDir SAVEHARD
ActiveWorkbook.SaveAs _
Filename:=SAVEHARD & titrearchive & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, _
CreateBackup:=False, _
ConflictResolution:=xlLocalSessionChanges
'1. Options Répertoire d'enregistrement
'A définir selon cas
'2. Options FileName
'Possibilité de spécifier à nom unique avec variable Titrearchive
'changer racine fichier en ".xlsx" si sans macro ou ".xlsm" si avec macro
'3. Options FileFormat
'Classeur Excel sans macro : xlOpenXMLWorkbook
'Classeur Excel avec macro : xlOpenXMLTemplateMacroEnabled
'4. Options ConflictResolution
'xlLocalSessionChanges > Les modifications de l'utilisateur local sont toujours acceptées.
'xlOtherSessionChanges > Les modifications de l'utilisateur local sont toujours rejetées.
'xlUserResolution > Une boîte de dialogue demande à l'utilisateur de résoudre le conflit.
Voila voila
Hello à toi aussi Waard
Malheureusement cela ne fonction pas, J'ai un message erreur :
"erreur définie par l’application ou par l'objet"
????
hum je me suis enflammé, la méthode que t'utilise pour la save en pdf est sur ce lien, je ne vois pas de possibilité d'activer une alerte à partir de ta méthode, au contre de celle de la save :
https://msdn.microsoft.com/en-us/library/office/ff198122.aspx
Si tu pars sur la méthode de la save, voici les formats documents pris en charge par la méthode (pas de Pdf), qui te permettra d'activer une alerte :
https://msdn.microsoft.com/en-us/library/bb241279%28v=office.12%29.aspx
Sinon en faisant un code de contrôle d'existence de document pdf au même nom dans ton dossier, tu pourras programmer un message personalisé pour l'utilisateur, s'il veut sauvegarder ou non, (avant la méthode d'export pdf).
A moins que quelqu'un a le code sous la main entre temps, je vais voir dans mes docs et sur les fofo anglais en général ils ont les codes, prochain message dans la soirée, c'est que j'ai le code, sinon échec.
Merci
Mais je viens de réfléchir (ça m'arrive).
Sur le même bouton de contrôle, je lance les deux sauvegardes xlsm et PDF en même temps . je lance la PDF en premier et la xlsm en deuxième.
Pour la save en xlsm il m'avertit si le fichier existe déjà et lme demande si je veux le remplacer.
J'ai juste à inverser l'ordre de lancement. Si le fichier xlsm existe, il existera aussi en PDF obligatoirement.
CQFD
Merci ton aide.
Haaa je savais bien que j'avais bossé cette question, oui j'ai une procédure de contrôle de fichier identique dans mon encyclopédie de code VBA, donc j'ai rebossé le code et ça marche (désolé pour les accents, mais j'ai un souci d'affichage dans mon module VBA depuis quelques semaines
En gros le déroulé c'est ça :
1. Tu lance le process de save pdf
2. Il controle si le nom n'existe pas déjà
3. Si oui alors message à User et annulation de save et sortie de la sub (et l'user n'a plus qu'à changer le nom)
3. Si non alors save pdf
Tadaam =
Sub SavePdf()
'test de nom de fichier identique
'si test nom fichier existe alors process d'annulation de methode par sortie de sub SavePdf
If FichierExiste("C:\Users\waard\Desktop\Classeur1.pdf") = True Then
MsgBox "Un Pdf porte deja ce nom, sauvegarde annulee"
Exit Sub
End If
'si fichier pdf n'existe pas, alors save
ChDir "C:\Users\waard\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\waard\Desktop\Classeur1.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
Function FichierExiste(NomFichier As String) As Boolean
'une fonction de controle d'existence de fichier au meme nom se lance et rapporte vrai ou faux, suivant le test
FichierExiste = Dir(NomFichier) <> "" And NomFichier <> ""
End Function
Tu n'a plus qu'a mettre tes variables de nom, chemin et c'est ok
Merci je garde quand même ton code et te dis à bientôt.
Jérôme
Je marque résolu