Bloquer une cellule en fonction de la valeur d'une autre.

chazey

XLDnaute Nouveau
Bonjour à tous,
Explication du tableau :
Dans le tableau "exemple", je voudrais pouvoir bloquer certaines cellules (impossibilité d'y écrire quelque chose) en fonction du contenu d'une autre cellule. Ce tableau sert à gérer des activité para-scolaire. La colonne NOM représente 3 élèves (A,B et C), la partie en jaune représente les activités proposées réparties sur 3 jours : mardi, jeudi et vendredi (notés M, J et V en ligne 3), la partie rouge représente les enfants non inscrits qui quittent à 15h30, la partie verte représente le devenir des enfants après 16h30. Un "1" dans une case indique la présence de l’enfant dans une catégorie. Un enfant ne peut-être inscrit que dans une activité par jour et n'a qu'une seule possibilité de quitter après 16h30.

Ce que je voudrais pouvoir faire :
-dès qu'un enfant est inscrit dans une activité du mardi, je voudrais que toutes les autres cellules des autres activités du mardi soient bloquées en écriture. Idem pour les autres jours.
-idem pour la partie "Devenir des enfants après 16h30 : l'enfant n'a qu'un choix par jour. Lorsque ce choix est validé par "1" je voudrais que les autres cases du même jour de cette catégorie soient bloquées en écriture.
-pour la partie en rouge, les enfants quittent à 15h30 et sont obligatoirement récupérés par les parents. Donc un "1" dans la case d'un jour de cette catégorie doit bloquer en écriture les cases du même jour des 2 autres catégories.

A terme, mon tableau complet compte 160 noms.

Ouf : c'est vrai que l'exemple est important mais il me semble nécessaire de vous donner un maximum d'informations.

Merci à tous pour le travail formidable que vous faite.
 

Pièces jointes

  • Exemple.xlsx
    10.3 KB · Affichages: 115
  • Exemple.xlsx
    10.3 KB · Affichages: 94
  • Exemple.xlsx
    10.3 KB · Affichages: 112

chazey

XLDnaute Nouveau
Re : Bloquer une cellule en fonction de la valeur d'une autre.

Bonjour à tous,
Bonjour Paf,
décidément, nous allons devenir inséparables : encore un problème qui pointe son nez alors que je croyais que tout fonctionnait bien. Comme indiquer dans mon premier message, à terme, mon tableau compte 160 noms, il existe déjà et il est lié à une soixantaine de TCD. Je n'avais testé le fonctionnement que avec les 4 lignes de l'exemple. Est-il possible de modifier la macro pour la rendre opérationnelle quelle que soit la taille du tableau ? Ou au moins pour un tableau de 200 lignes (le mien est amené à grossir).
Merci pour votre travail.
A+
Th
 

Paf

XLDnaute Barbatruc
Re : Bloquer une cellule en fonction de la valeur d'une autre.

re Bonjour,

le classeur fourni fonctionne pour toutes les lignes d'élèves rajoutés jusqu'en limite de tableur.

Pour fonctionner le code s'appuie sur la structure du fichier fourni et sur des plages nommées "auto dimensionnable".

Si le code est copié dans un autre classeur et qu'il n'y a pas de plage nommée ça ne fonctionnera pas; il faudra les définir avec les noms du classeur fourni (ou bien modifier le code)

Il y a 7 plages nommées ActiM, ActiJ,ActiV,DevM, DevJ,DevV, NonIns

Par exemple pour la plage des activité du mardi (colonne B à H) la plage est nommée ActiM est fait référence à :
=DECALER(Feuil1!$B$5;0;0;NBVAL(Feuil1!$A:$A)-1;7)

A +
 

chazey

XLDnaute Nouveau
Re : Bloquer une cellule en fonction de la valeur d'une autre.

Bonjour PAF,
bonjour à tous.
Désolé de n'avoir pas répondu plus tôt : je rentre du boulot.
Paf, tu as déjà beaucoup travaillé pour moi, et je ne vais pas exagéré.
Je ne te cacherai pas que ton dernier message, c'est un peu du chinois pour moi, mais je pense avoir trouvé un solution à ma portée.
Je vais créer un 2ème classeur. Dans celui-ci, il y aura une 1ère feuille avec ton tableau. Dans une 2ème feuille, il y aura un tableau identique à celui de mon 1er classeur. Je vais copier une à une les colonnes de ton tableau et les coller avec liaison (et dans l'ordre) dans mon deuxième tableau. Puis je ferai un copier de tout ce 2ème tableau et je le collerai avec liaison dans le tableau identique de mon premier classeur. C'est un peu tiré par les cheveux mais ça devrait fonctionner, surtout si tu réponds oui à ma dernière question : on peut bien faire un copier coller avec liaison entre les feuilles de deux classeurs différents ?
Merci encore pour ta participation et ta patience avec un ignare comme moi.
A+
Th
 

Paf

XLDnaute Barbatruc
Re : Bloquer une cellule en fonction de la valeur d'une autre.

re bonjour,

Ta solution peux fonctionner. Mais c'est dommage de tout compliquer ! Il suffit juste de définir 7 plages nommées !

S'il te parait trop compliqué de le faire, le plus simple est peut-être d'utiliser le classeur que je t'ai transmis et venir y copier les feuilles de ton classeur d'origine ? Cela éviterait d'avoir deux classeurs .

Puisque, a priori, il te faut garder l'ordre des colonnes de ton exemple, il vaudrait peut-être mieux utiliser une des versions qui te sont proposées ( car l'utilisation de plages nommées non contigües ne fonctionne pas)

A+
 

chazey

XLDnaute Nouveau
Re : Bloquer une cellule en fonction de la valeur d'une autre.

Bonjour Paf, bonjour à tous.
Ok avec toi, Paf, ça complique un peu les choses. En même temps, le tableau que tu m'as fais est prévu pour les inscriptions qui n'ont lieu, en principe, qu'en début d'année scolaire. Tout déplacer dans ton classeur pourrait être la solution mais j'ai une quarantaine de tableaux dont certains sont liés entre eux et d'autres sont des TCD, certains ont aussi des macros. J'ai un peu peur de perdre toutes ces liaisons en copiant tous. Le plus long à faire, avec deux classeurs, a été de copier, une à une, toutes les colonnes de ton tableau et de les coller, dans l'ordre et avec liaison, dans le mien. C'est fait et ça a l'air de fonctionner.
Merci encore pour ton aide.
A+
Th
 

chazey

XLDnaute Nouveau
Re : Bloquer une cellule en fonction de la valeur d'une autre.

Bonjour Paf,
bonjour à tous.
A nouveau vers toi pour un problème : en fait mes 2 classeurs sont sur une clé USB et sont amenés à être chargés sur différents PC. Sauf que avec mon système de liaisons entre les deux fichiers, ça ne fonctionne pas ! Les liaisons font toujours référence au tableau de la clé et pas à celui du PC. Il faut refaire toutes les liaisons à chaque fois ce qui est très long.
Donc j'ai fais comme tu disais, à savoir :
-J'ai copier-coller ton tableau dans mon classeur,
-j'ai copier-coller la macro,
-j'ai défini les 7 plages par copier-coller (après beaucoup de tâtonnement)
Mais quand je clique dans une case du tableau, j'ai le message d'erreur "Erreur d'exécution '1004'. La méthode 'Range' de l'objet '_Worksheet" a échoué. Si je fait débogage, la macro s'ouvre et la ligne suivante est surlignée en jaune :
If Not Intersect(Target, Range(Plage(i))) Is Nothing And Target.Count = 1 Then
A noter que cette erreur intervenait déjà au tout début lorsque je copiais simplement le tableau et la macro sans définir les plages.

Voilà. Quand on n'est pas bon, on n'est pas bon.
Merci pour ton travail.
A+
Th
 

chazey

XLDnaute Nouveau
Re : Bloquer une cellule en fonction de la valeur d'une autre.

Bonjour Paf, bonjour à tous,
Merci Paf pour tout ce que tu as fais pour moi mais je me rends compte que, finalement, tout cela est beaucoup trop compliqué pour moi.
Publié le classeur serait évidement la meilleure solution. Mais il contient des infos que je ne peux pas laisser (adresses mail, n° de téléphone, adresse, etc). Alors il faudrait encore tout modifier. Et rien ne dit que après, je pourrai tout remettre en ordre pour un bon fonctionnement. A force de vouloir améliorer mon système, je le transforme en véritable "usine à gaz". Je crois que je vais en rester là. En tout cas, ne considère pas que tu as travaillé pour rien : tu m'as fais beaucoup progresser dans ma compréhension d'EXCEL. Je conserve soigneusement ton tableau : j'étudierai de façon plus approfondie son fonctionnement quand j'en aurai plus le temps.
Encore merci pour ce que tu as fais pour moi. Mais il y a encore du chemin à faire pour que je sois un as en VBA. Pour l'instant, c'est un peu comme essayer de planter un clou dans un rocher.
A+
Th
 

Discussions similaires

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg