Enregistrement automatique après duplication onglet

Bonjour à tous,

Je rencontre un petit problème concernant une macro sur excel.

Ma macro à pour principe de dupliquer un onglet spécifique dans un nouveau classeur excel.

Par la suite, elle créée un dossier pour pouvoir l'enregistrer dedans.

Sub CopyAndSave()

Dim FolderPath$, Nom$

Sheets("Note vierge").Select

Sheets("Note vierge").Copy

Cells.Select

Range("A4").Activate

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.CutCopyMode = False

Nom = "Note de demande d'amélioration n°" & Range("E3")

With ActiveSheet.Range("A1:E58")
       .Value = .Value

End With

NomDossier = "N°" & Range("E3")
FolderPath = "T:\ATELIER\AMELIORATIONS CONTINUES\Pièces jointes" & "\" & NomDossier & "\"

If Dir(FolderPath, vbDirectory) = "" Then
        MkDir FolderPath
        ChDir FolderPath
        Application.Dialogs(xlDialogSaveAs).Show Nom

        Else

        MsgBox "ATTENTION : Dossier déjà existant."
        Application.Dialogs(xlDialogSaveAs).Show Nom

End If

End Sub

La macro fonctionne pas trop mal mais il me faudrait appliquer deux correctifs:

- après la création du nouveau classeur, l'enregistrement ne se fait pas tout seul (obliger de sélectionner le bouton enregistrer) => a-t-on la possibilité de l'enregistrer automatiquement sans avoir besoin de faire de manipulation?

- une fois l'enregistrement réalisé, je souhaiterai que ce nouveau classeur se ferme automatiquement.

Je débute sur les macros donc soyez indulgent avec moi

Merci d'avance pour votre aide.

Bonjour Peltierl, bonjour le forum,

ton code modifié (non testé) devrait fonctionner :

Sub CopyAndSave()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim N As String 'déclare la variable N (Nom)
Dim D As String 'd;éclare la variable D (Dossier)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CS = ThisWorkbook 'définit le classeur source CS
Sheets("Note vierge").Copy 'copie l'onglet "Note Vierge" dans un nouveau classeur
Set CD = ActiveWorkbook 'définit le classeur destination
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD (ici le premier onglet)
OD.Cells.Copy 'copie les cellules de l'onglet OD
OD.Cells.PasteSpecial Paste:=xlPasteValues 'colle les valeurs
N = "Note de demande d'amélioration n°" & OD.Range("E3") 'définit le nom N
D = "N°" & OD.Range("E3").Value
CA = "T:\ATELIER\AMELIORATIONS CONTINUES\Pièces jointes" & "\" & D & "\"
If Dir(CA, vbDirectory) = "" Then MkDir CA 'crée un dossier s'il n'existe pas
CD.SaveAs CA & NF 'enregistre le classeur destination sous
CD.Close 'ferme le classeur destination
MsgBox "Fichier créé et sauvé !" 'message
End Sub
Rechercher des sujets similaires à "enregistrement automatique duplication onglet"