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:
commit
3a2fb2187e
26
.gitignore
vendored
Normal file
26
.gitignore
vendored
Normal 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
12
.mcp.json
Normal 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
263
CLAUDE.md
Normal 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
203
DATA_MODEL.md
Normal 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
348
FORMULAS.md
Normal 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
230
PLAN.md
Normal 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
62
README.md
Normal 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
260
docs/MCP_VBA_GUIDE.md
Normal 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
587
plans/implemPlan.md
Normal 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
|
||||
BIN
templates/FreelanceDashboard.xlsx
Normal file
BIN
templates/FreelanceDashboard.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user