EXCEL 2007: Interdire la saisie dans une zone

Fermé
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013 - 13 juin 2012 à 12:19
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 14 juin 2012 à 13:23
Bonjour à tous ,

Voici mon prob , Comment interdire la saisie dans une zone, lorsqu'une seule cellule est deja remplie, que ce soit du numerique ou de l'alpha . La selection se fait à la journée et par user
Je joint un fichier pour etre plus comprehensif .

https://www.cjoint.com/?BFmo6H7GrCQ

Un grand merci à tous de votre aide
Courtoisement
PHD
>Windows XP / Internet Explorer 7.0</config>
A voir également:

7 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419
13 juin 2012 à 12:24
Bob jour
pas sur d'avoir tout compris, mais par exemple pour la zone K4:K8 de votre modèle:
Données / validation / personnalisé et la formule:
=NB.SI(K4:K8;">0")<2
qui interdira de rentrer plus de une valeur num dans le champ.
crdlmnt
0
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013
13 juin 2012 à 15:40
Merci pour votre réponse mais ce n'est pas ce que je desirais .
Je joint un fichier avec explications et exemple .

https://www.cjoint.com/?BFnpLVM14rL

Courtoisement
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 13/06/2012 à 15:29
Salut,

Tu dis que la saisie ce fait par user, je ne vois pas d'userform dans ton fichier
colle ce code dans les propriétés de ta feuille (clic droit/visualiser le code)
ce code surveillera la plage J4 à N18.
Il est possible d'ajouter un mot de passe dans la protection de la feuille pour accentuer la protection

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:D15")) Is Nothing Then
ActiveSheet.Unprotect Password:="titi"
If Target <> "" Then Target.Locked = True
ActiveSheet.Protect Password:="titi"
ActiveSheet.EnableSelection = xlUnlockedCells
End If
End Sub


A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013
13 juin 2012 à 15:54
Bonjour ,
Merci a vous aussi , mais ce code me bloque toute entrée dans la zone definie.
Lorsque je disais User, cela veut dire le nom d'une personne en colone A ( Ici c'est ADE ) et non pas Userforme.
Je joint un fichier avec explications de ce que je desirais
https://www.cjoint.com/?BFnpLVM14rL

Merci de votre aide
Courtoisement
0
Raymond PENTIER Messages postés 58801 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 7 janvier 2025 17 264
13 juin 2012 à 16:10
Bonjour.

Une méthode un peu longue à paramétrer mais qui marche parfaitement :
* 1) Donner à chaque plage de 5 cellules un nom (ainsi J4:J8 sera nommée ADE_0207, R9:R13 sera nommée CCE_1007 ...).
* 2) Dans chacune de ces 66 plages nommées mettre un critère personnalisé de validation de données avec la formule SOMME(ADE_0207)=0 pour la première.
=> Tu n'as pas dit comment il fallait traiter les cas d'absence ...
https://www.cjoint.com/?BFnqjj46fID
0
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013
13 juin 2012 à 16:40
Bonjour et Merci pour votre réponse mais ce n'est pas ce que je desirais .
Je joint un fichier avec explications et exemple .

Pour info ,ce fichier n'est qu'un exemple , l'original est plus de 10 fois plus grand et devrait au fil des jours s'agrandir ..
Donc par la methode que vous me preconisez cela va etre trés long à parametrer .

https://www.cjoint.com/?BFnpLVM14rL

Merci de votre aide

Courtoisement
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 110
Modifié par Mike-31 le 13/06/2012 à 17:02
Re,


Oui exact, réponse trop rapide par manque de temps, au préalable sélectionne ta plage clic droit sur la sélection/Format de cellule/onglet Protection décoche Verrouillée

colle mon code comme expliqué

teste ton fichier sur la plage J4:N18, si c'est ce que tu cherches, on complétera le code

https://www.cjoint.com/?BFnrbJqOXV7

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419
Modifié par Vaucluse le 13/06/2012 à 17:05
Re
essayez dans cette copie de votre fichier de mettre deux "1" dans la même colonne:
https://www.cjoint.com/?BFnrcfUPia8
paramétrage comme vous dites:
il suffit de sélectionner tous le champ) existant ou a venir et d'entrer la formule de validation avec les signes $ aux bons endroits, (en entrant la formule correspondant à la 1° colonne sélectionnée)
crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013
14 juin 2012 à 10:10
Hello ,

Merci encore de votre aide , cela fonctionne avec le chiffre 1 mais pas avec ABS .
Je vous joint un fichier pour exemple.

https://www.cjoint.com/?BFokiSos0P7

Bonne journée
Courtoisement
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
14 juin 2012 à 10:15
Tu as le droit de regarder les autres propositions et d'y mettre un commentaire.
eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419
14 juin 2012 à 10:18
Bonjour
oui j'avais mangé la consigne du multicode :-(
replacer la validation depuis colonne J avec la formule:
=NB.SI(J$4:J$8;"<>")<2
ça devrait fonctionner quoique vous mettiez en second dans une colonne
crdlmnt
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
14 juin 2012 à 01:28
Bonsoir tout le monde,

Allez, encore une proposition....

Sélectionner J4:AM8, validation de donnée avec :
Personnalisée
La formule est: =((J4=1)+(J4="ABS"))*(NBVAL(DECALER($J$4;;COLONNE()-10;5;1))<=1)
https://www.cjoint.com/?BFobCpi7H6n

eric
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 14/06/2012 à 10:30
Re,

Je me suis un peu compliqué la vie sur une partie de la formule.
En copiant honteusement sur vaucluse voilà la compil remixée pour la MFC :
=((J4=1)+(J4="ABS"))*(NBVAL(J$4:J$8)<=1)
(vaucluse : tu autorises toute saisie de chaine...)

eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419
14 juin 2012 à 10:43
Peux tu préciser ce que tu vois comme problème Eric? ça m'échappe? Quand je rentre n'importe quoi dans une cellule, je ne peux pas rentrer une seconde valeur dans la même colonne, quelle qu'elle soit.
voir ici:
https://www.cjoint.com/?BFokQMBftJW
crdlmnt
0
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013
14 juin 2012 à 10:58
GRAND MERCI Cela fonctionne tres bien, mais petite question , faut il valider chaque zone ? N'y a t'il pas moyen de le faire sur toute la feuille car j'ai pas mal d'utilisateurs a rajouter

CDT
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
14 juin 2012 à 11:53
Re,

@vaucluse : sur ton fichier, saisis "ABS" ou "toto" sur une cellule vide d'une date déjà réservée, ça passe.
Je n'ai pas testé ton post de 10h30...

@fildam
Ben non, tu ne peux pas, il faut bien compter les saisies individuellement par plage.
Mais avec l'outil pinceau ça se fait facilement.
Sélectionner ta 1ère cellule de MFC, cliquer sur le pinceau, sélectionner la nouvelle plage et tous les formats, y compris la MFC sont recopiés.

eric
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 419
Modifié par Vaucluse le 14/06/2012 à 12:07
Ah.... j'ai compris, et je savais, mais je me suis tenu au fait qu'on ne pouvait pas placer plus de une valeur par colonne sans préciser les valeurs, en supposant que l'utilisateur sait ce qu'il doit mettre!!

Quant à l'application sur tout le tableau, pas tout à fait d'accord avec toi Eric
tu sélectionne tous le champ,, sur la hauteur utile et sur la longueur idem
tu rentres la formule qui correspond à la 1° colonne du champ en bloquant les lignes et ça s'applique d'un seul coup en s'ajustant sur chaque colonne
donc par exemple pour un champ de J4 à X100
=NB.SI(J$4:J$100;"<>")<2
avec les $devant les N° de ligne seulement
et ça va aller sur chaque colonne de J à X pour un champ de 4 à 100
c'est du moins comme ça que j'ai fait et ça fonctionne
crdlmnt
0
FILDAM Messages postés 14 Date d'inscription mercredi 13 juin 2012 Statut Membre Dernière intervention 21 juin 2013
14 juin 2012 à 12:17
Je viens de tester et ca marche tres bien . Merci a tous . Si je peux vous etre utile un jour .

Bonne journée
0