# 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