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