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
Bonsoir Fabrice,

Ci-joint un classeur exemple répondant à ta demande.

Dès qu'une cellule quelconque est renseignée, sa modification s'avère impossible. Toutefois, je suppose que seule les cellules contenant un nom doivent être concernées par cette action. Il faut alors cerner la plage dans laquelle se situe Target. Si tu n'y parviens pas, envoies alors une copie de ton fichier.

Bonne soirée.

Cordialement.
 

Pièces jointes

  • Exemple FabriceBaudot.xlsm
    16.3 KB · Affichages: 51

fabricebaudot

XLDnaute Junior
ahhh voici une bonne nouvelle ça fonctionne comme je le voulais. je le met en place sur mon calendrier demain. Par contre quand j' efface cellule par cellule pas de soucis, par contre si je sélectionne plusieurs cellules quand j'efface j' ai un message d'erreur "Erreur d'éxécution '13': Incompatibilité de type
Quand je clic sur debogage la ligne target.Locked ... est surligné en jaune !!!
 

Papou-net

XLDnaute Barbatruc
RE

Modifies la procédure comme suit:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
For Each cel In Target
cel.Locked = IIf(cel.Value = "", False, True)
Next
Application.ScreenUpdating = True
End Sub


Cordialement.
 

Papou-net

XLDnaute Barbatruc
Finalement, voici une solution que je te laisse le soin de tester. Il est en effet possible qu'il y ait quelques ajustements à prévoir.

Les macros sont attachées au module ThisWorkbook, ce qui évite de les répéter sur chacune des feuilles.

Cordialement.
 

Pièces jointes

  • Copie de Calendrier astreinte-1.xlsm
    63.9 KB · Affichages: 38

Si...

XLDnaute Barbatruc
Bonjour

Voici un exemple avec un seul onglet (choix du mois ajouté).

C'est le mot code, dans If qui <> "code" Then R = Nom: [C2].Select, qui permettra ou pas de changer la valeur saisie donc le changer éventuellement.

Bien entendu, il faudra se protéger de tout changement de code abusif. Mais, là, c'est une autre histoire ... souvent évoquée !

Si tu veux garder toutes tes feuilles, il faudra modifier les macros en commençant par les écrire dans la fenêtre de code de ThisWorkbook avec des évènements généraux.

edit : désolé, mauvais fichier et qui plus est trop incomplet. Voir le nouveau ci-dessous
 
Dernière édition:

fabricebaudot

XLDnaute Junior
Merci pour ton aide là où c'est pas pratique c'est qu'il faut rentrer un code à chaque intervention sur une cellule. Il faut que l'on puisse librement mettre un nom dans une cellule vide et une fois que cette cellule vide est renseigné là il faut un code pour la modifier.

Idéalement faudrait que je puisse par un code déverrouillé l'ensemble des mes cellules pour faire des modifs puis reverrouillé l'ensemble, mais toujours accès sans code aux cellules non renseigné.

J'espère ne pas trop en demander. Le but est que les personnes s'inscrivent sur le planning mais les modifications ne sont accessible que par code par un "chef"
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Bonsoir Fabrice,

Comme promis, voici une version opérationnelle de ton fichier.

Cerise sur le gâteau, le classeur s'ouvre sur le mois en cours.

Bonne soirée.

Cordialement.

PS: Salut Si...
 

Pièces jointes

  • Copie de Calendrier astreinte-2.xlsm
    66.7 KB · Affichages: 40

fabricebaudot

XLDnaute Junior
Merci pour ton travail c'est nickel. Une seul petite chose si je peux me permettre quand je déverrouille le document et que je sélectionne ma cellule à modifier ( pour avoir accès au menu déroulant ) j'ai toujours le message " pour modif appel cadre ".

Problème résolu en supprimant dans le VBA la ligne " pour modif appel cadre "
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 891
Membres
103 404
dernier inscrit
sultan87