Initial commit - Freelance Dashboard

Dashboard KPI Excel pour suivi d'activite freelance

Fichiers inclus:
- Documentation (README, PLAN, DATA_MODEL, FORMULAS)
- Template Excel avec tables de donnees
- Plan d'implementation pour agent
- Configuration MCP VBA Server

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
StillHammer 2025-12-30 11:08:00 +07:00
commit 3a2fb2187e
10 changed files with 1991 additions and 0 deletions

26
.gitignore vendored Normal file
View File

@ -0,0 +1,26 @@
# Excel temp files
~$*
*.tmp
# Excel lock files
*.xlk
# Windows reserved names
nul
con
prn
aux
# Windows system files
Thumbs.db
Desktop.ini
# Backups
.vba_backups/
*.bak
# Claude Code
.claude/
# MCP config (contains no secrets but local)
# .mcp.json

12
.mcp.json Normal file
View File

@ -0,0 +1,12 @@
{
"mcpServers": {
"vba-mcp-pro": {
"command": "python",
"args": ["-m", "vba_mcp_pro.server"],
"cwd": "C:\\Users\\alexi\\Documents\\projects\\vba-mcp-monorepo",
"env": {
"PYTHONPATH": "C:\\Users\\alexi\\Documents\\projects\\vba-mcp-monorepo\\packages\\core\\src;C:\\Users\\alexi\\Documents\\projects\\vba-mcp-monorepo\\packages\\lite\\src;C:\\Users\\alexi\\Documents\\projects\\vba-mcp-monorepo\\packages\\pro\\src"
}
}
}
}

263
CLAUDE.md Normal file
View File

@ -0,0 +1,263 @@
# Freelance Dashboard - Instructions pour Claude
## Projet
Freelance Dashboard - Dashboard KPI Excel pour suivi d'activite freelance.
## Status: En attente de developpement
## MCP VBA Server
Ce projet utilise **VBA MCP Server v0.6.0+** pour l'automatisation.
### Outils Disponibles pour Excel
| Outil | Description | Usage |
|-------|-------------|-------|
| `get_worksheet_data` | Lit donnees d'une feuille | Lecture donnees |
| `set_worksheet_data` | Ecrit donnees/formules | Peupler tables, KPIs |
| `list_excel_tables` | Liste les Excel Tables | Verifier structure |
| `create_excel_table` | Cree table structuree | Tables donnees |
| `insert_rows` | Insere lignes | Ajouter entrees |
| `delete_rows` | Supprime lignes | Nettoyer donnees |
| `insert_columns` | Insere colonnes | Modifier structure |
| `delete_columns` | Supprime colonnes | Modifier structure |
| `inject_vba` | Injecte module VBA | Macro refresh |
| `validate_vba` | Valide syntaxe VBA | Verifier code |
| `run_macro` | Execute macro VBA | Lancer refresh |
| `open_in_office` | Ouvre Excel visible | Voir resultat |
| `create_backup` | Cree backup fichier | Avant modifications |
### Chemin du fichier
```
C:\Users\alexi\Documents\projects\freelance-dashboard\templates\FreelanceDashboard.xlsx
```
---
## Structure du Projet
```
freelance-dashboard/
├── README.md # Documentation principale
├── PLAN.md # Plan projet (7 phases, 9h)
├── DATA_MODEL.md # Schema des 3 tables
├── FORMULAS.md # Toutes les formules Excel
├── CLAUDE.md # CE FICHIER
├── docs/
│ └── MCP_VBA_GUIDE.md # Guide utilisation MCP
├── templates/
│ └── FreelanceDashboard.xlsx
└── scripts/
```
---
## Workflow de Developpement
### Phase 1: Structure Fichier (MCP VBA)
```python
# Creer les donnees clients
data_clients = [
["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"],
]
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Clients", data_clients)
# Creer la table structuree
create_excel_table("templates/FreelanceDashboard.xlsx", "Data_Clients", "A1:D6", "tbl_Clients", has_headers=True)
```
```python
# Creer les donnees temps
data_temps = [
["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"],
# ... plus de donnees
]
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Temps", data_temps)
create_excel_table("templates/FreelanceDashboard.xlsx", "Data_Temps", "A1:E11", "tbl_Temps", has_headers=True)
```
```python
# Creer les donnees revenus
data_revenus = [
["Date", "ClientID", "Montant", "Type"],
["15/01/2025", "CLI001", 2500, "Facture"],
["20/01/2025", "CLI002", 4200, "Facture"],
["25/01/2025", "CLI003", 1800, "Facture"],
# ... plus de donnees
]
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Revenus", data_revenus)
create_excel_table("templates/FreelanceDashboard.xlsx", "Data_Revenus", "A1:D8", "tbl_Revenus", has_headers=True)
```
### Phase 2: Formules KPIs (MCP VBA)
```python
# Ecrire les KPIs sur l'onglet Dashboard
kpis = [
["CA Total", "=SUM(tbl_Revenus[Montant])"],
["Heures Totales", "=SUM(tbl_Temps[Heures])"],
["Taux Horaire Moyen", "=B1/B2"],
["Nb Clients", "=COUNTA(tbl_Clients[ClientID])"],
["Heures Semaine", "=SUMIFS(tbl_Temps[Heures],tbl_Temps[Date],\">=\"&TODAY()-WEEKDAY(TODAY(),2)+1)"],
]
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Dashboard", kpis, start_cell="A1")
```
### Phase 3-5: TCD, Graphiques, Design (Excel UI)
Ces elements doivent etre crees dans Excel UI:
- Tableaux Croises Dynamiques
- Graphiques (barres, camembert, combo)
- Slicers
- Mise en forme conditionnelle
- Layout final
### Phase 6: VBA Refresh (MCP VBA - Optionnel)
```python
code = '''
Sub RefreshDashboard()
Application.CalculateFull
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Dim pt As PivotTable
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
MsgBox "Dashboard actualise!", vbInformation
End Sub
'''
validate_vba(code, file_type="excel")
inject_vba("templates/FreelanceDashboard.xlsm", "mod_Refresh", code)
```
---
## Commandes Rapides
### Lire donnees
```python
get_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Clients")
get_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Temps")
```
### Ajouter entree temps
```python
# Ajouter une ligne
insert_rows("templates/FreelanceDashboard.xlsx", "Data_Temps", position=12, count=1)
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Temps",
[["10/01/2025", "CLI001", "Nouveau Projet", 2.5, "Description"]],
start_cell="A12")
```
### Lister les tables
```python
list_excel_tables("templates/FreelanceDashboard.xlsx")
```
### Ouvrir pour voir
```python
open_in_office("templates/FreelanceDashboard.xlsx")
```
### Executer macro
```python
run_macro("templates/FreelanceDashboard.xlsm", "RefreshDashboard")
```
---
## Limitations MCP VBA
| Ce qui marche | Ce qui ne marche pas |
|---------------|---------------------|
| Ecrire donnees | Creer TCD |
| Creer Excel Tables | Creer graphiques |
| Ecrire formules | Design visuel |
| Injecter VBA | Creer slicers |
| Executer macros | Mise en forme conditionnelle |
---
## Lien avec TimeTrack Pro
```
TimeTrack Pro (Access) Freelance Dashboard (Excel)
│ │
│ get_worksheet_data │
└──────────────────────────►│
Export donnees
```
### Export manuel
1. Lire donnees Access: `get_worksheet_data("TimeTrackPro.accdb", "tbl_Temps")`
2. Ecrire dans Excel: `set_worksheet_data("FreelanceDashboard.xlsx", "Data_Temps", data)`
### Macro d'import (V2)
```vba
Sub ImportFromTimeTrack()
' Connexion ADODB vers TimeTrackPro.accdb
' Import automatique des donnees
End Sub
```
---
## Fichiers Cles
| Fichier | Quand l'utiliser |
|---------|------------------|
| `DATA_MODEL.md` | Schema tables + donnees demo |
| `FORMULAS.md` | Toutes les formules KPIs |
| `PLAN.md` | Layout, couleurs, phases |
| `docs/MCP_VBA_GUIDE.md` | Guide etape par etape |
---
## Design
### Palette Couleurs
| Usage | Hex |
|-------|-----|
| Primaire (bleu fonce) | #2C3E50 |
| Accent (vert) | #27AE60 |
| Neutre (gris) | #ECF0F1 |
| Alerte (rouge) | #E74C3C |
### KPIs a afficher
- CA Total
- CA Mois en cours
- Heures totales
- Taux horaire moyen
- Nb clients actifs
- Top client
- Heures semaine
---
## Contact
Alexis Trouve - alexistrouve.pro@gmail.com

203
DATA_MODEL.md Normal file
View File

@ -0,0 +1,203 @@
# Freelance Dashboard - Modele de Donnees
## Vue d'ensemble
```
┌─────────────────┐
│ Data_Clients │
├─────────────────┤
│ ClientID (PK) │◄──────┐
│ Nom │ │
│ Secteur │ │
│ DateDebut │ │
└─────────────────┘ │
┌─────────────────┐ │ ┌─────────────────┐
│ Data_Temps │ │ │ Data_Revenus │
├─────────────────┤ │ ├─────────────────┤
│ Date │ │ │ Date │
│ ClientID (FK) │───────┼───────│ ClientID (FK) │
│ Projet │ │ │ Montant │
│ Heures │ │ │ Type │
│ Description │ │ └─────────────────┘
└─────────────────┘ │
Relations
```
---
## Table: Data_Clients
Liste des clients avec informations de base.
| Colonne | Type | Format | Exemple | Validation |
|---------|------|--------|---------|------------|
| ClientID | Texte | CLI### | CLI001 | Unique, requis |
| Nom | Texte | - | Acme Corp | Requis |
| Secteur | Texte | - | Tech | Liste deroulante |
| DateDebut | Date | jj/mm/aaaa | 15/01/2024 | Date valide |
### Secteurs suggeres
- Tech
- Marketing
- Finance
- E-commerce
- Industrie
- Services
- Autre
### Donnees de demo
| 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 |
---
## Table: Data_Temps
Entrees de temps par projet et client.
| Colonne | Type | Format | Exemple | Validation |
|---------|------|--------|---------|------------|
| Date | Date | jj/mm/aaaa | 15/12/2024 | Date valide |
| ClientID | Texte | CLI### | CLI001 | Liste clients |
| Projet | Texte | - | Site Web | Requis |
| Heures | Nombre | 0.00 | 3.50 | > 0, <= 24 |
| Description | Texte | - | Maquettes | Optionnel |
### Donnees de demo
| 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 |
---
## Table: Data_Revenus
Paiements recus des clients.
| Colonne | Type | Format | Exemple | Validation |
|---------|------|--------|---------|------------|
| Date | Date | jj/mm/aaaa | 31/12/2024 | Date valide |
| ClientID | Texte | CLI### | CLI001 | Liste clients |
| Montant | Nombre | # ##0.00 € | 2500.00 | > 0 |
| Type | Texte | - | Facture | Liste deroulante |
### Types de paiement
- Facture
- Acompte
- Avoir
- Autre
### Donnees de demo
| Date | ClientID | Montant | Type |
|------|----------|---------|------|
| 15/01/2025 | CLI001 | 2500.00 | Facture |
| 20/01/2025 | CLI002 | 4200.00 | Facture |
| 25/01/2025 | CLI003 | 1800.00 | Facture |
| 28/01/2025 | CLI001 | 1000.00 | Acompte |
| 31/01/2025 | CLI004 | 3500.00 | Facture |
| 05/02/2025 | CLI002 | 2800.00 | Facture |
| 10/02/2025 | CLI005 | 1500.00 | Acompte |
---
## Table: Config
Parametres de configuration du dashboard.
| Parametre | Valeur | Description |
|-----------|--------|-------------|
| AnneeCourante | 2025 | Annee par defaut pour filtres |
| TauxHoraireDefaut | 75 | Taux horaire par defaut (euros) |
| DevisePrincipale | EUR | Devise affichee |
| JourDebutSemaine | 2 | 1=Dim, 2=Lun |
| ObjectifMensuel | 10000 | Objectif CA mensuel |
| ObjectifHeures | 140 | Objectif heures/mois |
---
## Plages Nommees
| Nom | Plage | Description |
|-----|-------|-------------|
| tbl_Clients | Data_Clients[#All] | Table clients |
| tbl_Temps | Data_Temps[#All] | Table temps |
| tbl_Revenus | Data_Revenus[#All] | Table revenus |
| lst_ClientIDs | Data_Clients[ClientID] | Liste ClientID |
| lst_Secteurs | Config!$E$2:$E$8 | Liste secteurs |
| lst_Types | Config!$G$2:$G$5 | Liste types paiement |
---
## Formules de Validation
### ClientID (Data_Temps, Data_Revenus)
```
=COUNTIF(Data_Clients[ClientID], [@ClientID]) > 0
```
### Heures (Data_Temps)
```
=AND([@Heures] > 0, [@Heures] <= 24)
```
### Montant (Data_Revenus)
```
=[@Montant] > 0
```
---
## Colonnes Calculees (optionnel)
### Data_Temps - Mois
```
=TEXT([@Date], "mmmm yyyy")
```
### Data_Temps - Semaine
```
=WEEKNUM([@Date], 2)
```
### Data_Temps - NomClient
```
=VLOOKUP([@ClientID], Data_Clients, 2, FALSE)
```
### Data_Revenus - NomClient
```
=VLOOKUP([@ClientID], Data_Clients, 2, FALSE)
```
---
**Version:** 1.0
**Date:** 2025-12-30

348
FORMULAS.md Normal file
View File

@ -0,0 +1,348 @@
# Freelance Dashboard - Formules et KPIs
## Vue d'ensemble
Toutes les formules utilisees dans le dashboard pour calculer les KPIs.
---
## 1. KPIs Principaux
### CA Total (periode selectionnee)
```excel
=SUMIFS(
Data_Revenus[Montant],
Data_Revenus[Date], ">=" & DateDebut,
Data_Revenus[Date], "<=" & DateFin
)
```
**Avec slicer client:**
```excel
=SUMIFS(
Data_Revenus[Montant],
Data_Revenus[Date], ">=" & DateDebut,
Data_Revenus[Date], "<=" & DateFin,
Data_Revenus[ClientID], ClientFiltre
)
```
---
### CA Mois en Cours
```excel
=SUMIFS(
Data_Revenus[Montant],
Data_Revenus[Date], ">=" & EOMONTH(TODAY(), -1) + 1,
Data_Revenus[Date], "<=" & EOMONTH(TODAY(), 0)
)
```
**Version simplifiee:**
```excel
=SUMPRODUCT(
(MONTH(Data_Revenus[Date]) = MONTH(TODAY())) *
(YEAR(Data_Revenus[Date]) = YEAR(TODAY())) *
Data_Revenus[Montant]
)
```
---
### Heures Totales (periode)
```excel
=SUMIFS(
Data_Temps[Heures],
Data_Temps[Date], ">=" & DateDebut,
Data_Temps[Date], "<=" & DateFin
)
```
---
### Taux Horaire Moyen
```excel
=IFERROR(
SUMIFS(Data_Revenus[Montant], ...) / SUMIFS(Data_Temps[Heures], ...),
0
)
```
**Format:** `# ##0.00 "€/h"`
---
### Nombre Clients Actifs
```excel
=SUMPRODUCT(
(COUNTIFS(
Data_Temps[ClientID], Data_Clients[ClientID],
Data_Temps[Date], ">=" & DateDebut,
Data_Temps[Date], "<=" & DateFin
) > 0) * 1
)
```
**Alternative avec UNIQUE (Excel 365):**
```excel
=COUNTA(UNIQUE(
FILTER(
Data_Temps[ClientID],
(Data_Temps[Date] >= DateDebut) * (Data_Temps[Date] <= DateFin)
)
))
```
---
### Top Client (par CA)
```excel
=INDEX(
Data_Clients[Nom],
MATCH(
MAX(
SUMIFS(
Data_Revenus[Montant],
Data_Revenus[ClientID], Data_Clients[ClientID]
)
),
SUMIFS(
Data_Revenus[Montant],
Data_Revenus[ClientID], Data_Clients[ClientID]
),
0
)
)
```
**Avec XLOOKUP (Excel 365):**
```excel
=LET(
clients, Data_Clients[ClientID],
noms, Data_Clients[Nom],
ca, SUMIFS(Data_Revenus[Montant], Data_Revenus[ClientID], clients),
maxCA, MAX(ca),
topClient, XLOOKUP(maxCA, ca, noms, "N/A"),
topClient
)
```
---
### Heures Cette Semaine
```excel
=SUMIFS(
Data_Temps[Heures],
Data_Temps[Date], ">=" & TODAY() - WEEKDAY(TODAY(), 2) + 1,
Data_Temps[Date], "<=" & TODAY() - WEEKDAY(TODAY(), 2) + 7
)
```
---
## 2. Formules pour Graphiques
### CA par Mois (12 derniers mois)
**Tableau helper:**
| Mois | CA |
|------|-----|
| =EOMONTH(TODAY(),-11) | =SUMPRODUCT((MONTH(Data_Revenus[Date])=MONTH(A2))*(YEAR(Data_Revenus[Date])=YEAR(A2))*Data_Revenus[Montant]) |
| ... | ... |
**Avec SEQUENCE (Excel 365):**
```excel
=LET(
mois, SEQUENCE(12, 1, EOMONTH(TODAY(), -11) + 1, 30),
ca, SUMPRODUCT(
(MONTH(Data_Revenus[Date]) = MONTH(mois)) *
(YEAR(Data_Revenus[Date]) = YEAR(mois)) *
Data_Revenus[Montant]
),
HSTACK(TEXT(mois, "mmm yy"), ca)
)
```
---
### Repartition CA par Client
```excel
=SUMIFS(
Data_Revenus[Montant],
Data_Revenus[ClientID], Data_Clients[@ClientID]
)
```
**Pourcentage:**
```excel
=[@CA] / SUM([CA])
```
---
### Heures par Semaine (8 dernieres semaines)
```excel
=SUMIFS(
Data_Temps[Heures],
Data_Temps[Date], ">=" & DebutSemaine,
Data_Temps[Date], "<=" & FinSemaine
)
```
---
## 3. Formules de Mise en Forme Conditionnelle
### KPI CA - Vert si objectif atteint
**Condition:** `=B2 >= Config!$C$5`
- Vert (#27AE60) si >= objectif
- Orange (#F39C12) si >= 80% objectif
- Rouge (#E74C3C) si < 80%
---
### Heures - Barre de progression
**Formule:** `=[@Heures] / 8` (sur une journee de 8h)
---
### Evolution - Fleche haut/bas
```excel
=IF([@CA] > [@CA_Precedent], "↑", IF([@CA] < [@CA_Precedent], "↓", "→"))
```
---
## 4. Formules Utilitaires
### Premier jour du mois
```excel
=EOMONTH(TODAY(), -1) + 1
```
### Dernier jour du mois
```excel
=EOMONTH(TODAY(), 0)
```
### Premier jour de la semaine (lundi)
```excel
=TODAY() - WEEKDAY(TODAY(), 2) + 1
```
### Numero de semaine
```excel
=WEEKNUM([@Date], 2)
```
### Nom du mois en francais
```excel
=TEXT([@Date], "mmmm")
```
---
## 5. Tableau Croise Dynamique - Champs Calcules
### Taux Horaire
```
= Montant / Heures
```
### CA Journalier Moyen
```
= Montant / COUNTA(Date)
```
### Heures par Jour Ouvre
```
= Heures / NETWORKDAYS(MIN(Date), MAX(Date))
```
---
## 6. Validation des Donnees
### Liste deroulante ClientID
```
Source: =INDIRECT("Data_Clients[ClientID]")
```
### Liste deroulante Type
```
Source: Facture,Acompte,Avoir,Autre
```
### Heures (entre 0.25 et 24)
```
Validation: Decimal
Minimum: 0.25
Maximum: 24
Message: "Entrez un nombre d'heures entre 0.25 et 24"
```
---
## 7. Exemples de Cellules Dashboard
### Cellule KPI - CA Total
```
Cellule: D4
Formule: =SUMIFS(Data_Revenus[Montant], Data_Revenus[Date], ">="&$B$2, Data_Revenus[Date], "<="&$B$3)
Format: # ##0 "€"
Police: Calibri 28pt Bold
Couleur: #2C3E50
```
### Cellule KPI - Variation
```
Cellule: D5
Formule: =D4 - CA_Mois_Precedent
Format: +# ##0 "€";-# ##0 "€"
Couleur: Vert si positif, Rouge si negatif
```
---
## 8. Raccourcis Formules
| Besoin | Formule courte |
|--------|----------------|
| CA total | `=SUM(Data_Revenus[Montant])` |
| Heures total | `=SUM(Data_Temps[Heures])` |
| Nb clients | `=COUNTA(Data_Clients[ClientID])` |
| Nb projets uniques | `=COUNTA(UNIQUE(Data_Temps[Projet]))` |
| Date min | `=MIN(Data_Temps[Date])` |
| Date max | `=MAX(Data_Temps[Date])` |
---
**Version:** 1.0
**Date:** 2025-12-30

230
PLAN.md Normal file
View File

@ -0,0 +1,230 @@
# Freelance Dashboard - Plan de Projet
Dashboard KPI Excel - Suivi d'activite freelance
---
## 1. Vision
**Objectif:** Dashboard visuel pour suivre son activite freelance (temps, revenus, clients) en un coup d'oeil.
**Public cible:** Freelances, independants, usage personnel.
**Lien portfolio:** Complementaire a TimeTrack Pro (Access = saisie, Excel = visualisation).
---
## 2. Perimetre V1
### Inclus
| Fonctionnalite | Description |
|----------------|-------------|
| Saisie donnees | Heures, revenus, clients |
| KPIs principaux | CA, heures, taux horaire moyen |
| Graphiques | Dynamiques et interactifs |
| Filtres | Periode, client, projet |
| Design pro | Moderne, pret a montrer |
### Hors Perimetre (V2 eventuelle)
- Connexion automatique a Access/TimeTrack
- Previsionnel / objectifs
- Multi-devises
- Macros VBA complexes
---
## 3. Structure du Fichier
| Onglet | Contenu | Type |
|--------|---------|------|
| **Dashboard** | Vue principale avec KPIs et graphiques | Affichage |
| **Data_Temps** | Table des entrees de temps (source) | Donnees |
| **Data_Revenus** | Table des paiements recus | Donnees |
| **Data_Clients** | Liste clients avec infos | Donnees |
| **Config** | Parametres (annee, taux par defaut) | Parametres |
---
## 4. Modele de Donnees
### Data_Clients
| Champ | Type | Description |
|-------|------|-------------|
| ClientID | Texte | Identifiant unique (ex: CLI001) |
| Nom | Texte | Nom du client |
| Secteur | Texte | Secteur d'activite |
| DateDebut | Date | Date debut collaboration |
### Data_Temps
| Champ | Type | Description |
|-------|------|-------------|
| Date | Date | Date de l'entree |
| ClientID | Texte | Reference client |
| Projet | Texte | Nom du projet |
| Heures | Nombre | Duree en heures |
| Description | Texte | Description du travail |
### Data_Revenus
| Champ | Type | Description |
|-------|------|-------------|
| Date | Date | Date du paiement |
| ClientID | Texte | Reference client |
| Montant | Nombre | Montant en euros |
| Type | Texte | Facture / Acompte |
---
## 5. KPIs a Afficher
| KPI | Calcul | Formule Excel |
|-----|--------|---------------|
| **CA Total** | Somme revenus (periode) | `=SUMIFS(...)` |
| **CA Mois en cours** | Somme revenus (mois) | `=SUMIFS(...,MONTH()=...)` |
| **Heures totales** | Somme heures (periode) | `=SUMIFS(...)` |
| **Taux horaire moyen** | CA / Heures | `=CA/Heures` |
| **Nb clients actifs** | Clients avec heures > 0 | `=COUNTIFS(...)` |
| **Top client** | Client avec le plus de CA | `=INDEX(MATCH(MAX(...)))` |
| **Heures semaine** | Somme heures (semaine) | `=SUMIFS(...,WEEKNUM()=...)` |
---
## 6. Graphiques
| Graphique | Type | Donnees | Position |
|-----------|------|---------|----------|
| **Evolution CA mensuel** | Barres ou ligne | CA par mois | Haut gauche |
| **Repartition par client** | Camembert | % CA par client | Haut droite |
| **Heures par semaine** | Barres | Heures hebdo | Bas gauche |
| **CA vs Heures** | Combo | Correlation | Bas droite |
---
## 7. Fonctionnalites Excel
| Feature | Usage | Implementation |
|---------|-------|----------------|
| **Tableaux structures** | Donnees auto-expansion | `Ctrl+T` sur plages |
| **SOMME.SI.ENS** | Calculs conditionnels | Formules KPIs |
| **Tableaux croises** | Agregations flexibles | TCD sur Data_Temps |
| **Slicers** | Filtres visuels | Connectes aux TCD |
| **Mise en forme cond.** | Alertes visuelles | Regles sur KPIs |
| **Validation donnees** | Listes deroulantes | ClientID, Type |
| **Graphiques dynamiques** | Lies aux TCD | Charts connectes |
---
## 8. UI / Design
### Palette Couleurs
| Usage | Couleur | Hex |
|-------|---------|-----|
| Primaire | Bleu fonce | #2C3E50 |
| Accent | Vert | #27AE60 |
| Neutre | Gris clair | #ECF0F1 |
| Alerte | Rouge | #E74C3C |
### Principes Design
1. **Fond clair**, donnees lisibles
2. **KPIs en gros**, bien espaces
3. **Graphiques alignes**, pas surcharges
4. **Pas de bordures inutiles**, style moderne flat
5. **Hierarchie visuelle** claire
### Layout Dashboard
```
┌─────────────────────────────────────────────────────────┐
│ FREELANCE DASHBOARD [Filtres/Slicers]│
├─────────────────────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ CA Total│ │CA Mois │ │ Heures │ │Taux Moy │ │
│ │ 45 230€ │ │ 8 500€ │ │ 312h │ │ 72€/h │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ │ │ │ │
│ │ Evolution CA │ │ Repartition │ │
│ │ (barres) │ │ (camembert) │ │
│ │ │ │ │ │
│ └─────────────────────┘ └─────────────────────┘ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ │ │ │ │
│ │ Heures/semaine │ │ CA vs Heures │ │
│ │ (barres) │ │ (combo) │ │
│ │ │ │ │ │
│ └─────────────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
---
## 9. Phases de Developpement
| Phase | Contenu | Methode | Duree |
|-------|---------|---------|-------|
| 1 | Structure fichier + tables | MCP VBA | 1h |
| 2 | Formules KPIs | MCP VBA | 1h |
| 3 | Tableaux croises dynamiques | Excel UI | 1h |
| 4 | Graphiques | Excel UI | 2h |
| 5 | Dashboard layout + slicers | Excel UI | 2h |
| 6 | Design polish + donnees demo | Excel UI | 1h |
| 7 | Tests + documentation | Manuel | 1h |
**Total estime:** ~9h
---
## 10. Livrables Finaux
- [ ] Fichier `.xlsx` fonctionnel avec donnees demo
- [ ] README avec screenshots
- [ ] (Bonus) Version `.xlsm` avec macros refresh
- [ ] (Bonus) GIF de demo
---
## 11. Criteres de Succes
- [ ] Le dashboard est lisible en 5 secondes
- [ ] Les filtres fonctionnent sans lag
- [ ] Les donnees se mettent a jour automatiquement
- [ ] Le design est pro et moderne
- [ ] Utilisation personnelle (dogfooding)
---
## 12. Integration TimeTrack Pro
### Option A: Export manuel
```
TimeTrack Pro (Access) → Export Excel → Copier/Coller → Dashboard
```
### Option B: Liaison ODBC (V2)
```
TimeTrack Pro (Access) ← Connexion ODBC ← Dashboard (Power Query)
```
### Option C: Macro d'import (V2)
```vba
Sub ImportFromAccess()
' Connexion ADO vers TimeTrackPro.accdb
' Import des donnees dans les tables Excel
End Sub
```
---
**Auteur:** Alexis Trouve
**Date:** 2025-12-30
**Version:** 1.0

62
README.md Normal file
View File

@ -0,0 +1,62 @@
# Freelance Dashboard
Dashboard KPI Excel - Suivi d'activite freelance
## Vision
Dashboard visuel pour suivre son activite freelance (temps, revenus, clients) en un coup d'oeil.
**Public cible:** Freelances, independants
**Lien portfolio:** Complementaire a TimeTrack Pro (Access = saisie, Excel = visualisation)
## Status
| Phase | Description | Status |
|-------|-------------|--------|
| 1 | Structure fichier + tables | En attente |
| 2 | Formules KPIs | En attente |
| 3 | Tableaux croises dynamiques | En attente |
| 4 | Graphiques | En attente |
| 5 | Dashboard layout + slicers | En attente |
| 6 | Design polish + donnees demo | En attente |
| 7 | Tests + documentation | En attente |
## Fonctionnalites V1
- [x] Saisie des donnees (heures, revenus, clients)
- [x] KPIs principaux (CA, heures, taux horaire moyen)
- [x] Graphiques dynamiques
- [x] Filtres par periode / client / projet
- [x] Mise en forme pro
## Structure du fichier
| Onglet | Contenu |
|--------|---------|
| Dashboard | Vue principale avec KPIs et graphiques |
| Data_Temps | Table des entrees de temps |
| Data_Revenus | Table des paiements recus |
| Data_Clients | Liste clients avec infos |
| Config | Parametres (annee, taux par defaut) |
## KPIs
- CA Total
- CA Mois en cours
- Heures totales
- Taux horaire moyen
- Nb clients actifs
- Top client
- Heures cette semaine
## Screenshots
*(A venir)*
## Auteur
Alexis Trouve - alexistrouve.pro@gmail.com
## License
Proprietary - Demo Project

260
docs/MCP_VBA_GUIDE.md Normal file
View File

@ -0,0 +1,260 @@
# Freelance Dashboard - Guide MCP VBA
Comment utiliser VBA MCP Server pour construire ce projet Excel.
## Prerequis
1. VBA MCP Server v0.6.0+ installe
2. Microsoft Excel installe
3. "Trust access to VBA project object model" active dans Excel
## Outils MCP Disponibles
### Pour Excel
| Outil | Usage dans ce projet |
|-------|---------------------|
| `get_worksheet_data` | Lire donnees des feuilles |
| `set_worksheet_data` | Ecrire donnees et formules |
| `list_excel_tables` | Lister les Excel Tables |
| `create_excel_table` | Creer tables structurees |
| `insert_rows` | Ajouter lignes |
| `delete_rows` | Supprimer lignes |
| `inject_vba` | Injecter macros optionnelles |
| `validate_vba` | Valider syntaxe VBA |
| `run_macro` | Executer macros |
| `open_in_office` | Ouvrir Excel visible |
---
## Etape 1: Creer le Fichier Excel
**Manuel:** Ouvrir Excel > Nouveau classeur > Enregistrer comme `FreelanceDashboard.xlsx`
**Emplacement:** `C:\Users\alexi\Documents\projects\freelance-dashboard\templates\FreelanceDashboard.xlsx`
### Creer les onglets
Renommer/creer les feuilles:
1. Dashboard
2. Data_Clients
3. Data_Temps
4. Data_Revenus
5. Config
---
## Etape 2: Creer les Tables de Donnees
### Data_Clients
```
Utilise set_worksheet_data pour ecrire les donnees:
```
```python
# En-tetes + donnees
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"],
]
set_worksheet_data("FreelanceDashboard.xlsx", "Data_Clients", data)
```
```
Puis creer la table structuree:
```
```python
create_excel_table("FreelanceDashboard.xlsx", "Data_Clients", "A1:D6", "tbl_Clients", has_headers=True)
```
### Data_Temps
```python
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"],
]
set_worksheet_data("FreelanceDashboard.xlsx", "Data_Temps", data)
create_excel_table("FreelanceDashboard.xlsx", "Data_Temps", "A1:E11", "tbl_Temps", has_headers=True)
```
### Data_Revenus
```python
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"],
]
set_worksheet_data("FreelanceDashboard.xlsx", "Data_Revenus", data)
create_excel_table("FreelanceDashboard.xlsx", "Data_Revenus", "A1:D8", "tbl_Revenus", has_headers=True)
```
---
## Etape 3: Creer la Configuration
```python
data = [
["Parametre", "Valeur"],
["AnneeCourante", 2025],
["TauxHoraireDefaut", 75],
["DevisePrincipale", "EUR"],
["ObjectifMensuel", 10000],
["ObjectifHeures", 140],
]
set_worksheet_data("FreelanceDashboard.xlsx", "Config", data)
```
---
## Etape 4: Ecrire les Formules KPIs
```
Sur l'onglet Dashboard, ecrire les formules:
```
```python
kpis = [
["KPI", "Valeur", "Formule"],
["CA Total", "=SUM(tbl_Revenus[Montant])", ""],
["Heures Totales", "=SUM(tbl_Temps[Heures])", ""],
["Taux Horaire Moyen", "=B2/B3", ""],
["Nb Clients", "=COUNTA(tbl_Clients[ClientID])", ""],
]
set_worksheet_data("FreelanceDashboard.xlsx", "Dashboard", kpis, start_cell="A1")
```
---
## Etape 5: VBA Optionnel (Refresh)
```
Injecter une macro pour rafraichir les donnees:
```
```python
code = '''
Sub RefreshDashboard()
' Rafraichit toutes les connexions et TCD
Application.CalculateFull
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Dim pt As PivotTable
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
MsgBox "Dashboard actualise!", vbInformation
End Sub
Sub AutoRefresh()
' Appele a l'ouverture du classeur
RefreshDashboard
End Sub
'''
validate_vba(code, file_type="excel")
inject_vba("FreelanceDashboard.xlsm", "mod_Refresh", code)
```
---
## Commandes Frequentes
### Lire les donnees
```
get_worksheet_data("FreelanceDashboard.xlsx", "Data_Temps")
```
### Ajouter une entree de temps
```python
# Lire donnees existantes, ajouter ligne, reecrire
# Ou utiliser insert_rows
insert_rows("FreelanceDashboard.xlsx", "Data_Temps", position=12, count=1)
set_worksheet_data("FreelanceDashboard.xlsx", "Data_Temps",
[["10/01/2025", "CLI001", "Nouveau", 2.5, "Test"]],
start_cell="A12")
```
### Lister les tables
```
list_excel_tables("FreelanceDashboard.xlsx")
```
### Ouvrir Excel visible
```
open_in_office("FreelanceDashboard.xlsx")
```
### Executer macro refresh
```
run_macro("FreelanceDashboard.xlsm", "RefreshDashboard")
```
---
## Ce qui doit etre fait dans Excel UI
| Element | Raison |
|---------|--------|
| Tableaux Croises Dynamiques | Interface complexe |
| Graphiques | Design visuel precis |
| Slicers | Connexion aux TCD |
| Mise en forme conditionnelle | Regles visuelles |
| Layout Dashboard | Positionnement precis |
---
## Workflow Complet
```
1. Creer fichier Excel vide → Manuel
2. set_worksheet_data → Donnees clients
3. set_worksheet_data → Donnees temps
4. set_worksheet_data → Donnees revenus
5. create_excel_table (x3) → Tables structurees
6. set_worksheet_data → Config
7. set_worksheet_data → Formules KPIs
8. Creer TCD → Excel UI
9. Creer graphiques → Excel UI
10. Design dashboard → Excel UI
11. inject_vba → Macro refresh (optionnel)
```
---
## Fichiers de Reference
| Fichier | Contenu |
|---------|---------|
| `DATA_MODEL.md` | Schema tables + donnees demo |
| `FORMULAS.md` | Toutes les formules Excel |
| `PLAN.md` | Layout, couleurs, phases |

587
plans/implemPlan.md Normal file
View File

@ -0,0 +1,587 @@
# 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

Binary file not shown.