Verouillage cellule sous condition avec macros

Résolu/Fermé
lazaz - Modifié par lazaz le 25/02/2015 à 15:40
 lazaz - 26 févr. 2015 à 09:41
Bonjour,

Suite à de l'aide sur ce forum j'arrive à avoir ce fichier : http://cjoint.com/?EBzlmXaqdQE
Mais j'aimerais que le fait de remplir la cellule D52 entraine un verrouillage de la cellule D53 et vice versa. Que l'on ne puisse pas remplir D52 ET D53. Et de même avec les cellules F53 et F52.

Sans oublier que l'on ne doit avoir accès à la case D52 (ou D53) que si l'on a coché le choix 2.

Je ne suis pas contre l'idée d'avoir des choix déroulant aussi mais j'aimerais qu'ils aient un titre pour que les utilisateurs voient qu'il y a un choix à faire (alors que si je fais "validation des données - Liste" on ne voit qu'il y a un autre choix qu'en se positionnant sur la cellule.

merci de votre aide !

1 réponse

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
25 févr. 2015 à 16:26
Bonjour,

Une solution pour effacer systématiquement la deuxième cellule :
https://www.cjoint.com/c/EBzqIw1Y0JS

A+
0
merci ! C'est une bonne idée !!

Juste 3 questions :
- peut-on aussi lui demander d'afficher dans la Colonne A la ligen correspondant à là où on a une valeur ?
- je ne comprends pas bien comment fonctionne ta macro. Si ta cible c'est D52 pourquoi tu lui dis "else target... (-1,0) ? Il faut qu'il change de target à un moment pour analyser où il y a quelque chose de rempli non ?
c'est juste pour essayer de comprendre..
- comment faire si je veux que le fait de remplie une case efface les deux cases dessous (et pas qu'une ? ) je n'arrive pas à la lui dire...
j'essaye ca mais clairement ce n'est pas une bonne syntaxe !
If Target <> "" Then (Target.Offset(1, 0) = "") & Then (Target.Offset(2, 0) = ""))
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > lazaz
25 févr. 2015 à 23:52
- peut-on aussi lui demander d'afficher dans la Colonne A la ligne correspondant à là où on a une valeur ?
Je ne comprends pas ce que tu cherches à faire.

- Si ta cible c'est D52 pourquoi tu lui dis "else target... (-1,0) ? Il faut qu'il change de target à un moment pour analyser où il y a quelque chose de rempli non ?
Pour t'aider dans la compréhension , je traduis la macro :
"Si D52 ou D53 sont modifiées, alors ...
si c'est D52 qui est modifiée et que D52 n'est pas vide, alors on efface D53,
sinon (c'est alors D53 qui est modifiée) si D53 n'est pas vide, alors on efface D52."

- comment faire si je veux que le fait de remplir une case efface les deux cases dessous (et pas qu'une ? ) je n'arrive pas à la lui dire...j'essaye ca mais clairement ce n'est pas une bonne syntaxe ! If Target <> "" Then (Target.Offset(1, 0) = "") & Then (Target.Offset(2, 0) = ""))
Si tu veux inclure trois lignes dans le traitement, la logique n'est plus la même puisqu'il faut considérer les 3 combinaisons 1-2, 1-3 et 2-3.

Avant de demander une solution, assures-toi que tu as bien posé le problème. Au vu de tes questions, il semblerait que tu avances à l'inspiration.

A+
0
lazaz > Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016
Modifié par lazaz le 26/02/2015 à 09:50
- peut-on aussi lui demander d'afficher dans la Colonne A la ligne correspondant à là où on a une valeur ?
Je ne comprends pas ce que tu cherches à faire.

Je voulais juste que la ligne où la valeur reste affichée se mette en fond gris par ex. Pour la faire ressortir.

- Si ta cible c'est D52 pourquoi tu lui dis "else target... (-1,0) ? Il faut qu'il change de target à un moment pour analyser où il y a quelque chose de rempli non ?
Pour t'aider dans la compréhension , je traduis la macro :
"Si D52 ou D53 sont modifiées, alors ...
si c'est D52 qui est modifiée et que D52 n'est pas vide, alors on efface D53,
sinon (c'est alors D53 qui est modifiée) si D53 n'est pas vide, alors on efface D52."

Ok merci

<- comment faire si je veux que le fait de remplir une case efface les deux cases dessous (et pas qu'une ? ) je n'arrive pas à la lui dire...j'essaye ca mais clairement ce n'est pas une bonne syntaxe ! If Target <> "" Then (Target.Offset(1, 0) = "") & Then (Target.Offset(2, 0) = ""))
Si tu veux inclure trois lignes dans le traitement, la logique n'est plus la même puisqu'il faut considérer les 3 combinaisons 1-2, 1-3 et 2-3.

Ok. Tant pis alors, je vais essayer de trouver une solution..

Avant de demander une solution, assures-toi que tu as bien posé le problème. Au vu de tes questions, il semblerait que tu avances à l'inspiration
Au fur et à mesure que j'avance sur mon travail, je trouve de nouvelles idées pour améliorer mon document...
J'ai des lignes qui fonctionnent 2 par 2 et d'autres où ca serait à 3.
0