Le Danger avec une commande à l'ouverture :
c'est que si vous enregistrez une copie dès l'ouverture au format xlsm alors la commande à l'ouverture sera elle aussi
reproduite sur la copie.
Dans un premier temps dans le propriété de votre "Workbook" :
Private Sub Workbook_Open()
Dim Chemin As String, Fichier As String
Chemin = "G:\Gatering\"
ChDrive "G:"
ChDir Chemin
MsgBox "Vous devez enregistrer une Copie au nom du client" 'Avertissement enregistrement obligatoire
Fichier = Application.GetSaveAsFilename(Fichier, "Fichiers Excel (*.xlsm), *.xlsm")
ActiveWorkbook.SaveAs Fichier ' Ouverture boite d'enregistrement sous
End Sub
Ceci devrait lancer un message puis ouvrir la fenêtre d'enregistrement vers le répertoire G:\Gatering\
Cependant il faudrait une commande après sauvegarde pour supprimer le contenu de workbook open qui n'est plus nécessaire
sur la copie.
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim Debut As Integer, Lignes As Integer
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
Debut = .ProcStartLine("Workbook_Open", 0)
Lignes = .ProcCountLines("Workbook_Open", 0)
.DeleteLines Debut, Lignes
End With
End sub
En cochant référence "Microsoft visual Basic For Application Extensenbility 5.3"