Private Sub Workbook_Open() 'copie de la feuille Matrice Sheets("MATRICE").Select Sheets("MATRICE").Copy After:=Sheets(3) 'On renome la nouvelle feuille ActiveSheet.Name = "VIERGE" ' A l'ouverture du classeur on masque la Matrice Sheets("MATRICE").Visible = False End Sub
Sheets("MATRICE").Copy After:=Sheets(3)
Private Sub Workbook_Open() Sheets("MATRICE").Visible = False On Error Resume Next TOTO = Sheets("VIERGE").Name If Err Then Sheets("MATRICE").Copy After:=Sheets(3) ActiveSheet.Name = "VIERGE" End If On Error GoTo 0 End Sub
Sheets("MATRICE").Copy After:=Sheets("MATRICE")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionoffice pour mac 2011
Option Explicit '"Option Explicit" impose la déclaration ;) Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets("MATRICE").Visible = True End Sub Private Sub Workbook_Open() Dim TOTO As Worksheet Dim cpt As Integer Sheets("MATRICE").Copy After:=Sheets("MATRICE") Set TOTO = ActiveSheet On Error Resume Next TOTO.Name = "VIERGE" Do While Err Err.Clear cpt = cpt + 1 TOTO.Name = "VIERGE_" & cpt Loop On Error GoTo 0 End Sub
mais ça reste du VBA
et là je viens de tester sur un pc winXP et pour l'instant pas de soucis pour la macro au démarrage du fichier...
Private Sub Workbook_Open() Sheets("MATRICE").Visible = False On Error Resume Next TOTO = Sheets("VIERGE").Name If Err Then Sheets("MATRICE").Copy After:=Sheets(3) ActiveSheet.Name = "VIERGE" End If On Error GoTo 0 End Sub
Prévoir de ne pas créer la feuille VIEGE si existe déja ==>>
Option Explicit '"Option Explicit" impose la déclaration ;) Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Ajouter pour que si un excel avec les macros désactivé ouvre ton document '(volontairement ou non), on puisse modifier ta feuille MATRICE Sheets("MATRICE").Visible = True End Sub Private Sub Workbook_Open() Dim TOTO As Worksheet 'La variable qui pointeras vers ta nouvelle feuille (tu la nome comme tu veux) Dim cpt As Integer 'Utile pour nommer de façon unique ta nouvelle feuille (voir plus bas ;)) Sheets("MATRICE").Copy After:=Sheets("MATRICE") 'Création de la nouvelle feuille (ça tu savais déjà ^^) Set TOTO = ActiveSheet 'Place la nouvelle feuille dans ta variable On Error Resume Next 'Si une erreur est rencontré alors le code continueras de s’exécuter (habituellement à éviter), il vaux toujours mieux gérer une erreur plutôt que de la supporté TOTO.Name = "VIERGE" 'Renomme la feuille Do While Err 'Temps qu'une erreur est rencontré Err.Clear 'Suppression de l'erreur cpt = cpt + 1 'Incrémentation du compteur. En VBA les variables sont automatiquement initialisées, dans d'autre langage (en C/C++ par exemple) il aurait fallu faire cpt=0 avant le "Do While Err" TOTO.Name = "VIERGE_" & cpt 'On renomme la nouvelle feuille en ajoutant le compteur (en résumer si VIERGE existe alors ta nouvelle feuille se nommera VIERGE_1 puis VIERGE_2 jusqu'à trouver un nom disponible) Loop 'Retour au "Do While Err" On Error GoTo 0 'Désactive le faite du supporter les erreurs End Sub