- KPIs complets (CA, Heures, Taux, Stats, Objectifs) - Graphiques CA par client + Heures par client - TCD Heures x Client x Projet avec Slicer interactif - Checkboxes dynamiques bien positionnes (E3:E7) - Documentation technique et guides MCP Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
261 lines
6.4 KiB
Markdown
261 lines
6.4 KiB
Markdown
# 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 |
|