Freelance Dashboard v1.0 - Excel KPI Dashboard for freelance tracking
This commit is contained in:
commit
c37f1244b2
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@ -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/
|
||||
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
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -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.
|
||||
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
|
||||
71
README.md
Normal file
71
README.md
Normal file
@ -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
|
||||
BIN
templates/FreelanceDashboard.xlsm
Normal file
BIN
templates/FreelanceDashboard.xlsm
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user