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 SubLa 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