Protection des cellules conditionnée

Re Bonjour Forum !

J'ai une cellule qui peut prendre les valeurs ci dessous :

0;1;2;9;01;02;09;12;19;29;012;019;029;129;0129

(soit toutes les possibilités de combinaison entre 0, 1,2 et 9).

J'ai nommé 4 groupes de cellules :

Tranche0, Tranche 1, ... Tranche9

Je voudrais que si je sélectionne dans ma cellule la combinaison "12", Les groupes Tranche0 et Tranche9 soient intouchables, vérouillés.

Voilà ce que j'ai codé dans un module pour cet exemple :

Sub Permission()
With Sheets("Saisie")
.Unprotect password:="AEI"
If Range("D9") = "12" Then _
Range("TRANCHE0").Select
Selection.Locked = True
Range("TRANCHE9").Select
Selection.Locked = True
End If
End Sub

Et ainsi de suite pour toutes les combinaisons.

MA question : Où placer un tel code pour que, dès que la valeur de D9 (ma cellule qui contionne les permissions) est modifiée ?

Je suppose qu'il faut le placer dans l'onglet "Feuil" avec une histoire de Worksheets.Change...

Mais je sèche, auriez vous une solution ?

Bonne journée ^^

8spasme-v3-0.xlsm (131.40 Ko)

Bonjour

Tu pourrais verrouiller aussi sans macro, avec "Données" "validation"

https://www.excel-pratique.com/~files/doc2/teste_V1.xls

Cordialement

Bonsoir,

La liste Validation D9 est-elle dans la feuille "Saisie" (fichier réel) ?

Je regarde ta macro

Salut Amadéus

Claude.

re,

J'ai supposé que D9 est en dehors de la feuille "Saisie" (de mémoire)

code à mettre dans le VBE de la feuille du D9

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("d9")) Is Nothing Then
        Call Permission
    End If
End Sub

Si j'ai bien compris la manœuvre,

ton fichier exemple modifié:

https://www.excel-pratique.com/~files/doc2/Ontrose_if.xls

en règle générale, évite les Select

Voir Module3

Amicalement

Claude.

Bonjour Forum, Salut Claude, SAlut Amadéus !

Tout d'abord Amadéus, j'ai eu beau chercher, je n'arrive pas à conditionner mes cellules comme tu l'entendais (validation)... Mais tant pis, je te remercie de ton attention !

Sinon pour Claude, c'est exactement ça !

Mais j'ai un gros problème derrière...

Cette case D9 n'est pas modifiée que manuellement : d'autres macro (comme par exemple une macro d'effaçage de la feuille) agissent sur la cellule D9, et réactivent ainsi la macro Permission.... provoquant des erreurs 1004 dûes à la protection des cellules qui a été réenclenchée par la macro Permission !!

(tu me suis ?)

En fait il faudrait restreindre ceci :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("d9")) Is Nothing Then
        Call Permission
    End If
End Sub

Pour qu'elle ne s'active que pour des changements MANUELS ?

Est ce possible ?

CAr sinon je ne vois pas comment contourner la protection...

Merci de ton aide en tous cas !

Ontrose

(P.S le fichier sur lequelle je travaille est trop lourd même en allégeant l'ensemble... je ne peux pas le joindre :s)

Bonjour à tous,

il vaudrait mieux supprimer le Private Sub "D9"

et brancher le "Call Permission" là où tu en as besoin,

tu peux aussi faire un bouton "Permission" qui lance la macro individuellement.

Bonne journée

Claude.

Salut le forum

Ontrose dans les macros qui agissent sur ta cellule C9 tu ajoutes

En début des codes

Application.EnableEvents = False

Et à la fin des codes

Application.EnableEvents = True

Mytå

Bonjour,

Macro "Permission" amélioration syntaxe

voir Module4

https://www.excel-pratique.com/~files/doc2/Ontrose_if_2.xls

entre les modules 1 à 4, tu peux suivre les différentes syntaxes pour un même résultat.

(j'ai encore appris sur ce coup là !)

Bonne journée

Claude.

Rechercher des sujets similaires à "protection conditionnee"