commit c37f1244b2abb33b3cc55e21f6c37ec47cc6665e Author: StillHammer Date: Wed Jan 21 17:56:24 2026 +0700 Freelance Dashboard v1.0 - Excel KPI Dashboard for freelance tracking diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..afbdd0a --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Excel temp files +~$* +*.tmp + +# Excel lock files +*.xlk + +# Windows reserved names +nul +con +prn +aux + +# Windows system files +Thumbs.db +Desktop.ini + +# Backups +*.bak +*_backup_*.xlsm + +# Local config +.mcp.json +.claude/ diff --git a/DATA_MODEL.md b/DATA_MODEL.md new file mode 100644 index 0000000..58b0744 --- /dev/null +++ b/DATA_MODEL.md @@ -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 diff --git a/FORMULAS.md b/FORMULAS.md new file mode 100644 index 0000000..105a6e3 --- /dev/null +++ b/FORMULAS.md @@ -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 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0008ae1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Alexis Trouve + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 0000000..c6c36b5 --- /dev/null +++ b/PLAN.md @@ -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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..1cefb5e --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# Freelance Dashboard + +Excel KPI Dashboard for freelance activity tracking - Revenue, time tracking, clients with pivot tables, charts and VBA automation. + +## Features + +- **Structured Data Tables** - Clients, time entries, revenue tracking +- **Dynamic KPIs** - Total revenue, hourly rate, active clients, top client +- **Pivot Tables** - Revenue by client, by month, hours by project +- **Interactive Charts** - Pie chart, bar charts, trends +- **Slicers** - Filter by client and period +- **VBA Automation** - One-click refresh, rebuild dashboard +- **Professional Design** - Clean layout, conditional formatting + +## File Structure + +| Sheet | Content | +|-------|---------| +| Dashboard | Main view with KPIs, charts and slicers | +| Data_Clients | Client list (ID, name, sector, start date) | +| Data_Temps | Time entries (date, client, project, hours) | +| Data_Revenus | Revenue entries (date, client, amount, type) | +| Config | Settings (year, default rate, objectives) | +| TCD_Data | Pivot tables data | + +## KPIs + +- Total Revenue +- Current Month Revenue +- Total Hours +- Average Hourly Rate +- Number of Active Clients +- Top Client (by revenue) +- Hours This Week +- Unique Projects Count + +## VBA Macros + +| Macro | Description | +|-------|-------------| +| `RefreshDashboard` | Recalculates formulas and refreshes pivot tables | +| `QuickRefresh` | Silent refresh (no message) | +| `RebuildAll` | Rebuilds entire dashboard from scratch | +| `CreatePivotTables` | Creates/recreates pivot tables | +| `CreateCharts` | Creates/recreates charts | +| `CreateSlicers` | Creates/recreates slicers | +| `ApplyDesign` | Applies professional formatting | + +## Screenshots + +*Coming soon* + +## Requirements + +- Microsoft Excel 2016+ (or Microsoft 365) +- Macros enabled for VBA features + +## Usage + +1. Open `FreelanceDashboard.xlsm` +2. Enable macros when prompted +3. Add your data in Data_Clients, Data_Temps, Data_Revenus +4. Press `Alt+F8` and run `RefreshDashboard` to update + +## Author + +Alexis Trouve - alexistrouve.pro@gmail.com + +## License + +MIT License - See [LICENSE](LICENSE) file diff --git a/templates/FreelanceDashboard.xlsm b/templates/FreelanceDashboard.xlsm new file mode 100644 index 0000000..bb64ae1 Binary files /dev/null and b/templates/FreelanceDashboard.xlsm differ