Description du projet en une ligne
Bref descriptif de l'objectif du projet
Dans le cadre de mon projet de fin d'études de BTS FED, j'avais en charge de
- Concevoir l'éclairage intérieur/ extérieur du Pôle Enfance de Domloup (près de Rennes)
- Réaliser les plans du bâtiment via REVIT
- Gérer l'éclairage
- Réaliser des simulations via Dialux
- Réaliser un devis
Issus du CCTP, j'ai repris les éléments techniques qui concernait mon projet :
- Projets d’éclairage conforme aux normes NFE (NF EN 12464-1) l’ensemble des locaux du rez-de-chaussée bas intérieur et extérieur (préau),
- Gestion d’éclairage
- Prendre en compte l’apport d’éclairage naturel ainsi que la présence de personne.
- La partie distribution électrique du lot éclairage devra également être étudiée.
Description de la tâche et de son importance
une
famille de scénarios Kxxx cohérente
,
👉 puis
les macro‑tâches par pôle DSI
,
👉 pour
chaque phase projet
,
👉 et
pour chaque scénario Kxxx
.
Je te donne d’abord la
famille de noms Kxxx
, puis la
matrice complète des macro‑tâches
.
Voici la famille
recommandée
pour ton usage MS Project : claire, graduée, mémorisable.
Scénario
Nom
Description
1
Kmax
Projet complet interne (cadrage → conception → intégration → recette → MEP)
2
Kext
Conception externalisée (charge interne réduite)
3
Kbuild
Développement externalisé (intégration + recette internes)
4
Krec
Recette seule (livraison par un tiers)
5
Kpatch
Patch / correctif léger
6
Kmini
Charge minimale absolue (validation simple)
Ces noms sont courts, explicites, et parfaitement adaptés à des colonnes MS Project.
Tu m’as donné les pôles suivants :
Infrastructure & Réseaux
Base de données
Intégration & Mise en recette
Gestion des incidents
Je te fournis maintenant
la matrice complète
, phase par phase.
Analyse des impacts infra (serveurs, réseau, stockage)
Estimation des besoins (CPU, RAM, bande passante)
Vérification des contraintes de sécurité
Pré‑dimensionnement des environnements
Analyse des impacts sur les schémas
Vérification des volumes et performances
Identification des risques d’intégrité
Analyse des flux existants
Identification des interfaces impactées
Définition du périmètre d’intégration
Analyse des risques opérationnels
Préparation du plan de support projet
Conception des environnements (DEV, INT, REC, PROD)
Définition des règles de firewalling
Conception des architectures techniques
Conception des évolutions de schéma
Définition des index, partitions, contraintes
Modélisation des flux de données
Spécifications des interfaces
Définition des formats d’échange
Conception des scénarios d’intégration
Mise à jour des procédures d’exploitation
Définition des règles de supervision
Création des environnements
Configuration réseau / firewall
Installation des composants techniques
Création / modification des schémas
Chargement des données de référence
Tests de performance DB
Développement des interfaces
Paramétrage des connecteurs
Tests d’intégration bout‑en‑bout
Préparation du support N2
Mise en place des alertes
Stabilisation des environnements
Support aux anomalies techniques
Ajustements de configuration
Correction des anomalies DB
Optimisation des requêtes
Support aux tests fonctionnels
Exécution des tests d’intégration
Correction des anomalies
Qualification des flux
Suivi des tickets
Analyse des incidents récurrents
Support technique aux équipes métier
Analyse des logs
Correction des incidents infra
Support aux tests fonctionnels
Correction des anomalies SQL
Vérification des performances
Support aux tests métier
Correction des flux
Qualification finale
Suivi des incidents
Préparation du Go/No Go
Déploiement des composants
Ouverture des flux réseau
Vérification post‑MEP
Exécution des scripts SQL
Migration des données
Vérification de cohérence
Activation des interfaces
Tests post‑MEP
Stabilisation
Support J0/J1
Suivi des incidents
Passage en RUN
Je peux te produire :
une
matrice complète
(Kmax → Kmini × 6 phases × 4 pôles)
ou une
version chiffrée
(jours/homme par macro‑tâche)
ou une
version MS Project prête à importer
👉
Dis‑moi ce que tu veux :
La matrice complète ?
La version chiffrée ?
La version MS Project ?
Parfait — j’intègre
le pôle Cybersécurité
dans toute la structure précédente, en respectant la même logique :
macro‑tâches par phase
,
cohérence avec les autres pôles
,
applicabilité aux scénarios Kmax / Kext / Kbuild / Krec / Kpatch / Kmini
.
Voici la version
mise à jour et complète
.
Analyse des risques cyber liés au projet
Vérification des exigences SSI (ANSSI, internes, RGPD)
Identification des données sensibles manipulées
Définition des contraintes de sécurité (authentification, chiffrement, journalisation)
Pré‑évaluation des impacts sur les habilitations
Conception des contrôles de sécurité (IAM, MFA, RBAC)
Définition des exigences de chiffrement (au repos / en transit)
Conception des journaux de sécurité (SIEM, audit)
Analyse de conformité (RGPD, politique interne SSI)
Validation des architectures techniques sous l’angle sécurité
Configuration des contrôles de sécurité (pare‑feu applicatif, WAF, IAM)
Mise en place des journaux de sécurité
Tests de vulnérabilité (scans automatiques)
Vérification des certificats, clés, secrets
Participation aux tests d’intégration pour valider les flux sécurisés
Support aux anomalies de sécurité
Vérification de la conformité des environnements de recette
Tests de sécurité complémentaires (ex. tests d’intrusion internes)
Analyse des logs de sécurité
Validation des habilitations et rôles utilisateurs
Support aux tests métier sur les aspects sécurité
Vérification des comportements anormaux (logs, alertes)
Tests d’accès, permissions, rôles
Validation finale des exigences SSI
Préparation du dossier de sécurité pour le Go/No Go
Validation des configurations de sécurité en PROD
Activation des journaux et alertes SIEM
Vérification des certificats et secrets en PROD
Contrôle des habilitations finales
Suivi des incidents de sécurité J0/J1
Passage en RUN avec le pôle gestion des incidents
Tu as maintenant une matrice complète pour :
Infrastructure & Réseaux
Base de données
Intégration & Mise en recette
Gestion des incidents
Cyber
←
amille de cas de charge est représentative d’un portefeuille IT moderne
, et elle couvre l’immense majorité des situations rencontrées dans les DSI.
Ensuite, je te propose une
matrice d’aide à la décision
claire et opérationnelle.
Les 6 scénarios que tu proposes correspondent très bien aux typologies de projets observées dans les portefeuilles IT.
Les sources sur la gestion de portefeuille de projets (PPM) insistent sur la
diversité des charges
, la
priorisation
, et la
répartition des ressources
comme enjeux majeurs
.
Ton modèle répond précisément à ce besoin : il segmente les projets selon
l’effort interne
,
l’externalisation
, et
la complexité
, ce qui est cohérent avec les pratiques PPM.
Il couvre
toutes les tailles de projets
: du patch (Kpatch) au projet complet (Kmax).
Il distingue
les modes d’externalisation
: conception (Kext) vs développement (Kbuild).
Il inclut les cas fréquents de
recette seule
(Krec) dans les organisations multi‑prestataires.
Il prévoit les
micro‑charges
(Kmini), souvent oubliées mais très nombreuses dans un portefeuille.
Il est
simple, mémorisable, actionnable
, ce qui est essentiel pour un outil PPM efficace.
En résumé :
oui, c’est représentatif, équilibré et exploitable en production
.
Voici une matrice simple, basée sur 5 critères clés :
Complexité du besoin
Disponibilité interne
Expertise requise
Niveau d’externalisation souhaité
Importance du contrôle interne
Critère
Kmax
Kext
Kbuild
Krec
Kpatch
Kmini
Complexité du projet
Haute
Moyenne/haute
Moyenne
Faible
Très faible
Minime
Charge interne disponible
Forte
Faible
Moyenne
Très faible
Très faible
Quasi nulle
Expertise interne
Présente
Insuffisante en conception
Insuffisante en développement
Non nécessaire
Présente
Présente
Externalisation souhaitée
Aucune
Conception
Développement
Livrable complet
Aucune
Aucune
Contrôle interne requis
Maximum
Moyen
Fort sur la conception
Faible
Maximum
Maximum
Exemples typiques
Projet SI complet
UX/Conception métier externalisée
Dev mobile/API externalisé
Recette d’un module livré par un tiers
Correctif mineur
Validation simple
Le projet couvre
tout le cycle de vie
.
Tu veux
tout garder en interne
.
Le périmètre est
stratégique
.
Tu manques d’expertise en
conception
.
Tu veux accélérer la phase amont.
Le développement reste interne.
Tu maîtrises la
conception
.
Tu veux externaliser uniquement le
build
.
Tu as besoin d’absorber un pic de charge.
Un tiers livre un composant.
Tu dois faire
uniquement la recette
.
Le périmètre est limité.
C’est un
correctif léger
, isolé.
Le risque est faible.
Le délai est court.
Il s’agit d’une
validation simple
.
Charge < 1 jour.
Pas d’impact transverse.
.
-------------------------
------------------------------
Kmini — Micro‑charges récurrentes
Interventions très courtes (quelques minutes à quelques heures) : correctifs mineurs, ajustements, paramétrages, petites demandes.
➜ Souvent nombreuses, consomment du temps, rarement budgétées.
Kpatch — Patch correctif ou évolutif léger
Une petite évolution ou correction nécessitant un peu d’analyse, un dev simple et une recette rapide.
➜ Charge faible mais structurée, typique des cycles de maintenance.
Krec — Recette seule
Cas où un prestataire livre, et l’équipe interne ou un autre prestataire réalise uniquement la validation.
➜ Très fréquent en organisation multi‑fournisseurs.
Kext — Conception externalisée
Le prestataire réalise l’analyse, la conception fonctionnelle/technique, parfois le cadrage.
➜ Utile quand l’expertise métier ou technique est externalisée.
Kbuild — Développement externalisé
Le prestataire réalise le développement complet, sur base d’une conception fournie.
➜ Cas standard dans les modèles Build/Run ou Build/Operate.
Kmax — Projet complet
Projet structuré incluant cadrage, conception, build, tests, déploiement, conduite du changement.
➜ Le “gros projet” classique, avec gouvernance et planning.
' Fusion TdB Parcourir le TdB (central PMO) et mettre à jour si la clé existe
For iTdB = 2 To lastRow_PMO
cléUnique = CStr(xlWorksheetTdB_PMO.Cells(iTdB, 3).Value) ' Colonne C
If dict.Exists(cléUnique) Then
commentaire_PMO = Trim(CStr(xlWorksheetTdB_PMO.Cells(iTdB, 3).Value))
commentaire_Pole = Trim(CStr(xlWorksheetTdB_Pole.Cells(dict(cléUnique), 3).Value))
' --- Conditions pour éviter les doublons ---
If commentaire_Pole <> "" Then
' 1. Si identique → on ignore
If StrComp(commentaire_PMO, commentaire_Pole, vbTextCompare) <> 0 Then
' 2. Si déjà présent dans PMO → on ignore
If InStr(1, commentaire_PMO, commentaire_Pole, vbTextCompare) = 0 Then
' 3. Ajouter uniquement ce qui est différent
If commentaire_PMO = "" Then
xlWorksheetTdB_PMO.Cells(iTdB, 3).Value = commentaire_Pole
Else
xlWorksheetTdB_PMO.Cells(iTdB, 3).Value = commentaire_PMO & vbCrLf & commentaire_Pole
End If
End If
End If
End If
' Marquer comme traité
dict.Remove cléUnique
End If
Next iTdB
--------------------------------
montrer clairement à ton sous‑traitant SI :
l’absence de portefeuille projets,
l’absence de visibilité transverse,
l’absence de gouvernance,
les impacts sur le pilotage,
et la nécessité d’une interface unifiée (Excel / Tableau / UniPPM).
Chaque point clé commence par un
Guided Link
, comme demandé.
Aucun portefeuille projets consolidé
Les projets sont suivis individuellement, dans des fichiers locaux.
Impossible d’avoir une vision globale du SI.
Pas de visibilité transverse
Chaque équipe suit ses actions sans coordination globale.
Pas de vue d’ensemble sur les dépendances entre projets.
Priorisation binaire “Urgent / Non urgent”
Aucun critère métier, SI, charge ou risque.
Pilotage très court‑termiste, réactif, subi.
Données dispersées
EasyVista → demandes, changements, incidents.
MS Project → plannings individuels.
Excel → suivis locaux non synchronisés.
Manque d’anticipation
: pas de projection des charges, pas de vision long terme.
Décisions tardives
: arbitrages faits trop tard, souvent en mode crise.
Surcharge des équipes
: mauvaise répartition des charges.
Pas de définition d’équipe projet en début de projet
Rôles flous, responsabilités implicites.
Pas de RACI formalisé
Qui décide ? Qui valide ? Qui exécute ?
Ambiguïtés permanentes dans les responsabilités.
Peu ou pas de rituels projet
Pas de comité de pilotage régulier.
Pas de points d’avancement structurés.
Pas de suivi des risques.
Pas de jalons formalisés
Recette, MEP, intégration suivies de manière informelle.
Pas de suivi des charges
Aucune visibilité sur la capacité réelle des équipes DSI.
Pas de gestion des dépendances
Les projets se bloquent mutuellement sans anticipation.
Retards récurrents
Conflits de priorités
Difficulté à engager les équipes
Créer un portefeuille projets SI consolidé
Vue unique : priorités, jalons, charges, risques.
Donner une visibilité transverse
Dépendances, impacts, arbitrages.
Structurer la gouvernance projet
RACI, rituels, jalons, reporting.
Anticiper les charges et les risques
Capacité DSI vs demande réelle.
ITSM EasyVista
: demandes, changements, incidents liés aux projets.
MS Project
: jalons, plannings, dépendances.
Excel/Tableau
: consolidation, visualisation, priorisation.
Pilotage prévisible et non réactif
Meilleure allocation des ressources
Réduction des urgences subies
Vision stratégique du SI
---------------------------------------------------
Complexité : doublon entre 0 pt et 1 pt
Tu as raison, il y avait une ambiguïté. Je vais corriger la matrice pour clarifier :
• 1 pt = faible impact / fort effort
• 0 pt = faible impact / faible effort
Pertinence d’intégrer Complexité et Risques dans la priorité
L’objectif n’est pas de dire qu’un sujet complexe est “plus important”, mais de combiner l’impact métier avec la faisabilité. À impact égal, traiter d’abord les sujets moins complexes ou moins risqués permet d’optimiser l’écoulement du portefeuille et d’éviter les blocages. C’est la logique classique Impact / Effort utilisée en pilotage DSI.
Effet corollaire : une DDC complexe peut passer avant une DDC simple
Oui, dans certains cas : lorsqu’un sujet complexe présente un risque ou une criticité qui justifie un traitement anticipé. Cela permet d’éviter qu’un point bloquant ne pénalise d’autres demandes. Mais ce cas reste marginal et dépend du score global.
----------------------------
dans le détail
C’est ici que tu peux apporter une réponse solide et argumentée.
Dans une DSI, deux demandes peuvent avoir
le même impact métier
, mais :
l’une est simple, rapide, peu risquée,
l’autre est complexe, longue, risquée.
Si tu ne tiens compte que de l’impact, tu risques de :
bloquer des ressources sur un sujet lourd,
retarder des gains rapides,
créer un portefeuille déséquilibré.
Tu ne dis pas : “un sujet complexe est plus important”.
Tu dis : “à impact égal, il est rationnel de traiter d’abord ce qui débloque le plus de valeur pour le moins d’effort”.
C’est exactement la logique
Impact / Effort
utilisée dans :
les matrices de priorisation Lean,
les backlog Agile,
les arbitrages PMO.
Un sujet risqué doit parfois être traité
plus tôt
, non pas parce qu’il est important, mais parce qu’il peut :
bloquer d’autres projets,
nécessiter des arbitrages,
demander des ressources rares.
Donc oui :
un sujet complexe ou risqué peut être prioritaire
, non pas pour sa valeur, mais pour sa
criticité opérationnelle
.
Tu peux proposer une version plus lisible :
3 pts
— Fort impact / Effort faible ou modéré
2 pts
— Fort impact / Effort fort
1 pt
— Faible impact / Effort fort
0 pt
— Faible impact / Effort faible
Cela supprime l’ambiguïté relevée par Christophe.
Pour éviter la confusion, tu peux présenter la logique ainsi :
Impact opérationnel
= importance métier
Complexité + Risques
= faisabilité / pilotage
Et expliquer que la
priorité finale
= combinaison des deux.
Tu peux intégrer une phrase comme :
La priorité combine l’impact métier et la faisabilité. À impact égal, les demandes moins complexes ou moins risquées sont favorisées pour optimiser l’écoulement du portefeuille.
Pour rendre la logique évidente :
Demande
Impact
Complexité
Risques
Score
Priorité
A – Gros projet structurant
3
1
1
5
P2
B – Petite évolution très utile
3
3
3
9
P2 (haut)
C – Correction critique
3
3
2
8
P2 (haut)
→ On voit que
l’impact ne suffit pas
: la faisabilité influence la priorisation.
------------------------------------
GESTION DES RISQUES
Technique – Applicatif
Technique – Infrastructure
Technique – Réseau
Technique – Cyber / Sécurité
Organisationnel
Qualité
Coût
Délai
Ressource / Homme clé
Fournisseur / Prestataire
Réglementaire / Conformité
Tu
sépares clairement
les risques techniques selon leur nature.
Tu couvres les risques modernes (cyber, conformité).
Tu facilites l’analyse des causes et l’attribution des actions (infra ≠ réseau ≠ cyber).
Tu améliores la lisibilité pour le COPIL et les équipes MOE.
(Version enrichie ci‑dessus)
1 Rare
2 Improbable
3 Possible
4 Probable
5 Certaine
👉 Cohérent, rien à changer.
1 Nul
2 Faible
3 Moyen
4 Élevé
5 Très élevé
👉 Parfait.
Optionnel : ajouter une grille d’impact (retard, coût, qualité).
Mineur
Moyen
Majeur
Capital
👉 Standard et efficace.
Optionnel : automatiser via P × I.
1 Facile
2 Moyenne
3 Difficile
👉 Tu peux renommer en “Complexité” si tu veux être plus explicite.
1 Non lancée
2 En cours
3 En attente
4 Terminée
5 Bloquée
(ajout recommandé)
6 Abandonnée
(optionnel)
👉 “Bloquée” est très utile pour le COPIL.
1 Nouveau
2 Stable
3 Amélioration
4 Dégradation
5 Résolu
(optionnel)
👉 “Résolu” permet de marquer la fin du risque.
Oui
Non
À décider
(optionnel)
👉 Utile pour les zones grises.
La gestion des risques permet d’anticiper les menaces, de sécuriser les délais et de garantir la réussite du projet.
Un risque non géré devient un incident. Ce tableau structure l’identification, l’évaluation et le traitement des risques pour assurer un pilotage maîtrisé.
Ce tableau offre une vision claire des risques critiques, des actions engagées et des décisions à prendre pour protéger le projet.
Identifier tôt, traiter vite, suivre régulièrement : la gestion des risques est un outil collectif pour éviter les dérives.
----------------------------------------
VBA maj affichage des livrables entre -4 et +12S
✔ un
code VBA propre et robuste
✔ une
gestion des erreurs
✔ un
rafraîchissement automatique dès qu’une date change
✔ la
mise à jour automatique de la ligne 1
(S-4 → S+12)
✔ la
coloration dynamique
(mauve, bleu, vert, jaune clair)
✔ une structure claire, commentée et maintenable
Tu peux coller ce code
tel quel
dans ton fichier Excel.
À placer dans
Module1
Option Explicit
Sub MAJ_TdB_Livrables()
On Error GoTo GestionErreur
Dim ws As Worksheet
Dim lastRow As Long, lastCol As Long
Dim i As Long, col As Long
Dim dateRef As Date, dateReelle As Date
Dim semaineRef As Long, semaineReelle As Long
Dim semaineCourante As Long
Dim dateDebut As Date
' --- Paramétrage ---
Set ws = ThisWorkbook.Sheets("TdB") ' <-- adapte le nom de ta feuille
lastCol = 8 + 16 ' Colonnes S-4 à S+12
' -------------------------------
' 1. Mise à jour de la ligne 1 : semaines S-4 à S+12
' -------------------------------
semaineCourante = WorksheetFunction.WeekNum(Date, vbMonday)
dateDebut = Date - 28 ' 4 semaines en arrière
For col = 8 To lastCol
ws.Cells(1, col).Value = "S" & WorksheetFunction.WeekNum(dateDebut, vbMonday)
ws.Cells(1, col).Interior.ColorIndex = xlNone
dateDebut = dateDebut + 7
Next col
' Coloration de la semaine courante
For col = 8 To lastCol
If ws.Cells(1, col).Value = "S" & semaineCourante Then
ws.Cells(1, col).Interior.Color = RGB(255, 255, 150) ' jaune clair
End If
Next col
' -------------------------------
' 2. Coloration des lignes selon dates
' -------------------------------
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
' Lecture sécurisée des dates
dateRef = 0: dateReelle = 0
If IsDate(ws.Cells(i, 6).Value) Then dateRef = ws.Cells(i, 6).Value
If IsDate(ws.Cells(i, 7).Value) Then dateReelle = ws.Cells(i, 7).Value
' Nettoyage des couleurs
For col = 8 To lastCol
ws.Cells(i, col).Interior.ColorIndex = xlNone
Next col
' Si pas de date → ligne ignorée
If dateRef = 0 And dateReelle = 0 Then GoTo LigneSuivante
' Conversion en semaines
If dateRef > 0 Then semaineRef = WorksheetFunction.WeekNum(dateRef, vbMonday)
If dateReelle > 0 Then semaineReelle = WorksheetFunction.WeekNum(dateReelle, vbMonday)
' --- Mauve = semaine de référence ---
If dateRef > 0 Then
For col = 8 To lastCol
If ws.Cells(1, col).Value = "S" & semaineRef Then
ws.Cells(i, col).Interior.Color = RGB(200, 150, 255)
End If
Next col
End If
' --- Bleu = semaine réelle ---
If dateReelle > 0 Then
For col = 8 To lastCol
If ws.Cells(1, col).Value = "S" & semaineReelle Then
ws.Cells(i, col).Interior.Color = RGB(150, 200, 255)
End If
Next col
End If
' --- Vert = dates identiques ---
If dateRef = dateReelle And dateRef > 0 Then
For col = 8 To lastCol
If ws.Cells(1, col).Value = "S" & semaineRef Then
ws.Cells(i, col).Interior.Color = RGB(150, 255, 150)
End If
Next col
End If
LigneSuivante:
Next i
Exit Sub
GestionErreur:
MsgBox "Erreur détectée : " & Err.Description, vbCritical, "Erreur VBA"
End Sub
À placer dans le module de la feuille :
Feuille TdB → clic droit → Afficher le code
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
' Si modification dans les colonnes 6 ou 7 (dates)
If Not Intersect(Target, Me.Range("F:F,G:G")) Is Nothing Then
Application.EnableEvents = False
Call MAJ_TdB_Livrables
End If
Fin:
Application.EnableEvents = True
End Sub
Dès que l’utilisateur modifie une date en colonne 6 ou 7
→ le tableau se
recalcule automatiquement
→ les couleurs se mettent à jour
→ la ligne 1 reste cohérente
→ aucun risque de boucle infinie grâce à
EnableEvents
Tu obtiens :
un tableau
auto‑actualisé
une ligne 1 toujours à jour (S-4 → S+12)
une mise en évidence automatique de la semaine courante
une coloration intelligente des livrables
une gestion des erreurs propre
un rafraîchissement instantané dès qu’une date change
----------------------------------------------------
--------------------------------------------
import gz csv xlsx x5
module unique
, complet, clair, structuré, contenant
tout
:
le tableau des 5 fichiers attendus
la boucle
le traitement générique
la décompression
la conversion CSV → XLSX
le renommage automatique
et la fonction utilitaire
Tu n’auras
qu’un seul module
dans ton projet VBA, facile à lire et à maintenir.
(Tu peux le nommer :
Module_Import_ITSM_Compressed
)
Option Explicit
' ============================================================
' MODULE UNIQUE : Importation ITSM de 5 fichiers compressés
' Décompression → Renommage → CSV → XLSX → Ouverture
' ============================================================
Sub Import_ITSM_All()
Dim ExpectedNames As Variant
Dim ExpectedName As Variant
' Tableau des 5 fichiers attendus
ExpectedNames = Array( _
"Export_DS_non_clotures", _
"Export_DDC", _
"Export_INC", _
"Export_PROBLEMS", _
"Export_CHG")
' Boucle sur les 5 fichiers
For Each ExpectedName In ExpectedNames
Call ImportOneCompressedFile(ExpectedName)
Next ExpectedName
MsgBox "Import ITSM terminé pour les 5 fichiers.", vbInformation
End Sub
' ============================================================
' TRAITEMENT D’UN FICHIER COMPRESSÉ
' ============================================================
Sub ImportOneCompressedFile(ExpectedName As String)
Dim FileCompressed As Variant
Dim ExtractFolder As String
Dim ExtractedFile As String
Dim f As String
Dim CSVFile As String, XLSXFile As String
MsgBox "Sélectionner le fichier compressé correspondant à : " & ExpectedName, vbInformation
' 1. Sélection du fichier compressé
FileCompressed = Application.GetOpenFilename( _
"Fichiers compressés (*.zip;*.gz;*.7z;*.tar;*.tar.gz;*.xz;*.Z;*.JZ), *.zip;*.gz;*.7z;*.tar;*.tar.gz;*.xz;*.Z;*.JZ")
If FileCompressed = False Then Exit Sub
' 2. Dossier temporaire
ExtractFolder = Environ("TEMP") & "\Extract_ITSM\"
On Error Resume Next: MkDir ExtractFolder: On Error GoTo 0
' 3. Décompression via PowerShell
Shell "powershell -command ""Expand-Archive -LiteralPath '" & FileCompressed & _
"' -DestinationPath '" & ExtractFolder & "' -Force""", vbHide
Application.Wait Now + TimeValue("0:00:02")
' 4. Récupération du fichier extrait
f = Dir(ExtractFolder & "*.*")
If f = "" Then
MsgBox "Aucun fichier extrait pour " & ExpectedName, vbCritical
Exit Sub
End If
ExtractedFile = ExtractFolder & f
' 5. Renommage selon le nom attendu
ExtractedFile = RenameIfNeeded(ExtractedFile, ExpectedName)
' 6. Conversion en CSV
Workbooks.Open ExtractedFile
ActiveWorkbook.SaveAs Replace(ExtractedFile, ".txt", ".csv"), xlCSV
ActiveWorkbook.Close False
CSVFile = Replace(ExtractedFile, ".txt", ".csv")
' 7. Conversion CSV → XLSX
Workbooks.Open CSVFile
ActiveWorkbook.SaveAs Replace(CSVFile, ".csv", ".xlsx"), xlOpenXMLWorkbook
ActiveWorkbook.Close False
XLSXFile = Replace(CSVFile, ".csv", ".xlsx")
' 8. Appel de ton code existant (inchangé)
Set xlWorkbookDemandesdeservice = Workbooks.Open(XLSXFile)
End Sub
' ============================================================
' FONCTION DE RENOMMAGE AUTOMATIQUE
' ============================================================
Function RenameIfNeeded(ByVal FullPath As String, ByVal ExpectedName As String) As String
Dim Folder As String, Ext As String, NewPath As String
Folder = Left(FullPath, InStrRev(FullPath, "\"))
Ext = Mid(FullPath, InStrRev(FullPath, "."))
NewPath = Folder & ExpectedName & Ext
If LCase(Dir(FullPath)) <> LCase(ExpectedName & Ext) Then
Name FullPath As NewPath
End If
RenameIfNeeded = NewPath
End Function
Un seul endroit
où tout est centralisé
Aucune duplication
Ajout d’un fichier = 1 ligne dans le tableau
Lisibilité maximale
Maintenance ultra simple
Architecture professionnelle
-------------------------------------------------------
-----------------------------------------------------
defition priorités
Score
Niveau
Définition
3 points
Projet stratégique
Contribue directement à un axe stratégique de l’entreprise
2 points
Projet important pour l’activité
Aligné avec une priorité métier/DSI, impact significatif
1 point
Projet utile mais local
Impact limité, amélioration utile mais non prioritaire
0 point
Projet non aligné
Pas de contribution aux priorités, demande opportuniste
Projet qui améliore clairement un processus important ou touche un périmètre large (plusieurs équipes, un service entier, une activité clé).
C’est
important
, mais pas stratégique.
Projet qui apporte une amélioration utile, mais sur un périmètre restreint (une équipe, un usage ponctuel, un confort local).
C’est
utile
, mais pas prioritaire.
Projet qui n’apporte pas de valeur métier identifiable ou qui ne répond à aucune priorité.
-------------------------------------------------------------
---------------------------------------------------------
pres
6 cas types (Kmax, Kext, Kbuild, Krec, Kpatch, Kmini)
et la
méthode d’identification des 4 macro‑tâches par pôle (Infra Réseaux, BDD, Cyber, Intégration)
pour chaque phase projet IT.
Je te fournis un
contenu directement utilisable dans PowerPoint
, structuré, clair, et orienté PMO/PLO.
Faible culture projet → pratiques hétérogènes, estimations incohérentes.
Difficulté à anticiper les charges par pôle DSI.
Absence de référentiel commun pour cadrer les demandes.
Priorisation difficile faute de visibilité sur la capacité réelle.
Objectif global
Mettre en place un
référentiel de cas types de charge
pour fiabiliser le portefeuille projets.
Kmini
— Micro‑intervention (quelques minutes à quelques heures).
Kpatch
— Patch correctif ou évolutif léger.
Krec
— Recette seule (validation interne).
Kext
— Conception externalisée.
Kbuild
— Développement externalisé.
Kmax
— Projet complet (cadrage → MEP).
Intérêt
: homogénéiser les estimations, clarifier les périmètres, faciliter les arbitrages.
Inventaire des activités
par pôle DSI.
Définition des phases projet
(Cadrage, Conception, Build, Recette, MEP).
Identification des 4 macro‑tâches
par pôle et par phase.
Calibrage des charges
pour chaque cas type.
Validation avec les responsables de pôle
.
Intégration au portefeuille
.
Cadrage
: besoin, périmètre, risques, dépendances.
Conception
: fonctionnelle, technique, sécurité, architecture.
Build
: dev, paramétrage, intégration, tests techniques.
Recette
: tests métier, corrections, validation.
MEP
: déploiement, supervision, documentation, transfert.
Chaque pôle contribue différemment selon la phase → d’où la nécessité des macro‑tâches.
Pour chaque
pôle
(Infra Réseaux, BDD, Cyber, Intégration) et pour chaque
phase
, on identifie :
Analyse / Diagnostic
Comprendre l’impact, les prérequis, les risques.
Conception / Préparation
Spécifications techniques, règles, configurations.
Réalisation / Exécution
Paramétrage, dev, scripts, configurations, intégrations.
Contrôles / Validation
Tests techniques, sécurité, performance, conformité.
Cette structure s’applique
à tous les cas types
, avec une intensité variable.
Cadrage
Analyse des impacts réseau
Pré‑design architecture
Estimation des besoins
Validation faisabilité
Conception
Design détaillé
Plan d’adressage / VLAN
Règles firewall
Documentation technique
Build
Configurations équipements
Mise en place tunnels / VPN
Tests de connectivité
Intégration avec autres pôles
Recette
Tests de charge
Tests de sécurité réseau
Ajustements
PV de validation
MEP
Bascule réseau
Supervision
Rollback plan
Documentation finale
Cadrage
Analyse volumétrie
Contraintes performance
Impacts sur schémas existants
Risques
Conception
Modélisation BDD
Scripts DDL
Stratégie indexation
Plan de migration
Build
Création tables / vues
Procédures stockées
Optimisation requêtes
Tests techniques
Recette
Jeux de données
Tests de performance
Corrections
PV recette BDD
MEP
Migration données
Vérifications post‑MEP
Monitoring
Documentation
Cadrage
Analyse risques
Exigences SSI
Conformité réglementaire
Pré‑conseils sécurité
Conception
Revue architecture
Règles IAM / MFA
Politique de chiffrement
Plan de tests sécurité
Build
Paramétrage IAM
Tests vulnérabilités
Revue code sécurité
Intégration SOC
Recette
Tests intrusion
Vérification conformité
Corrections
PV sécurité
MEP
Validation finale SSI
Monitoring sécurité
Journalisation
Documentation SSI
Cadrage
Analyse interfaces existantes
Dépendances inter‑systèmes
Risques d’intégration
Estimation charges
Conception
Mapping données
Spécifications d’API
Formats d’échange
Scénarios d’intégration
Build
Développement interfaces
Tests unitaires
Tests d’intégration
Gestion des erreurs
Recette
Tests bout‑en‑bout
Jeux de données
Corrections
PV recette intégration
MEP
Activation flux
Supervision
Gestion incidents
Documentation
Cas type
Phases concernées
Intensité macro‑tâches
Kmini
Build
Très léger (1 à 2 macro‑tâches)
Kpatch
Analyse + Build + Recette
Léger mais structuré
Krec
Recette
Validation uniquement
Kext
Cadrage + Conception
Forte charge conception
Kbuild
Build + Recette
Forte charge réalisation
Kmax
Toutes phases
Charge complète sur tous les pôles
Résultat attendu
→ Un modèle homogène, défendable, industrialisable pour tout le portefeuille projets.
----------------------------------
---------------------------
Le pourquoi de cette démarche cas de charge en 5 slides
proposition structurée de contenu
pour un
jeu de 3 à 5 slides PowerPoint
, parfaitement adaptée à ton contexte : culture projet faible, rôle de PLO/PMO, construction d’un portefeuille projets, et introduction des
cas types de charge
par pôle DSI.
Je te propose un
contenu directement intégrable
, clair, structuré, et orienté décision — exactement ce qu’il faut pour convaincre les responsables de pôles.
Contexte DSI
Faible culture projet, pratiques hétérogènes, absence de référentiel commun.
Difficulté à estimer les charges, à prioriser et à arbitrer.
Manque de visibilité transverse sur les capacités réelles des pôles.
Objectif
Construire un
portefeuille projets fiable
, pilotable et partagé.
Introduire des
cas types de charge
pour homogénéiser les estimations.
Enjeux pour la DSI
Meilleure anticipation des charges.
Alignement entre besoins métiers et capacités réelles.
Réduction des dérives, tensions et urgences.
Vision commune
— Un langage partagé entre MOA, DSI, prestataires.
Estimation fiable
— Des charges cohérentes, comparables, défendables.
Capacité maîtrisée
— Projection des charges par pôle, arbitrage facilité.
Planification réaliste
— Meilleure gestion des pics d’activité.
Pilotage portefeuille
— Priorisation basée sur impact, complexité et capacité réelle.
Réduction des tensions
— Moins de demandes “urgentes”, plus de prévisibilité.
Étape 1 : Analyse existant
Inventaire des activités par pôle, typologie des demandes, temps moyens constatés.
Étape 2 : Définition des cas types
6 cas types : Kmini, Kpatch, Krec, Kext, Kbuild, Kmax.
Définition des périmètres, livrables, acteurs impliqués.
Étape 3 : Calibrage des charges
3 macro‑tâches par phase × par pôle → charge standardisée.
Étape 4 : Validation par pôle
Ajustements selon contraintes techniques, organisationnelles, outils.
Étape 5 : Intégration au portefeuille
Application aux projets en cours et à venir.
Activités récurrentes
: corrections, paramétrages, support, petites évolutions.
Activités projet
: conception, build, tests, MEP, documentation.
Contraintes spécifiques
: outils, compétences rares, dépendances externes.
Capacité réelle
: disponibilité, charge run, saisonnalité.
Livrables attendus
: ce que le pôle produit réellement dans chaque cas type.
Rôles et responsabilités
: interactions MOA, PMO, prestataires.
Portefeuille structuré
: visibilité claire des projets, priorités, dépendances.
Charges maîtrisées
: moins d’imprévus, meilleure allocation des ressources.
Capacité projet vs run
: arbitrage facilité.
Meilleure relation métier
: engagements réalistes, délais tenables.
Industrialisation
: modèle reproductible, utilisable pour tous les projets.
------------------------------------------------------------------------------
----------------------------------------------------------------------------
Synthèse stratégique – Construction des cas types de charge
La DSI doit aujourd’hui fiabiliser l’estimation des charges et disposer d’un langage commun pour cadrer les demandes. Les pratiques actuelles sont hétérogènes, les périmètres souvent flous, et la priorisation difficile faute de visibilité sur la capacité réelle des pôles.
La démarche engagée vise à structurer un référentiel de cas types (Kmini, Kpatch, Krec, Kext, Kbuild, Kmax) couvrant l’ensemble des situations rencontrées dans les projets SI et métiers. Pour chaque phase projet (Cadrage, Conception, Build, Recette, MEP), nous avons identifié 4 macro‑tâches par pôle (Infra Réseaux, BDD, Cyber, Intégration) : Analyse, Conception, Réalisation, Contrôles.
Ce modèle permet :
d’homogénéiser les estimations,
de clarifier les contributions de chaque pôle,
de rendre les arbitrages plus objectifs,
d’industrialiser la construction des plannings cas type pour le portefeuille projets.
-------------------------------------------------------------------------------------xxxxx
maj Absences effectif
Afficher mes réflexions
Tu as déjà fait un gros morceau de boulot dans ton premier module—on va rester dans la même logique, mais rendre ça plus générique et piloté par boîte de dialogue.
Je te propose un module VBA complet, structuré, que tu pourras adapter à la structure exacte de tes fichiers sources (ISR, IAL, SMA, CYBER) et à ta feuille Absences dans ton interface.
Exemple de logique déjà présente dans ton code : If Weekday(xlWorksheet.Cells(5, j + startColumn_MV).value, vbMonday) <= 5 Then nbre_personnes_dispo = Nbre_personnes_equipe - nbre_non_vides
vba
Option Explicit
Sub MAJ_Absences_2026()
Dim fd As FileDialog
Dim dossierSource As String
Dim wbDest As Workbook
Dim wsAbs As Worksheet
' Classeur interface (destinataire)
Set wbDest = ThisWorkbook
Set wsAbs = wbDest.Worksheets("Absences")
' Boîte de dialogue pour choisir le répertoire contenant les fichiers ISR / IAL / SMA / CYBER
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "Sélectionner le dossier contenant les fichiers d'absences (ISR, IAL, SMA, CYBER)"
If .Show <> -1 Then
MsgBox "Aucun dossier sélectionné. Macro interrompue.", vbExclamation
Exit Sub
End If
dossierSource = .SelectedItems(1)
End With
Application.ScreenUpdating = False
Application.EnableEvents = False
' Nettoyage éventuel des tableaux existants (à adapter si besoin)
Call ClearAbsencesTables(wsAbs)
' Traitement des différents pôles
' 1. Fichier ISR (avec sous-équipes Infra, SR, BD)
Call ProcessISRFile(dossierSource, wsAbs)
' 2. Autres fichiers du même répertoire terminant par _IAL, _SMA, _CYBER
Call ProcessGenericPole(dossierSource, "_IAL", wsAbs)
Call ProcessGenericPole(dossierSource, "_SMA", wsAbs)
Call ProcessGenericPole(dossierSource, "_CYBER", wsAbs)
' Calcul des moyennes hebdomadaires (2e tableau à partir de la ligne 28)
Call ComputeWeeklyAverages(wsAbs)
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox "Mise à jour de la feuille 'Absences' terminée pour l'année 2026.", vbInformation
End Sub
vba
Private Sub ClearAbsencesTables(ws As Worksheet)
' Premier tableau : à partir de la ligne 6 (à adapter selon ton nombre de colonnes)
ws.Range("A6:Z200").ClearContents ' adapte la plage
' Deuxième tableau : à partir de la ligne 28 (moyennes hebdomadaires)
ws.Range("A28:Z200").ClearContents ' adapte la plage
End Sub
On suppose :
Le fichier ISR contient en ligne 3 les numéros de semaine.
La ligne 4 contient les jours (Lundi à Vendredi).
La colonne A contient les appellations de sous-équipes (Infra, SR, BD, etc.).
Les cellules de planning contiennent des codes (X, M, T, etc.). → On ne compte pas une personne présente si la cellule contient X ou M. → Toute autre valeur (y compris vide) est considérée comme présence.
vba
Private Sub ProcessISRFile(dossierSource As String, wsAbs As Worksheet)
Dim nomFichier As String
Dim wbSrc As Workbook
Dim wsSrc As Worksheet
Dim cheminComplet As String
' À adapter : nom du fichier ISR (ou recherche par motif)
nomFichier = Dir(dossierSource & "\*Absences et TLT_ISR*.xls*")
If nomFichier = "" Then
' Fichier non trouvé : on passe sans erreur
Exit Sub
End If
cheminComplet = dossierSource & "\" & nomFichier
Set wbSrc = Workbooks.Open(cheminComplet, ReadOnly:=True)
' À adapter : nom de la feuille dans le fichier ISR
Set wsSrc = wbSrc.Worksheets(1)
' Calcul pour l'année 2026
Call ComputePresenceForYear2026_ISR(wsSrc, wsAbs)
wbSrc.Close SaveChanges:=False
End Sub
Ici, on :
Parcourt toutes les colonnes de planning.
Identifie la semaine via la ligne 3 du fichier source.
Identifie les jours Lundi–Vendredi via la ligne 4.
Pour chaque sous-équipe (Infra, SR, BD), on compte le nombre de personnes présentes par jour, puis on agrège par semaine.
vba
Private Sub ComputePresenceForYear2026_ISR(wsSrc As Worksheet, wsAbs As Worksheet)
Dim lastCol As Long, lastRow As Long
Dim col As Long, row As Long
Dim weekNum As Long
Dim yearVal As Long
Dim dayName As String
Dim teamName As String
Dim presenceCountInfra(1 To 52) As Long
Dim presenceCountSR(1 To 52) As Long
Dim presenceCountBD(1 To 52) As Long
Dim cellVal As Variant
' Détermination des limites
lastCol = wsSrc.Cells(3, wsSrc.Columns.Count).End(xlToLeft).Column
lastRow = wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row
' Boucle sur les colonnes (planning)
For col = 1 To lastCol
' On suppose que la ligne 3 contient une date ou un numéro de semaine
If IsDate(wsSrc.Cells(3, col).Value) Then
yearVal = Year(wsSrc.Cells(3, col).Value)
weekNum = Application.WeekNum(wsSrc.Cells(3, col).Value, vbMonday)
ElseIf IsNumeric(wsSrc.Cells(3, col).Value) Then
' Si tu stockes directement le numéro de semaine
weekNum = CLng(wsSrc.Cells(3, col).Value)
' À adapter si tu as aussi l'année ailleurs
yearVal = 2026
Else
GoTo NextCol_ISR
End If
' On ne traite que l'année 2026
If yearVal <> 2026 Then GoTo NextCol_ISR
If weekNum < 1 Or weekNum > 52 Then GoTo NextCol_ISR
' Jour de la semaine en ligne 4
dayName = CStr(wsSrc.Cells(4, col).Value)
If dayName = "" Then GoTo NextCol_ISR
' On ne prend que Lundi à Vendredi
If Not IsWeekdayFromLabel(dayName) Then GoTo NextCol_ISR
' Boucle sur les lignes (agents / sous-équipes)
For row = 5 To lastRow ' à adapter si tes données commencent plus bas
teamName = CStr(wsSrc.Cells(row, "A").Value)
If teamName <> "" Then
cellVal = wsSrc.Cells(row, col).Value
' Si X ou M => ne pas compter
If UCase(cellVal) <> "X" And UCase(cellVal) <> "M" Then
Select Case UCase(teamName)
Case "INFRA"
presenceCountInfra(weekNum) = presenceCountInfra(weekNum) + 1
Case "SR"
presenceCountSR(weekNum) = presenceCountSR(weekNum) + 1
Case "BD"
presenceCountBD(weekNum) = presenceCountBD(weekNum) + 1
End Select
End If
End If
Next row
NextCol_ISR:
Next col
' Écriture dans la feuille Absences (premier tableau à partir de la ligne 6)
' Exemple :
' Ligne 6 : Infra
' Ligne 7 : SR
' Ligne 8 : BD
' Colonnes : une colonne par semaine (1 à 52)
Dim w As Long
For w = 1 To 52
' Colonne de destination : à adapter
' Supposons que la semaine 1 est en colonne B, semaine 2 en C, etc.
wsAbs.Cells(6, w + 1).Value = presenceCountInfra(w)
wsAbs.Cells(7, w + 1).Value = presenceCountSR(w)
wsAbs.Cells(8, w + 1).Value = presenceCountBD(w)
Next w
End Sub
vba
Private Function IsWeekdayFromLabel(dayLabel As String) As Boolean
Dim d As String
d = UCase(Trim(dayLabel))
Select Case d
Case "LUNDI", "LUN", "LU"
IsWeekdayFromLabel = True
Case "MARDI", "MAR", "MA"
IsWeekdayFromLabel = True
Case "MERCREDI", "MER", "ME"
IsWeekdayFromLabel = True
Case "JEUDI", "JEU", "JE"
IsWeekdayFromLabel = True
Case "VENDREDI", "VEN", "VE"
IsWeekdayFromLabel = True
Case Else
IsWeekdayFromLabel = False
End Select
End Function
Ici, on applique la même logique, mais sans sous-équipes Infra/SR/BD. Tu peux décider :
soit de compter toutes les lignes (toutes personnes),
soit de filtrer par libellés en colonne A si tu as des sous-équipes.
vba
Private Sub ProcessGenericPole(dossierSource As String, suffixe As String, wsAbs As Worksheet)
Dim nomFichier As String
Dim wbSrc As Workbook
Dim wsSrc As Worksheet
Dim cheminComplet As String
nomFichier = Dir(dossierSource & "*" & suffixe & "*.xls*")
If nomFichier = "" Then
' Fichier non trouvé : on passe sans erreur
Exit Sub
End If
cheminComplet = dossierSource & "\" & nomFichier
Set wbSrc = Workbooks.Open(cheminComplet, ReadOnly:=True)
Set wsSrc = wbSrc.Worksheets(1) ' à adapter
' Ici, tu peux soit réutiliser ComputePresenceForYear2026_ISR
' en adaptant les sous-équipes, soit écrire une version simplifiée.
Call ComputePresenceForYear2026_Generic(wsSrc, wsAbs, suffixe)
wbSrc.Close SaveChanges:=False
End Sub
Exemple simple : on compte toutes les personnes présentes (toutes lignes ≠ X/M) par semaine.
vba
Private Sub ComputePresenceForYear2026_Generic(wsSrc As Worksheet, wsAbs As Worksheet, suffixe As String)
Dim lastCol As Long, lastRow As Long
Dim col As Long, row As Long
Dim weekNum As Long, yearVal As Long
Dim dayName As String
Dim cellVal As Variant
Dim presenceCount(1 To 52) As Long
lastCol = wsSrc.Cells(3, wsSrc.Columns.Count).End(xlToLeft).Column
lastRow = wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row
For col = 1 To lastCol
If IsDate(wsSrc.Cells(3, col).Value) Then
yearVal = Year(wsSrc.Cells(3, col).Value)
weekNum = Application.WeekNum(wsSrc.Cells(3, col).Value, vbMonday)
ElseIf IsNumeric(wsSrc.Cells(3, col).Value) Then
weekNum = CLng(wsSrc.Cells(3, col).Value)
yearVal = 2026
Else
GoTo NextCol_Generic
End If
If yearVal <> 2026 Then GoTo NextCol_Generic
If weekNum < 1 Or weekNum > 52 Then GoTo NextCol_Generic
dayName = CStr(wsSrc.Cells(4, col).Value)
If dayName = "" Then GoTo NextCol_Generic
If Not IsWeekdayFromLabel(dayName) Then GoTo NextCol_Generic
For row = 5 To lastRow
cellVal = wsSrc.Cells(row, col).Value
If UCase(cellVal) <> "X" And UCase(cellVal) <> "M" Then
presenceCount(weekNum) = presenceCount(weekNum) + 1
End If
Next row
NextCol_Generic:
Next col
' Écriture dans la feuille Absences
' Exemple : on place ces pôles sur d'autres lignes (à adapter)
Dim baseRow As Long
Select Case suffixe
Case "_IAL": baseRow = 10
Case "_SMA": baseRow = 11
Case "_CYBER": baseRow = 12
Case Else: baseRow = 20
End Select
Dim w As Long
For w = 1 To 52
wsAbs.Cells(baseRow, w + 1).Value = presenceCount(w)
Next w
End Sub
Tu as indiqué :
« Les lignes 3 et lignes 27 de ma feuille destinataire permettent de trouver le numéro de semaine dans le fichier source utiliser les lignes 3 pour le numéro de semaine et la ligne 4 pour identifier les jours de la semaine du lundi au vendredi. [...] L'effectif moyen de la semaine 27 apparaîtra en ligne 31 dans la colonne trouvant la valeur 27 en ligne 27 pour le numéro de semaine. »
On va donc :
Lire la ligne 27 pour trouver les numéros de semaine.
Pour chaque semaine, prendre la valeur du premier tableau (par exemple ligne 7 pour Infra/SR/BD, etc.), la diviser par 5 (5 jours), et l’écrire dans le 2e tableau.
vba
Private Sub ComputeWeeklyAverages(wsAbs As Worksheet)
Dim lastCol As Long
Dim col As Long
Dim weekNum As Long
' Ligne 27 : numéros de semaine
lastCol = wsAbs.Cells(27, wsAbs.Columns.Count).End(xlToLeft).Column
Dim avgRowInfra As Long, avgRowSR As Long, avgRowBD As Long
avgRowInfra = 31 ' à adapter
avgRowSR = 32
avgRowBD = 33
For col = 2 To lastCol ' en supposant que les semaines commencent en colonne B
If IsNumeric(wsAbs.Cells(27, col).Value) Then
weekNum = CLng(wsAbs.Cells(27, col).Value)
' Exemple : on suppose que le premier tableau a les totaux hebdo en lignes 6, 7, 8
' On calcule la moyenne sur 5 jours
If weekNum >= 1 And weekNum <= 52 Then
If wsAbs.Cells(6, col).Value <> "" Then
wsAbs.Cells(avgRowInfra, col).Value = wsAbs.Cells(6, col).Value / 5
End If
If wsAbs.Cells(7, col).Value <> "" Then
wsAbs.Cells(avgRowSR, col).Value = wsAbs.Cells(7, col).Value / 5
End If
If wsAbs.Cells(8, col).Value <> "" Then
wsAbs.Cells(avgRowBD, col).Value = wsAbs.Cells(8, col).Value / 5
End If
End If
End If
Next col
End Sub
affiner ensemble :
la correspondance exacte entre lignes/colonnes de ta feuille Absences,
la structure précise des fichiers ISR / IAL / SMA / CYBER (nom de feuille, position des dates, des semaines, des jours),
et ajuster les lignes d’exemple (Infra, SR, BD, etc.) pour coller à ton interface de pilotage.
Description de la tâche et de son importance
Contactez-nous à l’adresse [adresse e-mail] pour en savoir plus