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

Prendre en compte que les 20 premières checkbox cochées.

  • Initiateur de la discussion Initiateur de la discussion charlieddr
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

charlieddr

Guest
Bonjour,

DAns le cadre de l'amélioration de mon QCM , j'aimerai y intégrer un point de réglement qui existe sur le format papier lors de l'examen.
Je souhaiterai faire apparaître un pop-up précisant au candidat qu'il a déjà coché 20 cases.

merci.
 

Pièces jointes

Re : Prendre en compte que les 20 premières checkbox cochées.

Bonjour,

Pour ce qui est de la formule :
Code:
=NB.SI(K12:K100;1)

devrait convenir puisque pour chaque checkbox cochée, ta colonne K affiche Vrai ...

A +
🙂
 
Re : Prendre en compte que les 20 premières checkbox cochées.

Bonjour charlieddr, salut James, mes meilleurs voeux pour 2011,

A placer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Calculate()
If Application.CountIf([K:K], True) = 20 Then MsgBox "Vous avez déjà coché 20 cases..."
End Sub

A+
 
Re : Prendre en compte que les 20 premières checkbox cochées.

Re,

Si l'on veut bloquer les cases à cocher au delà de 20, on peut utiliser :

Code:
Dim mem 'mémorise

Private Sub Worksheet_Calculate()
Dim plage As Range
Set plage = [K1:K1000] 'à ajuster éventuellement
If Application.CountIf(plage, True) = 20 Then
  MsgBox "Vous avez déjà coché 20 cases..."
  mem = plage.Value
ElseIf Application.CountIf(plage, True) > 20 Then
  On Error Resume Next
  Application.EnableEvents = False
  plage = mem
  Application.EnableEvents = True
End If
End Sub

Toujours dans le code de la feuille, et ne pas oublier la ligne d'en haut.

A+
 
Re : Prendre en compte que les 20 premières checkbox cochées.

Re,

Finalement il me paraît préférable de mémoriser la plage dans un nom défini :

Code:
Private Sub Worksheet_Calculate()
Dim plage As Range
Set plage = [K1:K1000] 'à ajuster éventuellement
If Application.CountIf(plage, True) <= 20 Then
  ThisWorkbook.Names.Add "mem", plage.Value
  ThisWorkbook.Names("mem").Visible = False 'masque le nom défini
Else
  Application.ScreenUpdating = False
  On Error Resume Next 'sécurité
  plage = [mem]
  plage.Replace "#N/A", ""
  Application.ScreenUpdating = True
  MsgBox "Vous ne pouvez cocher plus de 20 cases..."
End If
End Sub

Edit : le nom défini est masqué. Par ailleurs j'ai supprimé les Application.EnableEvents, inutiles.

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…