Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vérouillage de cellulle avec conditions

STEPHANIE59

XLDnaute Nouveau
Bonjour,
Je réalise une trame qui sera utiliser comme prévisionnel de congés et je souhaiterais conditionner certaines cellules et autoriser seulement la couleur de remplissage.

Je ne veux pas qu'ils puissent effacer la mise en forme et les chiffres à l'intérieur de ces cellules.

Merci pour votre retour.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour Stéphanie,

La solution passe sans doute par la protection de la feuille (avec mot de passe)

............... mais sans voir le fichier, difficile d'apporter une réponse plus précise

à+
Philippe
 

STEPHANIE59

XLDnaute Nouveau
Merci Philippe pour ta réactivité
voici le fichier ci-joint
Comme tu le comprendras je veux colorer où il y a les cellules non grisées
je veux autoriser seulement cette commande
 

Pièces jointes

  • Prévisionnel.xlsx
    17.1 KB · Affichages: 27

DoubleZero

XLDnaute Barbatruc
Bonjour, STEPHANIE59, Philippe , le Forum,

Peut-être ainsi (code logé dans le module de l'onglet "2016 | 2017" :
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal c As Range)
    Dim mdp
    If c.Interior.Color = 16777215 Then
        Exit Sub
    Else
        mdp = InputBox("Saisir le mot de passe.", "Cellule(s) protégée(s)...")
        If mdp <> "toto" Then
            [a1].Select
        End If: End If
End Sub
A bientôt
 

STEPHANIE59

XLDnaute Nouveau
merci mais cela ne fonctionne pas
Je veux autoriser le remplissage de couleur seulement dans cette zone B5 : BK16
Et je ne veux pas que l'on puisse modifier les cellules déjà en couleur grises
j'ai donc déverrouillé les cellules concernées et verrouillées les grises
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re,

Je veux autoriser le remplissage de couleur seulement dans cette zone B5 : BK16
Et je ne veux pas que l'on puisse modifier les cellules déjà en couleur grises
j'ai donc déverrouillé les cellules concernées et verrouillées les grises


Ta solution est presque complète,
tu as verrouillé les cellules qui ne peuvent pas être modifiées, tu as déverrouillé les autres

.......... MAIS TU AS OUBLIÉ DE PROTÉGER LA FEUILLE

à+
Philippe
 

job75

XLDnaute Barbatruc
Bonjour STEPHANIE59, Philippe, chère ânesse,

Voyez le fichier joint et cette macro dans le code de la feuille '2016 | 2017' :
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim r As Range, coul As Range
Set r = Intersect(Target, [B5:BK16])
If r Is Nothing Then Exit Sub
Cancel = True
For Each r In r 'si sélection multiple
  If r.Interior.ColorIndex <> 15 Then
    If IsNumeric(CStr(r)) Then Set coul = Union(r, r(1, 2), IIf(coul Is Nothing, r, coul))
    If IsNumeric(CStr(r(1, 0))) Then Set coul = Union(r(1, 0), r, IIf(coul Is Nothing, r, coul))
  End If
Next
If coul Is Nothing Then Exit Sub
Protect "STEPH", UserInterfaceOnly:=True 'modification possible seulement par macro
coul.Select
Application.Dialogs(xlDialogPatterns).Show 'palette de couleurs
If coul(1).Interior.ColorIndex = 15 Then coul.Interior.ColorIndex = 48 'gris plus foncé
End Sub
Sélectionner dans la plage B5:BK16 les cellules que l'on veut colorer puis clic droit

La feuille est protégée, mot de passe STEPH.

Toutes les cellules sont verrouillées sauf les cellules en jaunes (à renseigner).

A+
 

Pièces jointes

  • Prévisionnel(1).xlsm
    32.9 KB · Affichages: 23

job75

XLDnaute Barbatruc
Re,

En fait si je comprends bien on n'appliquera qu'une seule couleur, celle de la cellule B19.

Dans ce cas remplacer la palette de couleurs par un UserForm avec ce code :
Code:
Private Sub OptionButton1_Click()
Selection.Interior.Color = Label1.BackColor
Unload Me
End Sub

Private Sub OptionButton2_Click()
Selection.Interior.ColorIndex = xlNone
Unload Me
End Sub

Private Sub UserForm_Initialize()
Label1.BackColor = [B19].Interior.Color
End Sub
Fichier (2).

Edit : fichier (2 bis) avec maintien de l'UserForm ouvert, si l'on préfère.

A+
 

Pièces jointes

  • Prévisionnel(2).xlsm
    35.4 KB · Affichages: 23
  • Prévisionnel(2 bis).xlsm
    37.2 KB · Affichages: 24
Dernière édition:

STEPHANIE59

XLDnaute Nouveau
Bonjour à tous,
Merci pour votre aide cependant cela m'oblige à colorer 2 cellules en même temps.
Les dates sont scindées en 2 cellules et je veux pouvoir n'en cocher qu'une (pour une demi-journée par exemple).
 

job75

XLDnaute Barbatruc
Bonjour STEPHANIE59, le forum,

Pour pouvoir traiter les demi-journées il suffit de modifier la boucle :
Code:
For Each r In r 'si sélection multiple
  If r.Interior.ColorIndex <> 15 And (IsNumeric(CStr(r)) Or IsNumeric(CStr(r(1, 0)))) _
    Then Set coul = Union(r, IIf(coul Is Nothing, r, coul))
Next
Par ailleurs j'ai étudié une autre solution, avec 4 Shapes groupées.

C'est plus compliqué mais je trouve que c'est mieux car la forme peut être positionnée.

Comparez les 2 fichiers joints.

A+
 

Pièces jointes

  • Prévisionnel avec USF(1).xlsm
    37.2 KB · Affichages: 22
  • Prévisionnel avec Shapes(1).xlsm
    40.5 KB · Affichages: 18

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…