Simplifier une macro Excel

Bonjour le Forum

J’utilise une macro qui fonctionne très bien mais je vois qu’elle n’est pas bien écrite

Cette macro enregistre la feuille « VISITE » en deux formats xlsx et pdf sous le nom du prof et date de visite dans un dossier nommé « Rapports »

Est-ce possible la simplification de ce code en gardant le rôle ?

Un fichier simple ci-joint

13sauvegarde.xlsm (42.93 Ko)

Merci d’avance à votre aide

Cordialement

Sub Sauvegarder()         'Sauvegarder la feuille "Visite" sous format xlsx et pdf
Dim wkb As Workbook, nm As Name
Dim Sh

  Reponse = MsgBox("Veux-tu créer un fichier PDF à partir du feuille active ?", _
  vbYesNo + vbDefaultButton2 + vbExclamation, "Créer un fichier PDF")

Application.ScreenUpdating = False

   ChemindAcces$ = "C:\Dossier_Inspect-V11\Rapports" 'Dossier de sauvegarde

   NomFichier$ = Feuil2.Range("B5") & "_" & Feuil2.Range("A6") & "_" & Format(Feuil2.Range("B7"), "ddmmyyyy") & ".pdf"
    If Reponse = vbNo Then End

      With Sheets("Visite")
       '''.Unprotect
       .Shapes.Range(Array("ztxt1")).Line.Visible = msoFalse    'Enlever le contour de la z_text sur la feuille sauvegardée
      End With

     Sheets("Visite").Copy
     Range("Plage").Copy

     Range("Plage").PasteSpecial Paste:=xlPasteValues
     Application.CutCopyMode = False

     Set wkb = ActiveWorkbook   'Supprimerles noms définis
            On Error Resume Next
        For Each nm In wkb.Names
              nm.Delete
        Next nm

    ChemindFichier$ = "C:\Dossier_Inspect-V11\Rapports" & "\" & NomFichier$
    ActiveWorkbook.SaveCopyAs ChemindAcces$ & "\" & Feuil2.Range("B5") & "_" & Feuil2.Range("A6") & "_" & Format(Feuil2.Range("B7"), "ddmmyyyy") & ".xlsx"

    ActiveWorkbook.Close False

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ChemindFichier$, Quality:=xlQualityStandard, _
     IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

      With Sheets("Visite")
      ''' .Protect
       .Shapes.Range(Array("ztxt1")).Line.Visible = msoTrue    'Garder le contour de la z_text sur la feuille source
      End With
      Application.ScreenUpdating = True
End Sub

Bonjour jiba

"J’utilise une macro qui fonctionne très bien mais je vois qu’elle n’est pas bien écrite"
Et qu'est-ce qui peut vous faire dire ça, vous qui ne semblez pas connaitre le VBA

On ne vous a jamais appris que le mieux est l'ennemi du bien !?

Bonsoir jexcel2fr

cette macro je l'ai monter tout seul grâce au forum bien sur. seulement je vois qu'elle est lourde et qu'on peut réduire ces lignes ou l'améliorer, par exemple la zone de texte.

Merci

cordialement

Re,

Et bien dites nous ce que vous souhaitez exactement

Mais perso, à part supprimer les lignes vides qui ne servent à rien...

Re

je veux supprimer le contour de la zone du texte sur les fichiers sauvegardés mais pas sur le fichier source avec un code plus simple que le mien, car le mien

est faite sur deux étapes au début la suppression et fin garder le contour sur la source.

pourquoi pas un code simple comme suppression des noms définis

Merci

Bonjour à tous,

Je rejoins @JExcel2fr, macro courte ne veut pas dire + rapide ou "mieux", bien au contraire !

Raccourcir ça implique faire des suppositions qui, à la moindre modif de quoi que ce soit peuvent faire planter le VBA.

Pour info, il y a cette ligne que je ne comprends pas

If Reponse = vbNo Then End

End quoi ?? S'il faut quitter le Sub, c'est If Reponse = vbNo Then Exit Subqu'il faut écrire.

Rechercher des sujets similaires à "simplifier macro"