Protection suppression onglet mais ajout onglet autorisé

Bonjour à tous,

Je me permets de vous demander de l'aide sur un point particulier : est-il possible grâce à VBA (ou par tout autre moyen) de protéger les onglets Excel d'un fichier contre la suppression MAIS de laisser la possibilité à l'utilisateur d'ajouter de nouveaux onglets ?

J'ai un fichier Excel avec 5 onglets (Feuil1, Feuil2 etc...) : je souhaite empêcher leur suppression par l'utilisateur (mais l'utilisateur doit pouvoir les compléter) mais il doit pouvoir ajouter d'autres onglets s'il le souhaite.

J'ai essayé par la protection de classeur Excel (Structure) mais cela bloque aussi l'ajout d'un nouvel onglet.

J'ai beau chercher, à chaque fois que je trouve une macro cela me bloque la suppression ET l'ajout d'un nouvel onglet (en fait cela active la protection sur la structure du classeur)...

S'il existe une solution VBA pour cela je veux bien avoir le code svp, je vous en serai très reconnaissant

Si je peux même pousser le bouchon à demander s'il est possible de faire apparaitre une message box "interdit" lorsque l'utilisateur essaye de supprimer l'onglet cela serait parfait mais ça ce n'est que la cerise..

En tout cas je vous remercie par avance

Bien amicalement,

Cédric

39classeur-test.xlsx (9.29 Ko)

Bonjour,

ci-jointe proposition

111classeur-test.xlsm (17.44 Ko)

bonjour cedric1001, le forum,

Une proposition:

Classeur protégé par mot de passe "toto"

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

For Each Sh In ActiveWindow.SelectedSheets
            ThisWorkbook.Protect "toto", True, True
            'ThisWorkbook.Unprotect "toto"
Next
End Sub

Macro pour ajouter un onglet en fin (on déprotège, on ajoute l'onglet, on reprotège).

Sub AjouterFeuille()

ThisWorkbook.Unprotect "toto"

'ajoute la nouvelle Feuille tout au début du Classeur
'Sheets.Add Before:=Worksheets(1)

'ajoute une Feuille tout à la fin du Classeur
' --> pour déterminer la dernière Feuille du Classeur, on compte les Feuilles avec la méthode Worksheets.Count
Sheets.Add After:=Worksheets(Worksheets.Count())

ThisWorkbook.Protect "toto"

End Sub

Edit: bonjour Thev... merci pour cette méthode, bien plus simple et plus efficace que mon "bricolage" par contre, on peut quand meme supprimer l'onglet.

Bonjour Thev, Xorsankukai,

Merci pour vos réponses.

@Thev : en effet j'ai essayé ta proposition mais on peut toujours supprimer les onglets.

@xorsankukai : cela fonctionne mais il faut en effet faire la manip "unprotect" pour pouvoir ajouter un nouvel onglet (la bonne chose étant que le classeur se "reprotège" automatiquement après l'opération). Et le problème c'est que les personnes qui vont utiliser ce fichier n'accepterons pas d'avoir à faire cette manip...

N'y a-t-il pas la possibilité de "déclarer" le nom des onglets à protéger contre la suppression ?

Je suis totalement novice en la matière mais quelque chose du style "fonction delete sur onglet X false" ?

En tout cas merci à vous deux pour votre temps et vos propositions

Re,

N'y a-t-il pas la possibilité de "déclarer" le nom des onglets à protéger contre la suppression ?

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

For Each Sh In ActiveWindow.SelectedSheets
    Select Case Sh.Name
       Case "Feuil1", "Feuil2", "Feuil3","Feuil4","Feuil5"
            ThisWorkbook.Protect "toto", True, True
            Exit Sub
        Case Else
            ThisWorkbook.Unprotect "toto"
    End Select
Next
End Sub

Le hic, c'est que l'ajout de feuille n'est pas autorisé, il faut donc toujours passer par la macro....désolé, je ne maitrise pas suffisamment pour faire autrement, j'attends la solution des pros

Rechercher des sujets similaires à "protection suppression onglet ajout autorise"