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