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 , bon moi je fais de la save xls, mais c'est le même code, ajoute cette ligne, après openafterpublish, ça devrait le faire :

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

Rechercher des sujets similaires à "enregristrement pdf"