(contexte France – adaptable à votre organisation)
1) Objectif et périmètre La planification médicale vise à garantir la continuité et la sécurité des soins en mettant en face besoins (patients, blocs, astreintes) et capacités (équipes, salles, temps). Ce guide propose une méthode pas-à-pas , des règles de modélisation et des outils Excel gratuits pour démarrer vite sans complexité.
2) Données d’entrée indispensables Ressources
Noms, rôles (IDE, AS, Médecin, IADE, IBODE…), service/spécialité, ETP/heures hebdo, compétences critiques. Contraintes : indisponibilités, formations, repos, cycles (2×12, 3×8). Besoins
Minima de couverture par service/shift (Jour/Nuit/Garde) et postes critiques. Patients (soins infirmiers) : acuité N1–N4 , isolement, actes. Bloc opératoire : salles, amplitude, turnover , priorités (P1…P4/U). SSIAD/HAD : fenêtres horaires , durées, zones. Règles & seuils
Codes de shift : J/M/S/N/G/R/CONG/ABS/FORM avec durées. Seuils d’alerte (heures/sem., repos post-nuit, dépassements bloc…). 3) Méthode en 7 étapes (prête à l’emploi) Cadrer : fixer codes, horizons (2–4 semaines / mois), minima par service/spécialité. Paramétrer : saisir durées de codes, amplitude bloc, turnover, fenêtres SSIAD. Importer les listes Ressources/Services/Patients . Pré-remplir au besoin avec cycles (2×12, 3×8) pour les équipes postées. Affecter : utiliser les listes déroulantes pour éviter les erreurs de saisie. Contrôler : onglets Couverture/KPI pour déficits, heures/sem., repos post-nuit, dépassements. Publier & ajuster : rituel quotidien (10 min) + hebdo (30 min) pour lissage et arbitrages. 4) Modéliser la charge et la capacité Soins infirmiers (service d’hospitalisation)
Chaque patient a une acuité (N1..N4). Convertir en points (ex. N1=1, N2=1,5, N3=2, N4=3). Charge par IDE = somme des points des patients affectés au shift. Alerte si charge > seuil du shift (ex. 8 pts jour, 6 pts nuit). Bloc opératoire
Durée totale par cas = préparation + intervention. Fin+turnover = fin + turnover (par salle ou cas). Dépassement si fin > heure de fermeture de la salle. Gantt : pas de 15–30 min pour visualiser l’occupation. SSIAD/HAD
Chaque acte : durée + fenêtre horaire . Confronter heures planifiées vs heures dispo/jour par intervenant. Astreintes & gardes
Minima nuit et WE/JF par spécialité. Compter couverture réelle vs minima, alerter tout déficit. 5) Codes & cycles (recommandations) Codes standards
J (12 h jour), M (8 h matin), S (8 h soir), N (12 h nuit), G (12 h garde) FORM (formation 7 h), R (repos), CONG (congé), ABS (absence) Astuce : utilisez un offset par personne pour décaler l’entrée dans le motif.
6) Indicateurs clés (KPI) à suivre Couverture vs minima (Jour/Nuit/Garde) par service/salle. Heures planifiées et heures/sem. moyennes par personne. Repos post-nuit (N → lendemain R/CONG/ABS). Utilisation bloc = (Σ durées min) / (amplitude – réserve). On-time start du 1er cas / turnover moyen / annulations . Respect fenêtres SSIAD/HAD (retards, impossibles). 7) Rituels d’équipe & gouvernance RACI (exemple)
Cadre : fixe règles, minima, valide arbitrages inter-services. Référent de service : met à jour données, publie planning. Équipe : signale contraintes/indispos, valide affectations. Rythme
Quotidien (10 min) : absences, renforts, priorités du jour. Hebdo (30 min) : lissage des déficits, qualité (retards bloc, dépassements), mise à jour minima. 8) Bonnes pratiques Excel (anti-erreurs) Listes déroulantes pour tous les champs (codes, services, salles, noms). Plages nommées stables (ex. Codes_Shift, Liste_Services). Couleurs sobres et cohérentes (vert OK, ambre 100–120 %, rouge déficit). Protection des cellules calculées ; zones de saisie non protégées. Versionnage : 1 fichier par période (Sxx_YYYY ou Mois_YYYY). Export PDF pour l’affichage ; édition réservée aux référents. 9) Scénarios & parades (exemples concrets) Déficit Nuit (Urgences – vendredi) : déplacer un IDE de jour, convertir une garde en renfort nuit ou rehausser temporairement le Min_Nuit si flux attendu. Charge IDE > seuil (Soins) : réaffecter un patient N3/N4 à un autre IDE ou ajouter un AS en appui (actes simples). Dépassement bloc (fin > 18:00) : réduire turnover , échanger un cas avec une salle moins chargée, replanifier un cas non urgent. SSIAD/HAD – dépassement heures/jour : transférer un acte à durée fixe vers un intervenant d’une zone voisine . 10) Conformité & données Respectez vos règles internes (repos, amplitudes, cycles) et accords locaux. Données minimales : pas de détails médicaux nominaux dans le planning. Traçabilité : consigner les décisions sensibles (renforts, changements de cycle). 11) Formules Excel Ici un cheat-sheet de formules Excel (FR) prêtes à coller pour la planification médicale (soins, shifts, bloc, SSIAD/HAD, astreintes). J’utilise le séparateur ; et les noms FR des fonctions (RECHERCHEX, SOMME.SI.ENS, NB.SI.ENS, MIN.SI.ENS, etc.).
A. Dates & cycles Lundi de la semaine en cours
=AUJOURDHUI()-JOURSEM(AUJOURDHUI();2)+1
Prochain lundi
=AUJOURDHUI()+MOD(8-JOURSEM(AUJOURDHUI();2);7)
Remplir un cycle (ex. 2×12 JJRRNNRR) avec “offset” par personne
Liste du motif en Paramètres!$F$2:$F$9 (ex. J;J;R;R;N;N;R;R) Offset du salarié en Ressources!$F2 (0 = débute au 1ᵉʳ code du motif) Dans la grille (ligne = personne, colonnes = jours à partir de D2) : =INDICE(Paramètres!$F$2:$F$9 ; MOD($F2 + (COL()-COL($D$2)) ; NBVAL(Paramètres!$F$2:$F$9)) + 1)
B. Heures & couvertures (Shifts Hôpital) Heures planifiées (ligne personne) à partir des codes
Table des codes/durées en Paramètres!$A$6:$B$20 (Code ; Durée_h) Plage des codes de la personne pour la période : D2:AH2 =SOMMEPROD(SI(D2:AH2<>"" ; RECHERCHEX(D2:AH2 ; Paramètres!$A$6:$A$20 ; Paramètres!$B$6:$B$20 ; 0) ; 0))
Couverture Jour (par service & date)
Colonne service en Planning!$C$2:$C$100 Colonne “codes du jour D” = Planning!D$2:D$100 On compte J/M/S comme “Jour” : =SOMMEPROD((Planning!$C$2:$C$100="Urgences")*((Planning!D$2:D$100="J")+(Planning!D$2:D$100="M")+(Planning!D$2:D$100="S")))
Couverture Nuit (par service & date)
=SOMMEPROD((Planning!$C$2:$C$100="Urgences")*((Planning!D$2:D$100="N")+(Planning!D$2:D$100="G")))
Alerte “repos après nuit” (cellule du lendemain)
Dans la cellule jour+1 (même ligne) : =SI(DECALER(D2;0;-1)="N" ; SI(ET(D2<>"R" ; D2<>"CONG" ; D2<>"ABS") ; "ALERTE" ; "") ; "")
(Mettre une mise en forme conditionnelle rouge sur “ALERTE”.)
C. Soins infirmiers (acuité N1–N4 → charge IDE) Points d’acuité par patient
Valeur d’acuité du patient (N1..N4) en C2 Barème en Paramètres!B5:B8 (N1..N4) : =SI(C2="";0;CHOISIR(EQUIV(C2;{"N1"."N2"."N3"."N4"};0);Paramètres!$B$5;Paramètres!$B$6;Paramètres!$B$7;Paramètres!$B$8))
Charge totale d’un IDE sur le shift (somme des patients affectés)
Si les 6 cellules patient du jour sont F2:K2 (noms) : =SOMME(SI(F2:K2="";0;CHOISIR(EQUIV(XLOOKUP(F2:K2;Patients!$A$2:$A$200;Patients!$C$2:$C$200;"") ; {"N1"."N2"."N3"."N4"} ; 0) ; Paramètres!$B$5 ; Paramètres!$B$6 ; Paramètres!$B$7 ; Paramètres!$B$8)))
(Confirmer que votre Excel accepte RECHERCHEX/XLOOKUP. Sinon, remplacez par INDEX+EQUIV.)
Alerte si charge > seuil du shift
Seuils en Paramètres!B10 (Jour) et Paramètres!B11 (Nuit) ; le code shift de la ligne en B2 : =SI(B2="Jour" ; SI(Charge>Paramètres!$B$10;"ALERTE";"") ; SI(Charge>Paramètres!$B$11;"ALERTE";""))
D. Bloc opératoire — fin, conflits, dépassements, KPI Heure de fin (Début + Prépa + Durée)
Début K2, Durée (min) L2, Prépa (min) M2 : =SI(ET(K2<>"";L2<>"";M2<>""); K2+TEMPS(0; L2+M2 ; 0) ; "")
Fin + Turnover
Fin P2, Turnover (min) N2 : =SI(ET(P2<>"";N2<>""); P2+TEMPS(0; N2 ; 0) ; "")
Conflit de salle (chevauchement sur même date/salle)
Dans la ligne i (2→1000), avec Salle B, Date A, Début K, Fin P, Statut O : =SI(B2="";""; SOMMEPROD((Interventions!$B$2:$B$1000=B2)*(Interventions!$A$2:$A$1000=$A2)*(Interventions!$O$2:$O$1000<>"Annulé")*(Interventions!$K$2:$K$1000<P2)*(Interventions!$P$2:$P$1000>K2)) - 1 )
Règle couleur rouge si résultat >0.
Dépassement d’amplitude (Fin > Heure de fermeture salle)
Heure fin salle via Salles!$C:$C, sinon fallback en Paramètres!$B$4 : =SI(B2="";""; SI(P2 > SIERREUR(RECHERCHEX(B2;Salles!$A:$A;Salles!$C:$C);Paramètres!$B$4) ; "Dépassement" ; "" ))
Utilisation % (par date & salle)
Minutes totales = SOMME.SI.ENS des Durées (colonne L) non annulées : =SI(B2="";""; LET(
_salle;B2; _date;$A2;
_dur; SOMME.SI.ENS(Interventions!$L:$L; Interventions!$B:$B; _salle; Interventions!$A:$A; _date; Interventions!$O:$O; "<>Annulé");
_open; RECHERCHEX(_salle; Salles!$A:$A; Salles!$B:$B);
_close; RECHERCHEX(_salle; Salles!$A:$A; Salles!$C:$C);
_ampl; (_close-_open)*1440;
_res; RECHERCHEX(_salle; Salles!$A:$A; Salles!$E:$E);
SI(_ampl>0; _dur/MAX(_ampl-_res;1); "")
))
Formater la cellule en % .
1er cas à l’heure (OK/Retard)
=SI(B2="";""; SI( MIN.SI.ENS(Interventions!$K:$K; Interventions!$B:$B; B2; Interventions!$A:$A; $A2; Interventions!$O:$O; "<>Annulé")
= RECHERCHEX(B2; Salles!$A:$A; Salles!$B:$B) ; "OK" ; "Retard"))
Turnover moyen (min)
=SI(B2="";""; MOYENNE.SI.ENS(Interventions!$N:$N; Interventions!$B:$B; B2; Interventions!$A:$A; $A2; Interventions!$O:$O; "<>Annulé"))
E. SSIAD / HAD — fenêtres & charge Retard (minutes) si début avant/Après fenêtre
Début réel D2, Fenêtre début E2, Fenêtre fin F2 : =MAX(0 ; (D2 - E2) * 1440) /* retard de démarrage */ Avance : =MAX(0 ; (E2 - D2) * 1440)Hors fenêtre : =SI(OU(D2<E2 ; D2>F2) ; "Hors fenêtre" ; "")
Heures planifiées par intervenant & jour
Feuille “Planning_Visites” (Durée en minutes colonne E) : =SOMME.SI.ENS(Planning_Visites!$E:$E ; Planning_Visites!$A:$A ; $A2 ; Planning_Visites!$B:$B ; $B2) / 60
Alerte dépassement dispo/jour (colonne “Heures/jour” en Intervenants!D:D)
=SI(C2>D2 ; "Dépassement" ; "")
F. Astreintes & gardes Nuits couvertes (comptage non vide)
Sur la colonne de la spécialité en “Planning” : =NBVAL(Planning!$C$2:$C$32)
Minima par spécialité via INDEX+EQUIV
=INDEX(Paramètres!$B$5:$B$20 ; EQUIV($A2 ; Paramètres!$A$5:$A$20 ; 0))
Alerte déficit (mise en forme conditionnelle)
Condition : Nuits_couvertes < Min_Nuits → remplir rouge. G. Mises en forme conditionnelles (règles types) Déficit de couverture : =Cellule_Couverture < Cellule_Minimum (remplissage rouge ). Surcharge (acuité) : =Charge > Seuil (rouge). Zone 100–120 % (par ex. utilisation bloc) : =Cellule%>1 ET <=1,2 (ambre). Repos post-nuit : valeur = "ALERTE" (rouge). H. Astuces robustesse Remplacer RECHERCHEX par INDEX(...;EQUIV(...)) si version Excel < 365. Utiliser plages nommées (ex. Codes_Shift, Liste_Services) pour éviter les références cassées. Utiliser LET() pour des formules KPI lisibles (comme ci-dessus). Toujours verrouiller les colonnes calculées (protection de feuille) et laisser les zones de saisie libres. 12) Checklists prêtes à cocher Avant publication
Zéro déficit sur postes critiques (Nuit, Garde, Bloc) Repos post-nuit respecté Heures/sem. dans les seuils Dépassements bloc traités / replanifiés SSIAD/HAD : fenêtres respectées En cas d’absence imprévue
Remplacement même rôle → service voisin Si échec : abaisser activité non critique / replanifier Décision tracée (qui, quoi, quand) Méthodes de planification médicale, organisée par horizon, objet à planifier et techniques utilisées Vous pouvez piocher dedans “à la carte” selon ton service (soins infirmiers, bloc, SSIAD/HAD, astreintes, consultations).
1) Par horizon temporel Stratégique (6–24 mois) : dimensionnement des effectifs, ouverture de lits/salles, modèles de cycle (2×12, 3×8), budgets. Tactique (1–3 mois) : trames de service (rosters), règles de remplacement, quotas de congés, agenda bloc (plages par spécialité). Opérationnel (J–J+14 / quotidien) : affectations fines des personnes, ordonnancement des interventions/visites, gestion des aléas. 2) Par objet à planifier Couverture de service (Jour/Nuit/Garde) Objectif : atteindre des minima par rôle/service. Méthodes : matrice de couverture (jours × shifts), cycles (2×12, 3×8), équilibrage des déficits (retraitements hebdo). Rosters & cycles (planning du personnel) Objectif : respecter repos 11 h , amplitudes, équité, préférences. Méthodes : règles & heuristiques, ILP/CP (optimisation), décalage par offset dans le cycle. Affectation Patients → IDE/AS (soins infirmiers) Objectif : lisser la charge par acuité (N1–N4). Méthodes : système de points , équilibrage itératif (échanges), seuils de charge par shift. Bloc opératoire (salles & interventions) Objectif : maximiser utilisation , limiter retards & dépassements. Méthodes : plages par spécialité, heuristiques d’ordonnancement (SPT , “plus court d’abord”), gestion des setups/turnover , Gantt . SSIAD/HAD (tournées) Objectif : respecter fenêtres horaires et durées, minimiser temps perdu. Méthodes : problème de tournées avec fenêtres (VRP-TW), insertion gloutonne, échanges 2-opt (simple en Excel). Astreintes & gardes Objectif : couverture nuit/WE/JF + équité. Méthodes : matrice mensuelle, contraintes de non-consécutif, quotas par praticien, rotations. Capacité lits & flux Objectif : éviter blocages (admissions/retours bloc/USC). Méthodes : file d’attente/variabilité (tampons), “lit chaud/froid”, buffers de journée. 3) Techniques (du plus simple au plus “math”) Règles & listes (simples, robustes) : minima, repos, plages. Heuristiques (rapides, 80/20) : glouton, échanges locaux (swap), priorisation (critique d’abord). Optimisation (quand beaucoup de contraintes) : ILP (programmation linéaire entière) pour rosters/couverture. CP (programmation par contraintes) pour calendriers complexes. Simulation (quand l’aléa domine) : What-if sur absences, durées, flux patients. 4) Recettes concrètes par cas A. Couverture de service (Jour/Nuit/Garde) Construis la matrice (lignes = jours, colonnes = J/N/G par service). Remplis via cycles (2×12, 3×8), puis “bouche les trous”. Applique règles : repos 11 h, max 48 h/sem., limites nuits consécutives. Équilibre : déplace les surplus → jours déficitaires. Indicateurs : déficit par jour/shift, heures/sem., repos post-nuit respecté.
B. Affectation Patients → IDE/AS Note l’acuité (N1..N4) → points (ex. 1 / 1,5 / 2 / 3). Trie les patients du plus lourd au plus léger. Assigne au soignant le moins chargé (greedy), en respectant compétences (pansements lourds, perf…). Lisse par échanges ciblés jusqu’à seuils OK. Indicateurs : charge/IDE, dépassements, nombre de patients sensibles.
C. Bloc opératoire (ordre du jour) Fixe l’amplitude (ex. 08:00–18:00) et turnover . Classe les cas : priorité (P1…P4/U), durée estimée , besoin d’équipe. Place d’abord les cas longs/contraints , puis insère les courts par SPT ou “meilleur fit” dans les interstices. Vérifie chevauchements & dépassements ; garde un buffer (ex. 60 min “urgence”). Indicateurs : utilisation %, 1er cas à l’heure, retards, turnover moyen, annulations.
D. SSIAD/HAD (tournées) Pour chaque patient : fenêtre horaire + durée + zone . Démarre par un chemin initial (ordre par heure de fenêtre). Insère le patient suivant à l’endroit qui augmente le moins le temps total (insertion gloutonne). Affinage : opérations 2-opt (échanger deux segments) et équilibrage heures/jour. Indicateurs : heures planifiées vs dispo, retards hors fenêtre, kms/temps déplacement (si suivi).
E. Astreintes & gardes Tableau mensuel par spécialité. Règles : pas > X nuits consécutives, X WE par mois, rotation équitable. Remplis les périodes critiques (WE/JF) en premier, puis le reste. Équilibre les compteurs (nuits/WE par personne). Indicateurs : couverture nuit & WE/JF, équité (écarts max), contraintes respectées.
5) Contraintes fréquentes (check rapide) Légales/accords : repos 11 h, max 48 h/sem., repos après nuit, amplitudes. Organisation : minima par rôle/service, non-double affectation, compétences requises. Équité & préférences : quotas (nuits/WE), alternance, souhaits équipes. Risque/qualité : buffer urgence, temps déplacement, hygiène (bloc). 6) Mini-algos “prêts à coder/faire en Excel” Greedy couverture : pour chaque jour/shift, affecter la ressource dispo qui viole le moins de règles → répéter. Swap local : échanger 2 lignes/jours si ça réduit un déficit sans créer de violation. Best-fit bloc : insérer le prochain cas dans l’intervalle qui minimise le dépassement + turnover cumulé . Affectation patients : tri décroissant par points → assignation au plus bas charge cumulée avec filtre compétence. 7) Gouvernance & rituels Quotidien (10 min) : absences, remplacements, priorités du jour. Hebdo (30 min) : lissage déficits, revue KPI (bloc, soins, SSIAD), adaptation minima. Mensuel : validation astreintes & congés, arbitrages inter-services. 8) Outils & gabarits (Excel) Couverture & rosters : Planning Shifts Hôpital (avec cycles ). Soins infirmiers : affectation par acuité (points, alertes). Bloc : Gantt , conflits, dépassements, KPI. SSIAD/HAD : fenêtres horaires, temps planifiés vs dispo. Astreintes : matrice mensuelle, contrôles d’équité.