limiter le nombre de saisie

wwwhttp

XLDnaute Nouveau
Bonjour,

j'ai une feuille dans laquelle 1 valeur ne peut être saisie qu'une fois sur une certaine plage de données.
si c'est dans la même colonne, une validation de données personnalisée avec par exemple dans la 1ere cellule
Code:
=NB.SI($C$10:$C$59;C10)=1
fonctionne très bien.
sauf que la valeur à ne saisir qu'une fois n'est pas forcément dans la même colonne, je n'arrive pas à imposer une autre colonne, je coince.
et si possible je dois ajouter une condition : seuls les chiffres sont autorisés en saisie, pas de lettre.

et dans la même feuille, sur d'autres plages, si une valeur est saisie 3 fois, un message d'alerte doit apparaitre avec une copie de cette valeur dans une cellule, et si une autre valeur est saisie 3 fois tjrs dans les mêmes plages, tjrs le message d'alerte et copie dans la cellule du dessous de la 1ere copie.

j'espère que ma requête est clairement formulée
merci de votre aide
 

JCGL

XLDnaute Barbatruc
Re : limiter le nombre de saisie

Bonjour à tous,

Tu peux augmenter la plage de ton NB.SI()
Pour les alertes et sans VBA :
  • la validation de données où tu peux imposer du numérique
  • une MeFC (Mise en Forme Conditionnelle) avec un NB.SI()>2
A + à tous
 

wwwhttp

XLDnaute Nouveau
Re : limiter le nombre de saisie

je n'arrive pas à augmenter le plage du nb.si, j'ai un message : "vous ne devez pas utiliser les opérateurs de référence (tels que unions, intersections et plages) ni les constantes matricielles pour les critères validation de données"
je ne sais donc pas quoi mettre pour par controler par ex 1 seule valeur sur c10:c59 et en même temps f63:f66
et pour imposer du numérique, j'ai déjà une validation de données, je ne vois pas comment en mettre une 2ème

pour l'alerte, la mise en forme ne doit pas changer (feuille destinée à être imprimée donc la mefc conditionnelle me parait inadaptée) mais avoir une alerte dès qu'on saisie 3 fois la même valeur. c'est aussi pour ça que si la valeur pouvait être copiée dans une celllule donnée, hors zone d'impression, ce serait nickel
 

haonv

XLDnaute Occasionnel
Re : limiter le nombre de saisie

Bonjour wwwhttp, JCGL,

Une ébauche sur le fichier joint, mais un fichier exemple serait le bienvenu.

Amicalement
 

Pièces jointes

  • pour wwwhttp.xls
    37.5 KB · Affichages: 69
  • pour wwwhttp.xls
    37.5 KB · Affichages: 64
  • pour wwwhttp.xls
    37.5 KB · Affichages: 87

wwwhttp

XLDnaute Nouveau
Re : limiter le nombre de saisie

Bonjour wwwhttp, JCGL,
Une ébauche sur le fichier joint, mais un fichier exemple serait le bienvenu.
Amicalement

pour la partie plage 1, nickel, exactement ce qu'il me faut et j'ai même compris comment ça marche :)
je l'ai reproduit sur un fichier exemple qui manquait (base_wwwhttp.xls)

pour plage 2 et 3, ça marche très bien dans ton fichier mais ça veut pas tourner dans le mien :(
dans mon fichier joint, j'ai défini les noms sur les plages penalites_a1 (h3:h11) et penalites_b1 (h20:h28) et tenté d'adapter la macro
en dehors des corrections que tu pourras apporter, j'aimerai bien comprendre comment ça fonctionne

le tien
Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Integer

If Not Intersect(Target, Range("plage_2")) Is Nothing Then X = 2
If Not Intersect(Target, Range("plage_3")) Is Nothing Then X = 3

On Error GoTo fin
    If WorksheetFunction.CountIf(Range("plage_" & X), Target) = 3 Then
    MsgBox "Nouveau triplé"
        If Range("O2") = "" Then
            Range("O2") = Target
        Else
            Range("o1").End(xlDown).Offset(1) = Target
        End If
    End If
fin:
End Sub

le mien
Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim X As Integer

If Not Intersect(Target, Range("penalites_a1")) Is Nothing Then X = 2
If Not Intersect(Target, Range("penalites_b1")) Is Nothing Then X = 3

On Error GoTo fin
    If WorksheetFunction.CountIf(Range("penalites_" & X), Target) = 3 Then
    MsgBox "Nouveau triplé"
        If Range("J2") = "" Then
            Range("J2") = Target
        Else
            Range("j1").End(xlDown).Offset(1) = Target
        End If
    End If
fin:
End Sub

j'ai essayé de lancer la macro mais j'ai une erreur dans le module 1

le tien
Code:
Option Explicit

Sub info()
If WorksheetFunction.CountIf(Range("plage_X"), ActiveCell) = 3 Then
MsgBox "OK"
Range("o65536").End(xlUp).Offset(1) = ActiveCell
End If
End Sub

le mien
Code:
Option Explicit

Sub info()
If WorksheetFunction.CountIf(Range("penalites_X"), ActiveCell) = 3 Then
MsgBox "OK"
Range("t65536").End(xlUp).Offset(1) = ActiveCell
End If
End Sub

merci d'avance !

merci aussi à Gardien de phare qui m'a aidé à comprendre l'ajout de zones dans différents colonnes (le + qui fait tout !)
 

Pièces jointes

  • base_wwwhttp.xls
    41 KB · Affichages: 59

haonv

XLDnaute Occasionnel
Re : limiter le nombre de saisie

Re,

Le fichier en retour avec les modifs et des commentaires sur la macro
j'ai supprimer le module 1 , il ne sert a rien

Amicalement
 

Pièces jointes

  • pour wwwhttp.xls
    36.5 KB · Affichages: 60
  • pour wwwhttp.xls
    36.5 KB · Affichages: 67
  • pour wwwhttp.xls
    36.5 KB · Affichages: 64

wwwhttp

XLDnaute Nouveau
Re : limiter le nombre de saisie

ça m'a l'air très bon tout ça, à la fois opérationnel et pédagogique
je teste demain toute la journée, comme tu as du voir, c'est pour une feuille de match et demain c'est match !
je ne manquerai pas de faire un retour
merci pour tout
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16