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