Alerte "remplacer fichier" - macro "enregistrer sous" PDF

Bonjour àtous,

J' ai créé 2 macro similaires pour enregistrer en xlsm et PDF, en ouvrant la boite de dialogue "enregistrer sous" et pré-remplissage du nom de fichier.

Avec celle pour le xlsm, si le fichier porte le même nom qu' un fichier existant, j' ai le message d' alerte classique "voulez-vous le remplacer?" ce que je recherche.

La macro, pour enregistrer en Pdf, ne me propose pas l' alerte ...

La macro pour enregistrer en xlsm:

Sub EnregFichXlsm()

    Dim Sauvegarde As Variant

    If [C5] = "" Then MsgBox ("Veuillez renseigner le champ ""INTITULÉ"" "): Exit Sub

    On Error Resume Next
    Sauvegarde = Application.GetSaveAsFilename(Range("C5"), FileFilter:=" Excel Macro Enabled Workbook (*.xlsm), *.xlsm")
       If Sauvegarde = False Then
        Exit Sub
       End If

    ThisWorkbook.SaveAs Filename:=Sauvegarde, FileFormat:=xlOpenXMLWorkbookMacroEnabled

End Sub

La macro pour le PDF:

Sub EnregFichPdf()

    Dim Sauvegarde As Variant

    If [C5] = "" Then MsgBox ("Veuillez renseigner le champ ""INTITULÉ"" "): Exit Sub

    Sauvegarde = Application.GetSaveAsFilename(Range("C5"), FileFilter:=" PDF Files (*.pdf), *.pdf")
       If Sauvegarde = False Then
        Exit Sub
       End If

    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=Sauvegarde, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

End Sub

A noter que j' ai ajouté l'instruction "on error resume next" pour la macro xlsm, car si j' annule l' enregistrement, j' ai l' erreur 1004

Merci

Bonsoir,

une solution ?

@ bientôt

LouReeD

Merci LouReed

J' avais déjà essayé de caler l' instruction "dir", j' ai retenté mais mon problème et que je laisse le choix de l' emplacement et la possibilité de modifier le nom dans la boite de dialogue "enregistrer sous".

Sur tous les exemples que je vois, il faut au moins indiquer un nom de fichier ,dans mon code, range(C5)

Je poursuis ...

(Bonjour,

Je n'ai pas de réponse pour ton pb de PDF, mais un simple MERCI pour te dire que ta macro "enregistrer sous" vient de me sauver la vie !

Bon courage et bon week-end !)

Bonjour unlukie

J' ai adapté le code présent sur le lien de Loureed:

Sub EnregFichPdf()

    Dim Sauvegarde As String

    If [C5] = "" Then MsgBox ("Veuillez renseigner le champ ""INTITULÉ"" "): Exit Sub

    Sauvegarde = Application.GetSaveAsFilename(Range("C5"), FileFilter:=" PDF Files (*.pdf), *.pdf")

    If Dir(Sauvegarde) = "" Then

            ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=Sauvegarde, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

    Else
       If MsgBox("Un fichier existant porte déjà ce nom, voulez-vous le remplacer?", vbYesNo + vbExclamation, "demande de confirmation") = vbYes Then

           ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=Sauvegarde, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

            Else: MsgBox ("Veuillez renommer le fichier")

            Exit Sub

        End If

    End If

End Sub

après plusieurs essais, ça a l' air de bien fonctionné.

J' édite en résolu

@++

Et bien bravo @ vous pour le mix de code !

Ravis que m'on aide (si petite soit-elle... juste un lien... ) vous est aidée !

@ bientôt

LouReeD

Bon, j' ai dégainé un peu trop vite ...

Si j' annule l' enregistrement dans la boite de dialogue, ça enregistre le fichier quand même avec comme nom faux.pdf

Je n' ai pas réussi à placer l 'instruction (Selon endroit, ça génére des erreurs 13)

If Sauvegarde = False Then Exit Sub

qui, en autre, remplace subtilement:

If Sauvegarde = False Then
        Exit Sub
       End If

En pièce jointe, un fichier test

Merci

139test-enrg-pdf.xlsm (17.05 Ko)

Bonsoir,

attention à ne pas confondre une valeur "String" = à "Faux" et une valeur "boolean" = False...

donc :

If Sauvegarde = "Faux" Then Exit Sub

et voilà le tour est joué

@ bientôt

LouReeD

Ps : merci à vous, je viens de dépasser les 1000 messages !!!!

louReeD

Merci de nouveau

Pour les mille :

Bon moi , j' ai 15 jours de VBA dans le cerveau, je donne rendez-vous pour mes mille en 2022 !

@++

Rechercher des sujets similaires à "alerte remplacer fichier macro enregistrer pdf"