Verrouiller 7 cellules sur 9 si 2 sont déjà remplies

Résolu/Fermé
Tomlille - 24 nov. 2015 à 13:49
 Tomlille - 18 déc. 2015 à 15:32
Bonjour,

la demande est dans le titre !

Je cherche à verrouiller la saisie de cellules de manière conditionnelle : j'ai un choix de 2 formations dans mon entreprise à proposer sur un ensemble de 9. Je souhaite que les personnes puissent s'inscrire sur 2 de ces formations et qu'à partir du moment ou 2 cellules sont remplies, le reste soit insaisissable... j'espère être clair !

En espérant qu'il n'y ai pas un algorithme de dingue à saisir :)

Merci d'avance pour les solutions


A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 24/11/2015 à 14:46
Bonjour,

pour votre fichier, pensez a enlever le verrouillage par defaut de cellules de saisie dans format cellule protection. Surtout mettre un mot de passe sur le VBA si c'est necessaire

fichier exemple: https://www.cjoint.com/c/EKynQ22au8f
0
Bonjour,

merci tout d'abord pour votre réponse, toutefois (je ne sais pas si ça vient de ma version d'Excel) mais ça me mets un message de débogage quand je tente de rentrer un 3ème chiffre...et si je clique sur le bouton "fin", le remplissage de la cellule s'effectue quand même. Peut-être ne suis pas assez avancé sur Excel pour utiliser ce genre d'outil ?

Merci d'avance
Cdt
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Tomlille
Modifié par f894009 le 24/11/2015 à 16:46
Re,

un message de débogage quand je tente de rentrer un 3ème chiffre dans votre fichier avez-vous fait tout ce qui est dans le "mien"

si je clique sur le bouton "fin" y a pas de bouton fin dans "mon" fichier !!

et surtout pour vous simplifier la vie, prenez le fichier exemple de
eriiic 24 nov. 2015 à 16:24
0
Bonjour,

encore un grand merci pour vos réponses, je vais effectivement prendre l'exemple d'Eriiic qui correspond totalement à ce que je recherchais.

Merci bcp
Cdt
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 24/11/2015 à 16:25
Bonjour,

Sans vba, avec une validation de données personnalisée : =NBVAL($A$2:$A$8)<=2
https://www.cjoint.com/c/EKypxJzTr6Z
eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 nov. 2015 à 16:40
Bonjour eriiic,

On reconnait la un pro d'excel, ce qui n'est pas vraiment mon cas
0
Bonjour Eriiic,

merci bcp pour votre solution, qui correspond tout à fait à mon besoin !!

Et merci à tous pour la réactivité dont vous faites preuve : BRAVO !!
0
Bonjour eriiic,

je souhaite insérer des dates dans mes cellules, et que le paramétrage bloque à 2 cellules remplies pour la même année (exemple : une cellule avec 30/11/2015 et l'autre avec 6/04/2015. Je peux remplir une troisième cellule avec 2013 ou 2014, mais pas avec 2015...). Est-ce possible ?

Un grand merci d'avance
Thomas
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 1/12/2015 à 19:01
Bonjour,

Je n'ai pas trouvé de formule simple, beaucoup trop longue...
Je te propose une macro en vba.
Alt+F11 pour voir le code dans le module Feuil1. A copier-coller dans le module de ta feuille, adapter la plage à surveiller.
https://www.cjoint.com/c/ELbr7BqspNu
Private Sub Worksheet_Change(ByVal Target As Range)
' interdire la saisie de plus de 2 fois la même année dans la plage pl
    Const pl As String = "A2:A10"    ' adapter la plage

    Dim Dict As Variant, cle As String, lig As Long
    Dim datas, ok As Boolean
    Set Dict = CreateObject("Scripting.Dictionary")

    datas = Range(pl).Value
    For lig = 1 To UBound(datas)
        If datas(lig, 1) <> 0 Then
            cle = Year(datas(lig, 1))
            If Dict.exists(cle) Then
                ' année  connue
                If Dict.Item(cle) = 2 Then
                    MsgBox "Année " & cle & " déjà présente 2 fois."
                    Application.EnableEvents = False
                    Application.Undo
                    Application.EnableEvents = True
                    Exit For
                Else
                    ' compter utilisation
                    Dict.Item(cle) = Dict.Item(cle) + 1
                End If
            Else
                ' nouvelle année
                Dict.Item(cle) = 1
            End If
        End If
    Next lig
End Sub

eric
0
Tomlille > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
Modifié par Tomlille le 2/12/2015 à 10:05
Bonjour eriiic,

ça marche à merveille chez toi, par contre quand je colle et que j'adapte à ma plage, ça ne fonctionne pas... ma plage de cellules est en horizontal : est-ce que ça change quelque chose ?
En gros ma plage de sélection est de L4 à T4, et je dois adapter ensuite à la ligne L5:T5, L6:T6, etc.
Est-ce que je dois adapter quelque chose dans le VBA ?
A moins que ce ne sois juste une "validation" du VBA ? => une fois que j'ai copié-collé, je dois valider la saisie quelque part ?

Un grand grand grand merci pour ton aide !!

Cdt
Thomas
0