XL 2019 Alimenter une combobox selon critère après avoir double cliqué sur une feuille

ndjobbo

XLDnaute Nouveau
Voila ma problématique:
J'ai une feuille "Sem Impaire" qui représente la répartition hebdomadaire des personnels dans un bloc opératoire sur plusieurs salles. J'ai pu codé ceci: Lorsque je double clic sur une cellule devant accueillir le nom de l'agent affecté à cette salle, un formulaire s'ouvre... il comporte une combobox et 2 boutons (enregistrer et annuler). La combobox doit afficher la liste déroulante des agents pouvant exercer dans ladite salle (cela dépend de la spécialisation des agents). Ex: les agents pouvant être affectés à la salle n°3 doivent être spécialisés en obstétrique. Donc quand je double clic sur la salle 3, le formulaire qui s'ouvre doit afficher uniquement la liste des agents spécialisés en obstétrique... Ces informations sont stockées dans un tableau structuré dans la feuille "équipe".

Aujourd’hui, ma combobox reste vide même quand je code un form_initialize comportant une boucle combobox.additem = range("tableau").value tenant compte du critère obstétrique=true.

Avez vous une idée pour solutionner mon problème?
En PJ le fichier.

Merci d'avance.
 

Pièces jointes

  • Feuille Semaine V3.4 Vidé.xlsm
    641.6 KB · Affichages: 7

fanfan38

XLDnaute Barbatruc
Bonjour
Ci joint ma solution
Un soucis tu as 30 spécialités et dans equipe tu en as que 5...
Je t'ai fait quelques exemples de case dans la macro qui est sur la feuille Sem Impair

A+ François
 

Pièces jointes

  • Feuille Semaine V3.4 Vidé.xlsm
    626.8 KB · Affichages: 3

ndjobbo

XLDnaute Nouveau
OK merci pour ta réponse rapide..
Je viens de regarder le fichier.

Et pour répondre a ta question:

En fait, dans la feuille "semaine", j'ai 7 colonnes pour les 7 jours de la semaine...

Pour chaque journée, il y a 3 colonnes excel...( 1 pour le nom de la personne affectée a la salle, 1 pour un rajout particulier indépendant et 1 pour afficher l'heure de fin de l'agent qui a été affecté.)

En ligne, il y a les numéros de salle.

Chaque ligne comporte 2 lignes excel. 1 qui affiche une liste déroulante pour choisir la spécialité chirurgicale de la salle (par ex chir digestive ou neurochirurgie etc.).

Ma problématique porte sur la 2nde ligne excel; celle ou je dois afficher un membre de l'équipe soignante...

Selon les salles et les chirurgies qui s'y déroulent, il faut affecter des agents formés. Par exemple, la salle 3 est une salle d'obstétrique donc seuls les agents spécialisés en obstétrique peuvent y être affectés.
Les salles 17 et 18 sont des salles de pédiatrie. Idem, seuls les agents compétents en pédiatrie peuvent y être affectés.

Dans mon tableau structuré feuille "Equipe" figurent les différents agents avec leurs compétences (Obstétrique, Pédiatrie, Hypnose etc.)

Ce que je souhaite faire:

En 2ble cliquant sur la cellule de la salle où je veux affecter un agent, je veux ouvrir un formulaire. Ce dernier comporterais des cases à cocher permettant de poser les filtres que je souhaite et la combobox chargée avec la liste des agents formés selon les cases de filtre que j'aurais cochées.

Ainsi, je choisirais la personne que je souhaite affecter à cette salle.
Son nom serait alors chargé dans une variable pour être enregistré dans la cellule initialement 2ble cliquée.

Ainsi, successivement, pour les autres salles, je pourrais charger les combobox suivantes avec une liste de personnes formées toujours selon les critères choisis mais sans les personnes déjà affectées aux salles précédemment renseignées.

Heu ca parait un peu complexe. Du moins mon explication.

Voila l'explication.

Merci d'avance pour le temps consacré à mon problème.
 

sousou

XLDnaute Barbatruc
Bonjour
Un petit test sur la semaine impaire
Lorsque tu choisis une spécialités la cellule du dessous propose les spécialistes de cette discipline. en fonction de la feuille équipe
J'ai ajouté une feuille ou les listes vont s’inscrire
7 jours 21 salle 7*21 listes
Tout ça à regarder en détail.... pas tout testé
A voir si j'ai compris
 

Pièces jointes

  • Feuille Semaine V3.4 Vidé.xlsm
    631.6 KB · Affichages: 3

ndjobbo

XLDnaute Nouveau
Merci a toi sousou..
Je prends le temps de décortiquer ta réponse...
A priori, c'est pas ce que j'avais en tête mais tu me proposes quelque chose auquel je n'avais pas pense...
Bref je vais "digérer" ton code et je reviens plus tard.

Mais encore merci moult.
 

sousou

XLDnaute Barbatruc
Bonjour
La nuit porte conseil,
J'ai modifié légèrement mon approche en créant une feuille de listes pour chaque jour de la semaine
L1 à L7 il suffira de les masquer.
J'ai mis en place pour semaine paire et semaine impaire la même procédure
les liste étant créés dans la même feuille L.. de la ligne 1 a 21 pour semaine impaire et de 22 à... pour semaine paire
Attention! Je viens de voir qu'il ny a pas de salle 2 d'ou 2o salle et non 21 , faut-t'il en tenir compte
Pour le moment c'a ne change rien,mais c'est bien de clarifier pour une suite éventuelle
 

Pièces jointes

  • Feuille Semaine V3.4 Vidé.xlsm
    642.7 KB · Affichages: 1

ndjobbo

XLDnaute Nouveau
Vraiment je te remercie pour ton aide...

Tu as vu juste, il n'y a que 20 salles (physiquement) car pas de numéro 13, et les salles 2 et 3 ne comptent que pour une seule (la 3 en l’occurrence.) soit 19 salles à affecter au bloc... Auxquelles s'ajoute la 20ème, la salle de naissance (SDN) où il faut aussi affecter un agent.

Je me rends compte que j'ai manqué de précision dans mon descriptif...

Tout d'abord, l'objectif de ces feuilles de semaine (paire et impaire) est d'être imprimées et affichées dans le bloc opératoire... Ainsi, chacun sait quelle spécialité chirurgicale à lieu dans quelle salle de bloc et surtout, qui est affecté dans les-dites salles. Donc les listes déroulantes corrélées aux spécialités permettent d'informer de ce qui se déroule dans chaque salle.

Pour ce qui est de l'équipe soignante:

Les agents doivent être formés pour travailler dans certaines salles... Et surtout, les spécificités sont celles que tu retrouves dans le tableau structuré feuille "équipe"; toutes les chirurgies concernent l'adulte, l'obstétrique où la pédiatrie. Donc un agent peut être affecté à une salle de neurochirurgie ou d'ORL sans distinction de spécialisation... Par contre s'il est affecté à l'obstétrique, il doit avoir la formation obstétrique et de même pour la pédiatrie.

Pour résumer, tout le monde peut faire de l'adulte; certains peuvent faire de l'obstétrique en plus; d'autres de la pédiatrie et quelques uns les trois.

Comme si c'était pas assez complexe, dans la salle 4 ne sont affectés que ceux formés à l'hypnose.

Et dans la salle qui est choisie pour les "Locale PAC" (variable d'un jour à l'autre, et pas tous les jours), ne sont affectés que ceux formés aux PAC.

Chaque agent est donc affecté à une salle tous les jours de la semaine... hormis ceux en repos ou en vacances ou bien sortant de garde. Et c'est au cadre de remplir cette feuille de semaine; pour la semaine à venir.

Mon objectif est d'éviter les erreurs d'affectation et d'éviter les redondances (agents affectés 2 fois le même jour dans 2 salles différentes).
J'ai déjà réalisé un outil permettant à peu près de remplir ces fonctions.... pour chaque feuille de semaine, il y a des listes de validation dans chaque cellule qui sont alimentées par plusieurs listes d'agents en fonction des critères Obstétrique, Pédiatrie, Hypnose etc... Donc j'ai les bonnes listes dans les bonnes cases. Mais je voulais qu'au fur et à mesure qu'une personne est choisie pour une salle (chaque jour), elle disparaisse de la liste ne permettant plus de la choisir pour une seconde salle. Ainsi, je m'affranchis des règles de surbrillance conditionnelles que j'avais posées sur la feuille de semaine (en rouge des qu'il y a redondance de nom sur la journée).

Voila... ce descriptif est complet quant aux nécessités organisationnelles du bloc ou je travaille et pour lequel j'essaie de créer cet outil excel.

Encore une fois, je vous remercie tous pour votre intérêt à mon projet. Vos suggestions me permettent de voir les choses autrement et de faire avancer mon programme... et surtout mes connaissances. (je dois dire qu'avec ton programme sousou, j'ai du mal à tout saisir mais bon je vais avancer progressivement).
 

sousou

XLDnaute Barbatruc
apparemment, j'ai pas compris!
Et ta description ne m'éclaire pas vraiment.
Tu dis que les listes d'agent pour chaque cellule ? j'avais bien vue les noms des listes mais ou sont'elles?
Ton objectif est simplement de ne pas avoir d'erreur d'affectation?
Essai de donner des exemple précis et songe qu'on est loin de ta problématique et qu'il est difficile de la saisir proprement
Quand au code si tu veux des explications....
 

ndjobbo

XLDnaute Nouveau
Bon je publie ma version fonctionnelle du programme dont je me sers au boulot et que je voudrais améliorer.
Ce fichier comporte des noms factices évidement.
Les feuilles "Sem Impaire" et "Sem Paire", masquées, sont des modèles dont le programme se sert pour créer les feuilles à remplir.
La feuille "listes" est mise à jour lorsque l'on utilise le formulaire de gestion de l'équipe; lorsqu'on le quitte.
De cette feuille "listes" sont alimentées les listes de validation de données présentes sur les feuilles de semaine.

Problématique 1: Pas moyen de mettre des couleurs dans les listes de validation de données sur les feuilles de semaine. Les couleurs sont le résultat d'un formatage des cellules.
J'aurais voulu que les couleurs soient une propriété du nom de la personne selon ses compétences (pédia etc..). Ainsi, si l'activité d'une salle d'opération est modifiée au profit d'une spécialité nécessitant une compétence particulière comme de la pédiatrie ou de l'hypnose ou de l'obstétrique par exemple, la couleur du nom de l'agent qui est affecté à cette salle ne dépend pas du formatage de la cellule.

Problématique 2: Au fur et à mesure que je remplis la feuille de semaine en affectant les agents aux différentes salles, je voudrais que les listes de validation ne proposent que les agents n'ayant pas déjà été affecté précédemment. Et c'est là que ta solution, sousou, m'ouvre de nouvelles perspectives.

Voilà j’espère que ça vous éclairera sur mon sujet et que ca ne vous paraitra pas trop rébarbatif.

Merci pour votre aide.
 

Pièces jointes

  • Feuille Semaine V3.2 Publiée.xlsm
    795.4 KB · Affichages: 1

sousou

XLDnaute Barbatruc
Hello
1 question.
tu as 31 spécialités, dan st feuille liste que quelques-unes
si les listes intègre plusieurs spécialités, il faudrait un tableau définissant celles-ci
exemple IADES ( medecine int ,..) afin de savoir quelle spécialités entre dans le chmaps de ta liste de validation

exemple avec Gabrielle.B tu l'affecte en medecine int mais cette spécialités n'est pas dans les listes
2 question
quand tu dis précédemment, c'est les jours précédents ou c'est, ne peux être affectée qu'une seule fois par jour
 

sousou

XLDnaute Barbatruc
On peut aussi faire un truc simple.
on laisse les listes comme tu les gères, et ont controle si l'agent est déjà pris dans la journée (ou autres critères)en le signalant par un message d'alerte et en inderdisant son affectation
 

ndjobbo

XLDnaute Nouveau
Salut..

Réponse 1:

oui il y a 31 spécialités chirurgicales. Seules l'obstétrique et la pédiatrie recquierent des soignants ayant une formation complémentaire. Pour tout le reste, soit les 29 autres spécialités, tout le monde peut les faire sans avoir besoin de compétences supplémentaires. C'est pour ça que la feuille "Equipe" ne trace que ceux qui ont la formation en obstétrique et/ou en pédiatrie. Pour les autres spécialités chirurgicales, ça n'a pas d’importance car tout le monde peut y être affecté (excepé pour la salle n°4 ou se déroule quasiement toujours de la gynécologie/PO/IVG et où ne sont affectés que les agents formés à l'hypnose - que je trace aussi dans ma feuille "Équipe").

Dans la feuille "listes", je n'ai saisi que quelques agents fictifs mais dans la vraie vie, l'équipe est composée d'une 60aine de personnes.

Est ce que çà te parait assez clair?


Réponde 2:

Je veux dire que les agents ne peuvent être affectés chacun qu'une fois par jour... Chaque agent affecté à une salle l'est pour la journée... Et le lendemain , les affectations peuvent changer mais toujours une personne par salle par jour. Et ainsi de suite.

Voilà pour les précisions.

Merci encore.
 

ndjobbo

XLDnaute Nouveau
Ok. Je viens de ragerder. Le message d'interdiction apparait meme quand une cellule est vide et que je choisis une personne non affectée dans la liste... Il doit y avoir un probleme dans la condtion d'appel de la procedure d'interdiction.. j'ai cherche.. pourtant, le If Target.Row < 40 And Target.Row Mod 2 = 0 And Target <> "" me parait logique mais le <>"" n'est pas pris en compte par excel.
 

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly