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.;)
 

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 griseso_O
 

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:

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

Statistiques des forums

Discussions
312 148
Messages
2 085 770
Membres
102 969
dernier inscrit
pizza