freelance-dashboard/plans/implemPlan.md
StillHammer 21ebf32e4f Dashboard avec graphiques, TCD, slicers et checkboxes fonctionnels
- KPIs complets (CA, Heures, Taux, Stats, Objectifs)
- Graphiques CA par client + Heures par client
- TCD Heures x Client x Projet avec Slicer interactif
- Checkboxes dynamiques bien positionnes (E3:E7)
- Documentation technique et guides MCP

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:05:25 +07:00

588 lines
14 KiB
Markdown

# Freelance Dashboard - Plan d'Implementation Agent
## Vue d'Ensemble
**Objectif:** Creer un dashboard Excel KPI pour suivi d'activite freelance
**Fichier cible:** `templates/FreelanceDashboard.xlsx`
**Outils:** MCP VBA Server (vba-mcp-pro)
---
## Pre-requis
Avant de commencer, verifier:
- [ ] MCP VBA Server est connecte et fonctionnel
- [ ] Microsoft Excel est installe sur la machine
- [ ] Le dossier `templates/` existe
---
## Phase 1: Preparation et Structure Fichier
### Step 1.1: Creer le dossier templates
```bash
# Verifier/creer le dossier
mkdir templates
```
**Verification:** Le dossier `templates/` existe
### Step 1.2: Creer le fichier Excel vide avec les onglets
**Action manuelle requise:**
1. Ouvrir Excel
2. Creer un nouveau classeur
3. Renommer les feuilles:
- Feuil1 → Dashboard
- Ajouter: Data_Clients
- Ajouter: Data_Temps
- Ajouter: Data_Revenus
- Ajouter: Config
4. Sauvegarder comme `templates/FreelanceDashboard.xlsx`
**Alternative MCP:** Utiliser `open_in_office` sur un fichier existant, mais la creation initiale est manuelle.
**Verification:**
```
list_tables(file_path="templates/FreelanceDashboard.xlsx")
```
Doit retourner les 5 onglets.
---
## Phase 2: Creation des Tables de Donnees
### Step 2.1: Peupler Data_Clients
**Outil:** `set_worksheet_data`
**Donnees:**
```json
{
"file_path": "C:\\Users\\alexi\\Documents\\projects\\freelance-dashboard\\templates\\FreelanceDashboard.xlsx",
"sheet_name": "Data_Clients",
"data": [
["ClientID", "Nom", "Secteur", "DateDebut"],
["CLI001", "Acme Corporation", "Tech", "15/01/2024"],
["CLI002", "Tech Solutions", "Tech", "01/03/2024"],
["CLI003", "Marketing Pro", "Marketing", "10/06/2024"],
["CLI004", "E-Shop Plus", "E-commerce", "22/09/2024"],
["CLI005", "Finance Group", "Finance", "05/11/2024"]
],
"start_cell": "A1"
}
```
**Verification:** `get_worksheet_data` sur Data_Clients doit retourner 6 lignes (header + 5 clients)
### Step 2.2: Convertir en Excel Table (tbl_Clients)
**Outil:** `create_table`
**Parametres:**
```json
{
"file_path": "...",
"sheet_name": "Data_Clients",
"range": "A1:D6",
"table_name": "tbl_Clients",
"has_headers": true,
"style": "TableStyleMedium2"
}
```
**Verification:** `list_tables` doit montrer `tbl_Clients`
### Step 2.3: Peupler Data_Temps
**Outil:** `set_worksheet_data`
**Donnees:**
```json
{
"sheet_name": "Data_Temps",
"data": [
["Date", "ClientID", "Projet", "Heures", "Description"],
["02/01/2025", "CLI001", "Site Web", 3.5, "Maquettes"],
["02/01/2025", "CLI002", "API Backend", 6.0, "Endpoints"],
["03/01/2025", "CLI001", "Site Web", 4.0, "Integration"],
["03/01/2025", "CLI003", "Campagne SEO", 2.5, "Audit"],
["06/01/2025", "CLI002", "API Backend", 7.0, "Tests"],
["06/01/2025", "CLI004", "Boutique", 5.0, "Setup"],
["07/01/2025", "CLI001", "Maintenance", 1.5, "Updates"],
["08/01/2025", "CLI003", "Campagne SEO", 3.0, "Keywords"],
["08/01/2025", "CLI005", "Dashboard", 4.5, "Design"],
["09/01/2025", "CLI002", "App Mobile", 6.5, "Screens"]
],
"start_cell": "A1"
}
```
**Verification:** 11 lignes (header + 10 entrees)
### Step 2.4: Convertir en Excel Table (tbl_Temps)
**Outil:** `create_table`
**Parametres:**
```json
{
"sheet_name": "Data_Temps",
"range": "A1:E11",
"table_name": "tbl_Temps",
"has_headers": true
}
```
### Step 2.5: Peupler Data_Revenus
**Outil:** `set_worksheet_data`
**Donnees:**
```json
{
"sheet_name": "Data_Revenus",
"data": [
["Date", "ClientID", "Montant", "Type"],
["15/01/2025", "CLI001", 2500, "Facture"],
["20/01/2025", "CLI002", 4200, "Facture"],
["25/01/2025", "CLI003", 1800, "Facture"],
["28/01/2025", "CLI001", 1000, "Acompte"],
["31/01/2025", "CLI004", 3500, "Facture"],
["05/02/2025", "CLI002", 2800, "Facture"],
["10/02/2025", "CLI005", 1500, "Acompte"]
],
"start_cell": "A1"
}
```
### Step 2.6: Convertir en Excel Table (tbl_Revenus)
**Outil:** `create_table`
**Parametres:**
```json
{
"sheet_name": "Data_Revenus",
"range": "A1:D8",
"table_name": "tbl_Revenus",
"has_headers": true
}
```
### Step 2.7: Verification Phase 2
**Action:** `list_tables` sur le fichier
**Resultat attendu:**
- tbl_Clients (Data_Clients, 5 lignes)
- tbl_Temps (Data_Temps, 10 lignes)
- tbl_Revenus (Data_Revenus, 7 lignes)
---
## Phase 3: Configuration
### Step 3.1: Peupler Config
**Outil:** `set_worksheet_data`
**Donnees:**
```json
{
"sheet_name": "Config",
"data": [
["Parametre", "Valeur", "", "Secteurs", "", "Types"],
["AnneeCourante", 2025, "", "Tech", "", "Facture"],
["TauxHoraireDefaut", 75, "", "Marketing", "", "Acompte"],
["DevisePrincipale", "EUR", "", "Finance", "", "Avoir"],
["ObjectifMensuel", 10000, "", "E-commerce", "", "Autre"],
["ObjectifHeures", 140, "", "Industrie", "", ""],
["JourDebutSemaine", 2, "", "Services", "", ""],
["", "", "", "Autre", "", ""]
],
"start_cell": "A1"
}
```
**Note:** Les colonnes D et F serviront de listes deroulantes pour la validation des donnees.
---
## Phase 4: Formules KPIs sur Dashboard
### Step 4.1: Structure du Dashboard - Labels
**Outil:** `set_worksheet_data`
**Donnees (colonne A - labels):**
```json
{
"sheet_name": "Dashboard",
"data": [
["FREELANCE DASHBOARD"],
[""],
["KPIs Principaux"],
["CA Total"],
["CA Mois en cours"],
["Heures Totales"],
["Taux Horaire Moyen"],
["Nb Clients Actifs"],
["Heures Cette Semaine"],
[""],
["Top Client"],
[""],
["Periode"],
["Date Debut"],
["Date Fin"]
],
"start_cell": "A1"
}
```
### Step 4.2: Formules KPIs - Valeurs
**Outil:** `set_worksheet_data`
**Donnees (colonne B - formules):**
```json
{
"sheet_name": "Dashboard",
"data": [
[""],
[""],
[""],
["=SUM(tbl_Revenus[Montant])"],
["=SUMPRODUCT((MONTH(tbl_Revenus[Date])=MONTH(TODAY()))*(YEAR(tbl_Revenus[Date])=YEAR(TODAY()))*tbl_Revenus[Montant])"],
["=SUM(tbl_Temps[Heures])"],
["=IFERROR(B4/B6,0)"],
["=COUNTA(tbl_Clients[ClientID])"],
["=SUMIFS(tbl_Temps[Heures],tbl_Temps[Date],\">=\"&(TODAY()-WEEKDAY(TODAY(),2)+1),tbl_Temps[Date],\"<=\"&(TODAY()-WEEKDAY(TODAY(),2)+7))"],
[""],
["=IFERROR(INDEX(tbl_Clients[Nom],MATCH(MAX(SUMIFS(tbl_Revenus[Montant],tbl_Revenus[ClientID],tbl_Clients[ClientID])),SUMIFS(tbl_Revenus[Montant],tbl_Revenus[ClientID],tbl_Clients[ClientID]),0)),\"-\")"],
[""],
[""],
["=MIN(tbl_Temps[Date])"],
["=MAX(tbl_Temps[Date])"]
],
"start_cell": "B1"
}
```
**Note:** Certaines formules complexes comme Top Client peuvent necessiter validation. Si erreur, utiliser version simplifiee.
### Step 4.3: Verification des formules
**Outil:** `get_worksheet_data`
**Parametres:**
```json
{
"sheet_name": "Dashboard",
"range": "A1:B15"
}
```
**Resultat attendu:**
- B4 (CA Total) = 17300 (somme des montants)
- B6 (Heures Totales) = 43.5 (somme des heures)
- B7 (Taux Horaire) = ~397.70 (17300/43.5)
- B8 (Nb Clients) = 5
---
## Phase 5: Tableaux Croises Dynamiques (MANUEL)
> **IMPORTANT:** Cette phase ne peut PAS etre automatisee avec MCP VBA.
> Elle doit etre realisee manuellement dans Excel.
### Step 5.1: TCD - CA par Client
**Actions manuelles:**
1. Selectionner une cellule dans tbl_Revenus
2. Insertion > Tableau croise dynamique
3. Placer sur nouvelle feuille ou Dashboard
4. Configuration:
- Lignes: ClientID
- Valeurs: Somme de Montant
5. Renommer la feuille TCD si creee
### Step 5.2: TCD - Heures par Mois
**Configuration:**
- Lignes: Date (grouper par mois)
- Valeurs: Somme de Heures
### Step 5.3: TCD - CA par Mois
**Configuration:**
- Lignes: Date (grouper par mois)
- Valeurs: Somme de Montant
---
## Phase 6: Graphiques (MANUEL)
> **IMPORTANT:** Cette phase ne peut PAS etre automatisee avec MCP VBA.
### Step 6.1: Graphique - Evolution CA Mensuel
**Type:** Histogramme ou Courbe
**Source:** TCD CA par Mois
**Position:** Dashboard, zone superieure gauche
### Step 6.2: Graphique - Repartition par Client
**Type:** Camembert
**Source:** TCD CA par Client
**Position:** Dashboard, zone superieure droite
### Step 6.3: Graphique - Heures par Semaine
**Type:** Histogramme
**Source:** TCD Heures par Mois (ou semaine)
**Position:** Dashboard, zone inferieure gauche
### Step 6.4: Graphique - CA vs Heures
**Type:** Graphique combine (barres + ligne)
**Source:** Donnees agregees
**Position:** Dashboard, zone inferieure droite
---
## Phase 7: Slicers et Filtres (MANUEL)
### Step 7.1: Creer Slicer Client
1. Selectionner un TCD
2. Insertion > Segment
3. Choisir ClientID
4. Connecter aux autres TCD (clic droit > Connexions de rapport)
### Step 7.2: Creer Slicer Periode
1. Segment sur Date (annee/mois)
2. Connecter aux TCD
### Step 7.3: Positionner les Slicers
- Placer en haut a droite du Dashboard
- Redimensionner pour integration visuelle
---
## Phase 8: Design et Mise en Forme (MANUEL)
### Step 8.1: Palette Couleurs
| Element | Couleur | Hex |
|---------|---------|-----|
| Titre/Headers | Bleu fonce | #2C3E50 |
| KPIs positifs | Vert | #27AE60 |
| Fond | Gris clair | #ECF0F1 |
| Alertes | Rouge | #E74C3C |
### Step 8.2: Mise en forme des KPIs
- Police: Calibri 24-28pt Bold pour valeurs
- Format nombres: `# ##0 "€"` pour montants
- Format heures: `0.0 "h"`
- Format taux: `0.00 "€/h"`
### Step 8.3: Mise en forme conditionnelle
**KPI CA vs Objectif:**
- Vert si >= Config!ObjectifMensuel
- Orange si >= 80%
- Rouge si < 80%
### Step 8.4: Layout Final
```
┌─────────────────────────────────────────────────────────┐
│ FREELANCE DASHBOARD [Slicers] │
├─────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ CA Total│ │CA Mois │ │ Heures │ │Taux Moy │ │
│ │ 17300€ │ │ 0€ │ │ 43.5h │ │ 398€/h │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
├─────────────────────────────────────────────────────────┤
│ [Graph CA Mensuel] [Graph Repartition] │
│ │
│ [Graph Heures/Semaine] [Graph CA vs Heures] │
└─────────────────────────────────────────────────────────┘
```
---
## Phase 9: VBA Optionnel (Macro Refresh)
### Step 9.1: Valider le code VBA
**Outil:** `validate_vba_code`
**Code:**
```vba
Sub RefreshDashboard()
Application.ScreenUpdating = False
Application.CalculateFull
Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
Application.ScreenUpdating = True
MsgBox "Dashboard actualise!", vbInformation
End Sub
```
### Step 9.2: Sauvegarder en .xlsm
**Action manuelle:**
- Fichier > Enregistrer sous > FreelanceDashboard.xlsm (format macro)
### Step 9.3: Injecter le module VBA
**Outil:** `inject_vba`
**Parametres:**
```json
{
"file_path": "...FreelanceDashboard.xlsm",
"module_name": "mod_Refresh",
"code": "..."
}
```
### Step 9.4: Tester la macro
**Outil:** `run_macro`
**Parametres:**
```json
{
"file_path": "...FreelanceDashboard.xlsm",
"macro_name": "RefreshDashboard"
}
```
---
## Phase 10: Tests et Validation
### Step 10.1: Verification des donnees
- [ ] tbl_Clients contient 5 clients
- [ ] tbl_Temps contient 10 entrees
- [ ] tbl_Revenus contient 7 entrees
### Step 10.2: Verification des KPIs
| KPI | Valeur Attendue |
|-----|-----------------|
| CA Total | 17 300 € |
| Heures Totales | 43.5 h |
| Taux Horaire | ~397.70 €/h |
| Nb Clients | 5 |
### Step 10.3: Tests fonctionnels
- [ ] Les formules se calculent correctement
- [ ] Les TCD se rafraichissent
- [ ] Les graphiques se mettent a jour
- [ ] Les slicers filtrent les donnees
- [ ] La macro fonctionne (si .xlsm)
### Step 10.4: Ouvrir et verifier visuellement
**Outil:** `open_in_office`
```json
{
"file_path": "...FreelanceDashboard.xlsx"
}
```
---
## Resume des Actions par Type
### Automatisables (MCP VBA)
| Step | Action | Outil MCP |
|------|--------|-----------|
| 2.1 | Donnees Clients | set_worksheet_data |
| 2.2 | Table Clients | create_table |
| 2.3 | Donnees Temps | set_worksheet_data |
| 2.4 | Table Temps | create_table |
| 2.5 | Donnees Revenus | set_worksheet_data |
| 2.6 | Table Revenus | create_table |
| 3.1 | Config | set_worksheet_data |
| 4.1 | Labels Dashboard | set_worksheet_data |
| 4.2 | Formules KPIs | set_worksheet_data |
| 9.1 | Valider VBA | validate_vba_code |
| 9.3 | Injecter VBA | inject_vba |
| 9.4 | Tester macro | run_macro |
| 10.4 | Ouvrir Excel | open_in_office |
### Manuelles (Excel UI)
| Step | Action |
|------|--------|
| 1.2 | Creer fichier Excel + onglets |
| 5.x | Tableaux Croises Dynamiques |
| 6.x | Graphiques |
| 7.x | Slicers |
| 8.x | Design et mise en forme |
| 9.2 | Sauvegarder en .xlsm |
---
## Ordre d'Execution Recommande
```
AUTOMATISE MANUEL AUTOMATISE
│ │ │
▼ ▼ ▼
[Phase 2-4] → [Phases 5-8] → [Phase 9-10]
Donnees TCD/Graphs VBA
Tables Slicers Tests
Formules Design
```
**Workflow optimal:**
1. Agent execute Phases 2-4 (donnees + formules)
2. Utilisateur complete Phases 5-8 dans Excel UI
3. Agent execute Phase 9 (VBA optionnel)
4. Agent execute Phase 10 (tests)
---
## Notes Importantes
1. **Chemin absolu obligatoire** pour tous les outils MCP:
`C:\Users\alexi\Documents\projects\freelance-dashboard\templates\FreelanceDashboard.xlsx`
2. **Backup avant modifications:**
Utiliser `backup_vba` avant inject_vba
3. **Gestion des erreurs:**
- Si formule echoue, verifier syntaxe (guillemets, virgules)
- Si table existe deja, ne pas recreer
4. **Format dates:**
Les dates doivent etre au format `jj/mm/aaaa` pour Excel FR
---
**Version:** 1.0
**Date:** 2025-12-30
**Auteur:** Claude Agent