Limiter le nombre d'un choix précis d'une combobox dans un tableau

Bonjour,

Je voudrais limiter à un nombre précis le nombre de fois où une donnée d'une liste est saisie dans un tableau.

Ex. : dans un tableau où j'ai 30 lignes, j'ai une colonne où j'ai le choix entre oui et non, et je voudrais limiter à 10 oui max, afin d'obliger la personne qui choisit à se limiter.

Je sais faire la combo, mais pas limiter le nombre de fois où le choix est fait.

Je suis novice sous excel (et en informatique tout), je vous remercie par avance pour votre aide :-)

16exemple-1.xlsx (9.03 Ko)
12exemple-1.xlsx (9.03 Ko)

Bonjour NC, bonjour le forum,

Essaie cette événementielle Change à placer dans le composant onglet Feuil1(Feuil1) :

Option Explicit
Private TEST As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim NB As Byte 'déclare la variable NB (NomBre)

If Target.Column <> 3 Then Exit Sub 'si le changement a lieu ailleurs dans dans la colonne 3, sort de la procédure
If TEST = True Then Exit Sub 'si TEST est [Vrai], sort de la procédure
TEST = True 'définit la variable TEST
DL = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne C
NB = Application.WorksheetFunction.CountIf(Range("C2:C" & DL), Target.Value) 'définit le nombre NB
If NB > 10 Then 'condition : si NB est supérieur à 10
    MsgBox "Le nombre de fois où ce choix a été fait dépasse la limite !" 'message
    Target.ClearContents 'efface le contenu de la cellule modifiée
End If 'fin de la condition
TEST = False 'redéfinit la variable TEST
End Sub

Bonjour ThauThème,

Je te remercie.

Comme précisée je suis plus que novice :-)

En recherchant sur internet j'ai trouvé où copier ta fonction. J'ai tenté de l'adapter à mon fichier cible (modifiant la colonne concernée par ex puisque ma colonne est la colonne G et non C). ça c'est bon

Par contre le message qui me dit que j'ai saisi trop de fois "oui" apparaît au bout de 15 et non de 10 comme je le voudrais. Je te copie/colle ce que j'ai mis. Pour info : c'est du chinois pour moi :-)

MErci pour ton aide.

Option Explicit
Private TEST As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim NB As Byte 'déclare la variable NB (NomBre)

If Target.Column <> 7 Then Exit Sub 'si le changement a lieu ailleurs dans dans la colonne 7, sort de la procédure
If TEST = True Then Exit Sub 'si TEST est [Vrai], sort de la procédure
TEST = True 'définit la variable TEST
DL = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne C
NB = Application.WorksheetFunction.CountIf(Range("G7:G" & DL), Target.Value) 'définit le nombre NB
If NB > 10 Then 'condition : si NB est supérieur à 10
MsgBox "Le nombre de fois où ce choix a été fait dépasse la limite !" 'message
Target.ClearContents 'efface le contenu de la cellule modifiée
End If 'fin de la condition
TEST = False 'redéfinit la variable TEST
End Sub

Bonjour

Une solution par formule de validation

sélectionner les 30 lignes de la colonne C hors titre

=ET(OU(C2="oui";C2="non");NB.SI($C$2:$C$30;C2)<=10)

Bonsoir Chris, je vais essayer la formule.

merci

Bonjour NC1, Chris, bonjour le forum,

Quand tu as adapté le code à la colonne G, tu es parti de la ligne 7 : Range("G7:G" & DL)... ?!

Corrige cette ligne :

NB = Application.WorksheetFunction.CountIf(Range("G2:G" & DL), Target.Value) 'définit le nombre NB

Sinon, prend l'habitude de proposer un exemple qui correspond exactement à ton fichier réel. On perd moins de temps...

Merci ThauThème, effectivement je me suis emmêlée les pinceaux. ça fonctionne super bien.

Merci beaucoup.

Bonne journée (et je prends note pour le format fichier !)

Rechercher des sujets similaires à "limiter nombre choix precis combobox tableau"