XL 2016 Bloquer une cellule

fabricebaudot

XLDnaute Junior
Bonjour à tous,

voilà je me suis fait un calendrier sur excel, un onglet par mois. Ce planning d'astreinte sera dispo sur un dossier partagé. Le truc c'est que les agents se placent via menu déroulant sur les semaines ou weekends selon leurs disponibilités et je voudrais que :

- quand un nom est renseigné dans une cellule seul un "admin" pourrai modifié ce nom par un autre

J'ai bien trouvé un code vba qui fonctionne mais à chaque fois que je fais une modif mon classeur se verrouille donc 1 modif 1 fois le code, 10 modifs 10 fois le code c'est un peu rébarbatif du coup et pas très pratique.

voici le code en question

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="1234"
Target.Locked = True
ActiveSheet.Protect Password:="1234"
End Sub
sinon, à défault, Comment faire pour que quand une cellule est remplie et que je veux la modifier ça renvoie à une fenêtre "changement pas possible contacter le cadre" ?

Merci d'avance pour votre aide précieuse pour un débutant que je suis
 

Papou-net

XLDnaute Barbatruc
Bonjour,

... si je souhaite rajouté un onglet (pour mettre des infos) sera-t-il pris en compte dans le VBA ? et si oui comment l'en exclure ? e

Bonsoir Fabrice,

Pour ne pas prendre en compte les nouvelles feuilles, modifie ta macro du module ThisWorkbook comme suit:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.ProtectContents = False Or Sh.Index > 12 Then Exit Sub
Unload UserForm1
Application.EnableEvents = False
Set lstAgents = Range("B5:H15").SpecialCells(xlCellTypeAllValidation)
If Not lstAgents Is Nothing Then
For Each cel In Target
cel.Locked = IIf(cel.Value = "", False, True)
If cel.Locked = True And Sh.ProtectContents = True Then UserForm1.Show
Next
End If
Application.EnableEvents = True
End Sub

Toutefois, tu dois veiller à ne pas déplacer les onglets des feuilles de mois car c'est leur index qui est pris en compte dans la procédure. Les nouvelles feuilles seront donc ajoutées à la 13ème position, et là tu peux modifier sans crainte leur ordre de classement.

Pour ce qui concerne la modification du mot de passe, tu as bien résolu la question par toi-même.

Bonne soirée.

Cordialement.
 

fabricebaudot

XLDnaute Junior
Bonsoir, merci poir ta réponse rapide poir l ajout de l'onglet l'idée était de le mettre en première position afin d'expliquer le fonctionnement du planning et les coordonnées de la personne à joindre pour les modifs. En fait je mettrais le tel dans la fenêtre de dialogue. Merci et bonne soirée à toi
 

Papou-net

XLDnaute Barbatruc
Bonsoir, merci poir ta réponse rapide poir l ajout de l'onglet l'idée était de le mettre en première position afin d'expliquer le fonctionnement du planning et les coordonnées de la personne à joindre pour les modifs. En fait je mettrais le tel dans la fenêtre de dialogue. Merci et bonne soirée à toi

RE

Dans ce cas, comme tu ne rajoutes qu'une seule feuille, tu peux alors modifier le code comme ceci:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.ProtectContents = False Or Sh.Index < 2 Or Sh.Index > 13 Then Exit Sub
Unload UserForm1
Application.EnableEvents = False
Set lstAgents = Range("B5:H15").SpecialCells(xlCellTypeAllValidation)
If Not lstAgents Is Nothing Then
For Each cel In Target
cel.Locked = IIf(cel.Value = "", False, True)
If cel.Locked = True And Sh.ProtectContents = True Then UserForm1.Show
Next
End If
Application.EnableEvents = True
End Sub

Et si, dans le futur, tu veux rajouter d'autres onglets avant la feuille JANVIER, il te suffira de modifier les deux valeurs de Sh.Index en conséquence.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Bonjour Fabrice,

Oups, j'avais oublié (tard dans la nuit) de modifier la condition en tête de la procédure Private Sub Workbook_SheetActivate(ByVal Sh As Object).

Voilà qui est fait.

Bonne journée.

Cordialement.
 

Pièces jointes

  • Copie de Calendrier astreinte vierge.xlsm
    71.8 KB · Affichages: 26

Si...

XLDnaute Barbatruc
Re

A l'ouverture, je change le contenu d'une cellule D7 (par exemple).
Lorsque je retourne en D7 après une autre sélection, (changement ou pas), j'ai le message.
J'entre le code.
À partir de ce moment il n'y a plus de contrôle sur la cellule ni sur les autres (en C9, par exemple, on peut changer le nom sans problème).

Mais j'ai peut-être mal compris ta demande.
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83