Bloquer des listes déroulantes

Fermé
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014 - 18 juin 2014 à 09:53
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 19 juin 2014 à 20:00
Bonjour,

Je suis en train de créer un tableau de passage pour des candidats à un examen. Les candidats passent devant différents jurys. Les professeurs composant les jurys peuvent bouger d'un jury à un autre. J'ai déjà composé une liste des professeur et des horaires de passage des élèves possibles.
Par contre, je désirerai pouvoir bloquer les horaires choisi pour chaque professeur, afin d'être certain que personne ne se retrouve à deux endroits au même moment (ex: M Jules est professeur de Français. Il appartient aux jurys 540 et 620. Un élève est convoqué à 8h00 devant le Jury 540 pour passer le Français. Cet horaire doit être bloqué pour éviter que M Jules se retrouve à avoir un élève à examiner à 8h00 avec le Jury 620).

Merci pour vos réponses

15 réponses

Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 18/06/2014 à 10:50
Bonjour,

si j'ai bien compris, il s'agit d'utiliser les horaires définis qu'une seule fois.
Regarde ce montage, Feuil2 qui peut être masquée, colonne A au format texte j'ai saisi les tranches horaires, pour l'exemple de 15 minutes en 15 minutes
colonne B est une copie de la colonne B Feuil1 avec liaison de sorte que les horaires retenus Feuil1 soient recopiés, j'ai nommé cette plage Attribué
colonne C reconsidère la liste sans les horaires préalablement retenus et colonne D reconsidère la liste sans les cellules vides

Feuil1 en A la liste des profs et en B les horaires
il est possible de mettre ces combinaison de formule sur la Feuil1 ce qui permettra de supprimer la colonne B Feuil2 et masquer ces colonnes, mais l'idéal serait d'avoir un exemple de ton fichier anonymisé

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

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
18 juin 2014 à 12:49
Re,

Que je comprenne ton tableau, feuille Tableau passage colonne A et B concerne bien les candidats

ensuite colonne H il faut attribuer un horaire à chaque nom de la colonne F

et colonne I on recommence avec une nouvelle liste horaire pour attribuer un horaire a chaque nom de la colonne H

c'est bien cela
1
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 18/06/2014 à 22:27
Re,

teste ton fichier, la seule chose à faire est de saisir la liste des professeurs onglet "Données_listes" colonne K

renommer les plages nommées, chaque nom doit impérativement correspondre à chaque nom de la liste en K

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

vu l'importance des formules, il serait judicieux de protéger la feuille "Données_listes"

il est également possible d'automatiser les plages nommées de sorte à ne saisir que les noms des professeurs

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
19 juin 2014 à 11:49
Re,

les formules ont leurs limites, et fait tu souhaiterais que l'heure s'efface lorsque tu changes de nom et donc te permettre de sélectionner un autre créneau horaire.

Si c'est cela, il faut ajouter un bout de VBA dans les propriétés de la feuille.
confirme le moi et je te le rajoute
1

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

Posez votre question
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
18 juin 2014 à 11:31
Merci beaucoup pour cette réponse rapide et très claire.

Par contre, le fichier est légèrement différent. En fait, on a 29 professeurs qui font passer des examens à différents élèves. Chacun de ces professeurs peut avoir un élève à faire passer toute les 20 minutes. Il faudrait juste que, lorsque l'on attribuera les horaires de passage aux élèves, cet horaire soit bloqué dans la liste d'horaires disponibles pour chaque professeur.

Je te joint mon fichier qui est composé de 2 feuilles, la feuille Données_listes qui comprend les listes conditionnelles de jurys, des matières par jurys et des professeurs qui s'occupent de chaque matière. Ensuite, il y a une liste avec les horaires de passage possible pour chaque professeur, donc 29 listes en tout.

La seconde feuille est le tableau de passage a proprement parler.

https://www.cjoint.com/?3FslFyBn9jT
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
18 juin 2014 à 11:42
Re,

je te regarde le fichier et te le retourne dans quelques minutes
0
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
18 juin 2014 à 13:55
Pour les colonnes A et B, c'est ok



Ce n'est pas une nouvelle liste horaire en colonne I. Le professeur peut être sélectionné en matière 1 et matière 2 et donc en examinateur 1 ou examinateur 2. Il ne peut y avoir qu'une seule liste horaire pour chaque professeur, qu'il ai la fonction examinateur 1 ou 2. (ex: M Ol est examinateur 1 en ligne 3. Il est examinateur 2 en ligne 4. On ne doit pas pouvoir lui faire passer un élève à 8h00 en ligne 3 et en ligne 4).

Est-ce clair?
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
18 juin 2014 à 16:46
Re,

Récupère ton fichier et teste avec les noms M_Pichon, M_Lo, Mme_Li, Mme_Fes, M_Pa et M_Po

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

si c'est ce que tu cherches je continuerais si tu n'y arrives pas
0
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
18 juin 2014 à 18:01
J'ai regardé le fichier.

Cela fonctionne à merveille. Je vais essayer de reproduire la même chose pour les autres professeurs. Je te recontacterai si je tombe sur un os.

Merci beaucoup pour ton aide.
0
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
19 juin 2014 à 09:38
Merci beaucoup Mike, tout fonctionne comme sur des roulettes.

Il ne me reste plus qu'à mettre en forme les tableaux de jurys une fois les horaire de passage définis.

Grâce à toi, j'ai réussi à mettre sur pied ce tableau, je t'en remercie encore énormément.
0
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
19 juin 2014 à 11:11
Bonjour,

Existe-t-il des moyens de validation postérieure des horaires?

Je m'explique: Lorsque l'on veut modifier l'un des examinateurs, on peut se trouver face à un problème. En effet, si le professeur précédent était sur un créneaux déjà bloqué pour ce professeur, on a aucun affichage de chevauchement de l'horaire.

Je te joint un fichier exemple. Regarde pour M_Pichon sur les Données listes.
Sur le Tableau de passage, tu verras qu'en ligne 13 et ligne 4, on a deux fois l'horaire 8h00. J'ai juste changé le nom du professeur, de M_Lo à M_Pichon. M_Lo était bloqué sur 8h00. Le changement n'a pas modifié la case, avec une erreur, mais à autorisé un chevauchement de deux fois 8h00.
C'est problématique car ceci impose au manipulateur de rester bien vigilant, si jamais on doit remplacer un professeur en dernière minute.

https://www.cjoint.com/?DFtllTnknHo
0
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
19 juin 2014 à 12:26
C'est exactement ça.

Merci de ton aide
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 19/06/2014 à 13:07
Re,

Regarde ma dernière retouche, feuille "Données_listes" j'ai automatisé les plages nommées, il suffit de saisir le nom des profs dans les plages rouge, les plages nommées sont anonymisées ce qui rend le fichier plus simple et les formules autonomes
j'ai ajouté le code pour effacer l'heure mais le fichier doit être enregistré en XLSM ou avec l'ancienne extension XLS

il est possible que le code demande d'être authentifié, ce qui est normal

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

PS:ne faudrait il pas appliqué également le code VBA aux colonnes Matières de sorte que si tu changes une matière les cellules du prof et de l'heure s'effacent également

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
keuuk Messages postés 8 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014
19 juin 2014 à 15:23
Re,

Tu as tout à fait raison, on devrait appliquer le code VBA aux colonnes Matières et Jury, pour être certain de ne pas pouvoir faire d'erreurs.
Par contre, je ne sais pas comment récupérer le code VBA que tu as utilisé pour faire "disparaitre" l'heure. En effet, j'aimerai pouvoir le lire pour présenter ce tableau à des collègues et tenter de comprendre le mécanisme qui fait disparaitre les horaires/profs/matières.

Encore un très grand merci pour ton aide, tu me permets d'obtenir un outil d'organisation de ces épreuves orales très puissant.
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
19 juin 2014 à 20:00
Re,

pour voir le code VBA, il suffit de cliquer sur deux touches du clavier (Alt et la touche F11)

tu remarqueras ce code
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, Union([E2:E16], [H2:H16])) Is Nothing Then
Target(1, 2).ClearContents
End If
If Not Intersect(Target, Union([D2:D16], [G2:G16])) Is Nothing Then
Range(Target(1, 2), Target(1, 3)).ClearContents
End If
Application.EnableEvents = True
End Sub

Explication du code
ce code se déclenchera lorsque il y aura un changement de donnée
Private Sub Worksheet_Change(ByVal Target As Range)

cette ligne est un détecteur d'erreur pour éviter le blocage d'Excel
On Error Resume Next

cette ligne neutralise certaine fonction d'Excel qui évite les déplacements pendant l'exécution du code
Application.EnableEvents = False

cette ligne limite le déclenchement du code aux deux plages définies
If Not Intersect(Target, Union([E2:E16], [H2:H16])) Is Nothing Then

cette ligne sélectionne la cellule de droite et l'efface
Target(1, 2).ClearContents

cette ligne terme l'action
End If

et on relance l'action pour les plages matières
If Not Intersect(Target, Union([D2:D16], [G2:G16])) Is Nothing Then

idem pour effacer cette fois les deux cellules à droite de la cellule qui change
Range(Target(1, 2), Target(1, 3)).ClearContents

et on rétabli les fonctions d'Excel
Application.EnableEvents = True

pour revenir sur Excel refaire Alt et F11

https://www.cjoint.com/?DFtt7soWCDS
0