Bonjour au forum
Est-il possible de créer une feuille par défaut pour un classeur seulement?
Je sais que c'est possible de créer une feuille par défaut(feuil.xlt) mais cela s'applique à tous les classeurs.
Bonjour au forum
Est-il possible de créer une feuille par défaut pour un classeur seulement?
Je sais que c'est possible de créer une feuille par défaut(feuil.xlt) mais cela s'applique à tous les classeurs.
Je dirais que tu pourrais faire ta feuille type la masquer par macro et par la suite quand l'utilisateur veux insérer une feuille c'est cette feuille que ton programme insert et non une feuille blanche. Cela t'irais comme méthode? On part la dessus?
Bonjour
Je suis partant !
Par contre je crains que la macro plante si la feuille type est masquée dans le meme classeur.
non ne t'inquiète pas
Il suffit de la démasquer avant de la copier
Remplace feuil2 par le nom de ta feuille
A placer dans Thisworbook
Pour pourvoir afficher la feuille si tu veux la modifier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Workbook_NewSheet(ByVal Sh As Object) Application.ScreenUpdating = False Worksheets("Feuil2").Visible = True Sheets("Feuil2").Copy After:=Sheets(Sheets.Count) Worksheets("Feuil2").Visible = xlSheetVeryHidden Application.ScreenUpdating = True End Sub 'pour masquer la feuille a l'ouverture du classeur Private Sub Workbook_Open() Worksheets("Feuil2").Visible = xlSheetVeryHidden End Sub
(en utilisant Xlveryhidden tu ne rend possible l'affichage que par macro, l'utilisateur ne devrais pas pouvoir tomber dessus par hasard)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub afficheFeuille() Worksheets("Feuil2").Visible =True end sub
Merci Krovax ...juste un souci :le code insére 2 feuilles (l feuille type et une feuille blanche)
Bonjour à tous,
un peu le même code que Krovax en utilisant le codename :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub testc() On Error GoTo fin Dim wb As Workbook Set wb = ThisWorkbook Application.ScreenUpdating = False With Feuil2 .Visible = True .Copy After:=wb.Worksheets(wb.Worksheets.Count) .Visible = xlSheetVeryHidden End With fin: Application.ScreenUpdating = True End SubA mon avis il te suffit de supprimer la feuille dés le début :Merci Krovax ...juste un souci :le code insére 2 feuilles (l feuille type et une feuille blanche)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub Workbook_NewSheet(ByVal Sh As Object) On Error GoTo fin Dim wb As Workbook Set wb = ThisWorkbook With Application .ScreenUpdating = False .DisplayAlerts = False End With Sh.Delete ' suppression de la feuille With Feuil2 .Visible = True .Copy After:=wb.Worksheets(wb.Worksheets.Count) .Visible = xlSheetVeryHidden End With fin: With Application .ScreenUpdating = True .DisplayAlerts = True End With End Sub
Nb :Avec displayalerts = false il ne te demanderas pas de confirmer la suppression de la feuille
supprimer ou masquer ? si c'est supprimer je ne vois pas comment lancer la procédure , le classeur contenant une seule feuille ,en l'occurrence la feuille type que je vous insérer automatiquement . Le code de krovax marche à merveille si seulement il insérait que la feuille type , i.e sans la feuille blanche.
Merci aalex pour la corection. C'était justement la question que je m'étais posé, justilise toujour le meme fichier test et il commence a être un peu truc chargé pour que je remarque ce genre d'erreur
Juste une petite modif pour insérer la feuille pas en dernier mais la ou elle aurait du être
Sinon y a tout dans ce code
Remplace le Feuil2 par le code name de ta feuille et c'est bon
(Le code name tu le trouvera dans l'éditeur de macro c'est le nom de l'onglet qui n'est pas entre parenthèse a gauche)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Sub Workbook_NewSheet(ByVal Sh As Object) On Error GoTo fin Dim wb As Workbook dim i as integer Set wb = ThisWorkbook With Application .ScreenUpdating = False .DisplayAlerts = False End With i=sh.index 'peut être mettre un -1 ici i=sh.index-1 Sh.Delete ' suppression de la feuille With Feuil2 .Visible = True .Copy After:=wb.Worksheets(i) .Visible = xlSheetVeryHidden End With fin: With Application .ScreenUpdating = True .DisplayAlerts = True End With End Sub
Sympa le coup de l'indexJuste une petite modif pour insérer la feuille pas en dernier mais la ou elle aurait du être
Krovax, t'as donné un code pour gérer l'évenement "nouvelle feuille", pour cela tu vas dans thisworkbook, dans la liste de gauche tu selectionnes workbook, dans celle de droite newsheet et le sub s'ecrit automationquement ensuite tu copies dedans le code que il t'a donné.supprimer ou masquer ? si c'est supprimer je ne vois pas comment lancer la procédure , le classeur contenant une seule feuille
GRAND MERCI VOUS ETES GENIAUX
C'est impeccable !!!
SALUTATIONS
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager