Verrouiller une celule selon le choix d'une liste déroulante

Fermé
eme.fny - 26 oct. 2016 à 10:22
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 - 26 oct. 2016 à 16:26
Bonjour,

J'ai créé une liste déroulante au sein d'une cellule, et je souhaiterais, selon le choix de la liste déroulante verrouiller( griser) une autre cellule.


Exemple : En A1 je choisis dans la liste déroulante "B", je souhaiterais que la cellule C1 se vérouille, et si je choisis "A" qu'elle se déverouille.


Je ne sais pas si je me suis bien exprimée.. J'ai fait des recherches sur internet mais à part en passant par une macro (où je ne comprends rien) je ne sais pas comment faire.

Merci d'avance :)

4 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
26 oct. 2016 à 10:35
Bonjour,

Tu peux utiliser la Validation de donnée.
Cette fonctionnalité te permet de verrouiller la saisie.

Tu sélectionnes C1, puis DONNEES > Outils de données / Validation des données

Options >
Autoriser : Personnalisé
Formule : =A1<>"B"

Ensuite, si tu souhaites griser la cellule, tu peux utiliser une mise en forme conditionnelle.

A+
0
eme.fny Messages postés 3 Date d'inscription mercredi 26 octobre 2016 Statut Membre Dernière intervention 1 décembre 2016
26 oct. 2016 à 11:56
Merci de votre réponse malheuresement ça ne me verrouille pas ma cellule..
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > eme.fny Messages postés 3 Date d'inscription mercredi 26 octobre 2016 Statut Membre Dernière intervention 1 décembre 2016
26 oct. 2016 à 13:19
Pour que je puisses voir les raisons de ce dysfonctionnement, il faut que tu joignes ton fichier de test.

Pour cela :
1)	Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; clic droit dessus et "Copier l’adresse du lien"
5) Tu reviens dans ta discussion sur commencamarche , et dans ton message de réponse tu fais "Coller".

A+
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
26 oct. 2016 à 14:23
Bonjour eme.fny, Gyrus

Pour Gyrus, en fait la Validation de donnée que tu proposes au post 1 empêche bien la saisie en C1 lorsque dans la cellule A1 "B" est sélectionné, mais le hic c'est que la suppression est toujours possible, donc en cas de données quelconque en C1, celle-ci ne le seront pas protégée à la suppression, à moins que je ne me trompe, alors dans ce cas mea-culpa

Autre proposition à l'essai en vba
https://www.cjoint.com/c/FJAmkQh5hyj
Slts
0
eme.fny Messages postés 3 Date d'inscription mercredi 26 octobre 2016 Statut Membre Dernière intervention 1 décembre 2016
26 oct. 2016 à 14:37
Bonjour,

J'ai ouvert votre fichier, mais étant en lecture seule je ne peux pas sélectionner "A" ou "B" sur le menu déroulant.

A votre avis, pour un tableau excel assez important, c'est mieux d'utiliser la validation des données ou une macro?

Merci
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
26 oct. 2016 à 14:44
Re

Donc pour voir le fonctionnement il faut à l'ouverture du fichier activer les macro si non cela ne marchera pas

Slts
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
26 oct. 2016 à 16:26
Bonjour The_boss_68,

Non, tu ne trompes pas. Avec la validation de données, la saisie est impossible si A1 ="B" mais il reste possible d'effacer la valeur qui est présente en C1.

Reste à savoir si ce type de fonctionnement correspond à l'attente de eme.fny.

Dans le cas contraire, on peut proposer une autre solution :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage_Cible As Range
If Target.Count > 1 Then Exit Sub
Set Plage_Cible = Range("C1", Range("C" & Rows.Count).End(xlUp))
Application.ScreenUpdating = False
If Not Intersect(Plage_Cible, Target) Is Nothing Then
If Target.Offset(, -2) = "B" Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End If
End Sub

Rq : Le verrouillage s'applique aux cellules renseignées de la colonne C suivant la valeur de la cellule associée en colonne A.

A+
0