Conditions de Cases à cocher

Bonjour à tous,

Professeur en lycée professionnel, je souhaite améliorer un document excel pour le rendre plus pratique à l'utilisation.

Il s'agit d'une fiche séquence, avec des cases à cocher. Utilisable par tous les collègues sachant que je suis novice sur VBA.

22fiche-sequence.xlsm (100.61 Ko)

Jusque là, je pense avoir réussi à : Lorsque je coche une Compétence, seules les Taches et les Connaissances associés soient "cochables", les autres sont grisées.

Concrètement mon objectif à atteindre est :

  • La compétence C1 autorise uniquement les tâches T11 12 14 T53 + les connaissances 1 2 4 5 7
  • La compétence C2 autorise uniquement les tâches T13 14 21 22 23 24 25 26 31 32 41 42 + les connaissances 1 2 4 5 7
  • La compétence C3 autorise uniquement les tâches T11 + les connaissances 1 2 3 4 5 7
  • La compétence C4 autorise uniquement les tâches T22 23 26 + les connaissances 1 2 3 4 5
  • La compétence C5 autorise uniquement les tâches T22 23 31 32 41 42 + les connaissances 1 2 3 4 5
  • La compétence C6 autorise uniquement les tâches T31 32 42 + les connaissances 1 2 3 4 5
  • La compétence C7 autorise uniquement les tâches T31 32 41 42 + les connaissances 1 2 3 4 5
  • La compétence C8 autorise uniquement les tâches T31 32 42 + les connaissances 1 2 3 4 5 6
  • La compétence C9 autorise uniquement les tâches T31 32 41 42 + les connaissances 1 2 3 4 5
  • La compétence C10 autorise toutes les tâches + les connaissances 1 2 4 5 7
  • La compétence C11 autorise uniquement les tâches T11 13 22 23 51 53 + les connaissances 1 2 4 5 7
  • La compétence C12 autorise uniquement les tâches T11 12 13 14 24 25 51 52 53 + les connaissances 1 2 3 4 5 7
  • La compétence C13 autorise uniquement les tâches T51 52 53 + les connaissances 1 2 4 5 7

Mon problème:

Lorsque je coche plusieurs Compétences, au lieu d'avoir davantage de cases "cochables", je me retrouve avec davantage de cases "grisées"

J'espère que je suis clair. Je vous joint mon code pour que vous puissiez comprendre.

Sachant que j'ai utilisé :

"CheckBoxCx" pour les Compétences

"ChechBoxTxx" pour les Taches

"CheckBoxCONx" pour les Connaissances

Private Sub CheckBoxC1_Click()
If CheckBoxC1.Value = True Then
    CheckBoxT13.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT42.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxT13.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT42.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC10_Click()
If CheckBoxC10.Value = True Then
    CheckBoxCON3.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxCON3.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC11_Click()
If CheckBoxC11.Value = True Then
    CheckBoxT12.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT42.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxCON3.Enabled = False
    CheckBoxCON6.Enabled = False

Else
    CheckBoxT12.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT42.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxCON3.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC12_Click()
If CheckBoxC12.Value = True Then
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT42.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT42.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC13_Click()
If CheckBoxC13.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT42.Enabled = False
    CheckBoxCON3.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT42.Enabled = True
    CheckBoxCON3.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC2_Click()
If CheckBoxC2.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON3.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON3.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC3_Click()
If CheckBoxC3.Value = True Then
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT42.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT42.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub CheckBoxC4_Click()
If CheckBoxC4.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT42.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
    CheckBoxCON7.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT42.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
    CheckBoxCON7.Enabled = True
End If
End Sub

Private Sub CheckBoxC5_Click()
If CheckBoxC5.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
    CheckBoxCON7.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
    CheckBoxCON7.Enabled = True
End If
End Sub

Private Sub CheckBoxC6_Click()
If CheckBoxC6.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
    CheckBoxCON7.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
    CheckBoxCON7.Enabled = True
End If
End Sub

Private Sub CheckBoxC7_Click()
If CheckBoxC7.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
    CheckBoxCON7.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
    CheckBoxCON7.Enabled = True
End If
End Sub

Private Sub CheckBoxC8_Click()
If CheckBoxC8.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT41.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON7.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT41.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON7.Enabled = True
End If
End Sub

Private Sub CheckBoxC9_Click()
If CheckBoxC9.Value = True Then
    CheckBoxT11.Enabled = False
    CheckBoxT12.Enabled = False
    CheckBoxT13.Enabled = False
    CheckBoxT14.Enabled = False
    CheckBoxT21.Enabled = False
    CheckBoxT22.Enabled = False
    CheckBoxT23.Enabled = False
    CheckBoxT24.Enabled = False
    CheckBoxT25.Enabled = False
    CheckBoxT26.Enabled = False
    CheckBoxT31.Enabled = False
    CheckBoxT32.Enabled = False
    CheckBoxT51.Enabled = False
    CheckBoxT52.Enabled = False
    CheckBoxT53.Enabled = False
    CheckBoxCON6.Enabled = False
Else
    CheckBoxT11.Enabled = True
    CheckBoxT12.Enabled = True
    CheckBoxT13.Enabled = True
    CheckBoxT14.Enabled = True
    CheckBoxT21.Enabled = True
    CheckBoxT22.Enabled = True
    CheckBoxT23.Enabled = True
    CheckBoxT24.Enabled = True
    CheckBoxT25.Enabled = True
    CheckBoxT26.Enabled = True
    CheckBoxT31.Enabled = True
    CheckBoxT32.Enabled = True
    CheckBoxT51.Enabled = True
    CheckBoxT52.Enabled = True
    CheckBoxT53.Enabled = True
    CheckBoxCON6.Enabled = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Bon weekend à tous

Bonsoir,

une idée comme ça :

si en cochant toutes les compétences, tous devient grisé, c'est que le code fonctionne "à l'envers", non ?

En effet à l'ouverture du fichier, aucune compétence n'est cochée et on a "accès" à tout !

D'ailleurs, pourquoi les compétences sont - elles en dessous du reste, puisque le reste est fonction des compétences ?!

Perso, j'aurais fait l'inverse, non ?

Je sais ça ne fait pas avancer le problème mais au moins il remonte dans la liste des demandes !

@ bientôt

LouReeD

Bonsoir,

Lorsque je regarde à la fois le cahier des charges que vous proposez et le fonctionnement de la feuille excel, il y a cohérence.

Par contre votre souhait réel semble être en contradiction avec ce cahier des charges.

En effet, ici chaque condition restrictive de tâche (conditions liées aux compétences) est en INTERSECTION avec l'autre condition restrictive de tâche et non pas en UNION. Vous réduisez alors naturellement les tâches "possibles" en ajoutant des compétences.

Suggestion : Il me semblerait plus logique de partir d'une tâche pour ensuite de décliner les autres paramètres associables à cette tâche. Mais il est évident que selon cette nouvelle logique il faudrait ensuite voir quels pourcentages des paramètres associés à cette tâche choisie ont été obtenus grâce à cette tâche.

Bon courage.

Serge

https://forum.excel-pratique.com/posting.php?mode=reply&f=2&t=101064#

Concrètement mon objectif à atteindre est :

  • La compétence C1 autorise uniquement les tâches T11 12 14 T53 + les connaissances 1 2 4 5 7
  • La compétence C2 autorise uniquement les tâches T13 14 21 22 23 24 25 26 31 32 41 42 + les connaissances 1 2 4 5 7
  • La compétence C3 autorise uniquement les tâches T11 + les connaissances 1 2 3 4 5 7
  • La compétence C4 autorise uniquement les tâches T22 23 26 + les connaissances 1 2 3 4 5
  • La compétence C5 autorise uniquement les tâches T22 23 31 32 41 42 + les connaissances 1 2 3 4 5
  • La compétence C6 autorise uniquement les tâches T31 32 42 + les connaissances 1 2 3 4 5
  • La compétence C7 autorise uniquement les tâches T31 32 41 42 + les connaissances 1 2 3 4 5
  • La compétence C8 autorise uniquement les tâches T31 32 42 + les connaissances 1 2 3 4 5 6
  • La compétence C9 autorise uniquement les tâches T31 32 41 42 + les connaissances 1 2 3 4 5
  • La compétence C10 autorise toutes les tâches + les connaissances 1 2 4 5 7
  • La compétence C11 autorise uniquement les tâches T11 13 22 23 51 53 + les connaissances 1 2 4 5 7
  • La compétence C12 autorise uniquement les tâches T11 12 13 14 24 25 51 52 53 + les connaissances 1 2 3 4 5 7
  • La compétence C13 autorise uniquement les tâches T51 52 53 + les connaissances 1 2 4 5 7

Mon problème:

Lorsque je coche plusieurs Compétences, au lieu d'avoir davantage de cases "cochables", je me retrouve avec davantage de cases "grisées"https://forum.excel-pratique.com/posting.php?mode=reply&f=2&t=101064#

Merci pour vos réponses.

La problématique Union/Intersection définit parfaitement là où je suis bloqué.

Comment dois-je rédiger mon code?

Sachant que là, il suit 13 fois le même modèle. (Pour les 13 compétences auquels j'associe les tâches et connaissances)

Bonjour à tous,

Vos réponses m'ont amené à avancer dans ma réflexion et je vous en remercie.

L'entrée se fait bien par les compétences. Et ce malgré son positionnement dans la feuille.

Toutefois, actuellement mon code, qui ne répond pas à mes attentes est constitué ainsi :

IF Case de la Compétence C1 =COCHEE

GRISER Coche Tache x

GRISER Coche Tâche y

GRISER Coche Tâche z

ELSE

ACTIVER Coche Tache x

ACTIVER Coche Tache y

ACTIVER Coche Tache z

END IF

Je pense avoir compris que c'est une "Union" de grisage de coche (?!)

Ainsi mon problème reste que lorsque je coche plusieurs Compétences, au lieu d'avoir davantage de Tâches "cochables", je me retrouve avec davantage de Tâches "grisées"

La solution est-elle d'avoir une union d'autorisation au lieu d'une union d'interdiction ?

Bonjour,

et l'idée d'un tableau qui représente toutes les compétences, ensuite une boucle en fonction de sa valeur dans le tableau :

si = 0 grisée, si >0 alors activée :

item 1 = cpt 1, 3, 5

item 2 = cpt 1, 2, 4

item 3 = cpt 3, 4, 5

un tableau qui représente les compétences avec une initialisation à 0 pour tout

dim Compétence(5)

compétence(1) = 0

compétence(2) = 0

compétence(3) = 0

compétence(4) = 0

compétence(5) = 0

si on clic sur item 1 alors compétence (1), compétence(3) et compétence(5) = +1, les compétences(2 et 4) = -1

si comptétence(x) <0 alors compétence(x) = 0

ensuite une boucle pour griser ou pas les compétences en fonction de ce tableau

si compétence(1)>0 alors activée, si =0 alors grisée

Si on continue l'idée, item 3 cliquée : on a compétence(1) =1; compétence(2)=0; compétence(3) = 2; compétence(4) = 1; compétence(5) = 2

Du coup avec la boucle d'activation on aura bien les compétences 1; 3;4 et 5 activées et 2 grisée.

les activations reste en somme "classique" car si on déclic l'item 3; les compétences 3 et 5 passe à 2-1 = 1 donc reste activée pour l'item 1...

Voilà mon idée.

@ bientôt

LouReeD

Bonjour,

Ci-joint un premier jet de macro pour réaliser ce que tu souhaites.

Je viens de réaliser que j'ai fais des TextBox pour les Taches et Connaissances alors que tu voulais plutot des CheckBox comme pour les compétences... tu devrais t'en sortir pour le modifier toi même je pense ^^

En attente de ton retour

ECG

Rechercher des sujets similaires à "conditions cases cocher"