Skip to content

MiniSheet - Application Tableur en Rust Une application de tableur riche en fonctionnalités construite avec Rust et egui/eframe, inspirée d'Excel. MiniSheet offre une expérience de tableur desktop moderne et performante avec un support complet des formules, du formatage des cellules et des outils de manipulation de données.

Notifications You must be signed in to change notification settings

michaelgermini/MiniSheet---Application-Tableur-en-Rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniSheet - Application Tableur en Rust

Une application de tableur riche en fonctionnalités construite avec Rust et egui/eframe, inspirée d'Excel. MiniSheet offre une expérience de tableur desktop moderne et performante avec un support complet des formules, du formatage des cellules et des outils de manipulation de données.

📸 Captures d'écran

Mode Clair

MiniSheet - Mode Clair

Mode Sombre

MiniSheet - Mode Sombre

🚀 Fonctionnalités

Fonctionnalités Principales

  • Grille Infinie : Tableur défilable avec expansion dynamique des lignes/colonnes
  • Sélection de Cellules : Support de la sélection simple, de plage et multiple
  • Édition In-Cell : Édition directe dans la cellule avec F2 ou double-clic
  • Barre de Formule : Saisie de formule dédiée avec bouton d'application
  • Recalcul Automatique : Suivi intelligent des dépendances avec détection de cycles
  • Annuler/Rétablir : Historique illimité d'annulation/rétablissement (Ctrl+Z / Ctrl+Y)
  • Copier/Coller : Support complet du presse-papiers (Ctrl+C / Ctrl+V)

Formules et Fonctions

Opérateurs de Base

  • Arithmétiques : +, -, *, /
  • Puissance : ^
  • Comparaisons : =, <>, <, >, <=, >=
  • Parenthèses : () pour le regroupement

Références de Cellules

  • Relative : A1, B2 (s'ajuste lors de la copie)
  • Absolue : $A$1 (ligne et colonne fixes)
  • Mixte : $A1 (colonne fixe), A$1 (ligne fixe)
  • Plages : A1:B5, SUM(A1:A10)

Fonctions Intégrées

Mathématiques :

  • SUM(plage) - Somme des valeurs
  • AVG(plage) - Moyenne des valeurs
  • MIN(plage) - Valeur minimale
  • MAX(plage) - Valeur maximale
  • COUNT(plage) - Nombre de valeurs numériques
  • ABS(valeur) - Valeur absolue
  • SQRT(valeur) - Racine carrée
  • ROUND(valeur, décimales) - Arrondir à un nombre de décimales
  • POWER(base, exposant) - Élever à une puissance

Conditionnelles :

  • IF(condition, valeur_vrai, valeur_faux) - Logique conditionnelle
  • SUMIF(plage, critère) - Somme avec condition
  • COUNTIF(plage, critère) - Compter avec condition
  • AVERAGEIF(plage, critère) - Moyenne avec condition

Fonctions de Texte :

  • CONCATENATE(texte1, texte2, ...) ou CONCAT(...) - Joindre du texte
  • LEFT(texte, nb_caractères) - Extraire les caractères de gauche
  • RIGHT(texte, nb_caractères) - Extraire les caractères de droite
  • MID(texte, position_début, nb_caractères) - Extraire les caractères du milieu

Fonctions de Recherche :

  • VLOOKUP(valeur_recherche, tableau, index_colonne, [recherche_approximative]) - Recherche verticale
  • HLOOKUP(valeur_recherche, tableau, index_ligne, [recherche_approximative]) - Recherche horizontale

Manipulation de Données

Poignée de Recopie

  • Détection Intelligente de Séquences : Détecte automatiquement les séquences numériques (1, 2, 3...) et les séquences de texte (Jan, Fév, Mar... ou Lun, Mar, Mer...)
  • Ajustement des Formules : Ajuste automatiquement les références relatives lors du remplissage
  • Glisser pour Remplir : Cliquez et glissez le petit carré dans le coin inférieur droit des cellules sélectionnées

Recherche et Remplacement

  • Rechercher : Rechercher dans toutes les cellules (Ctrl+F)
  • Remplacer : Remplacer une occurrence ou toutes les occurrences
  • Navigation : Naviguer dans les résultats avec les boutons Précédent/Suivant

Tri

  • Tri par Colonne : Cliquez sur les boutons ▲/▼ dans les en-têtes de colonnes
  • Support Multi-Type : Gère le tri numérique et textuel
  • Croissant/Décroissant : Basculer la direction du tri

Sélection Multiple

  • Sélection de Plage : Shift+Clic pour sélectionner des plages rectangulaires
  • Sélection Discontinue : Ctrl+Clic pour sélectionner plusieurs cellules non adjacentes
  • Tout Sélectionner : Ctrl+A pour sélectionner toute la feuille

Formatage des Cellules

Formatage du Texte

  • Gras (Ctrl+B)
  • Italique (Ctrl+I)
  • Couleur du Texte : Couleur de premier plan personnalisée
  • Couleur de Fond : Arrière-plan de cellule personnalisé

Alignement

  • Options d'alignement Gauche, Centre, Droite

Options d'Affichage

  • Afficher les Formules : Basculer pour afficher les formules au lieu des valeurs (Ctrl+`)

Opérations sur les Fichiers

  • Nouveau : Créer une nouvelle feuille de calcul (Ctrl+N)
  • Ouvrir : Ouvrir un fichier existant (Ctrl+O)
  • Enregistrer : Enregistrer le fichier actuel (Ctrl+S)
  • Enregistrer sous : Enregistrer dans un nouveau fichier (Ctrl+Shift+S)
  • Format : Format de fichier JSON avec sérialisation complète

Interface Utilisateur

Thèmes

  • Mode Sombre : Basculer entre les thèmes clair et sombre
  • Palette Personnalisée : Schéma de couleurs cohérent dans toute l'application
  • Barre de Statut : Messages de statut codés par couleur (OK, Avertissement, Erreur)

Retour Visuel

  • Mise en Surbrillance de la Sélection : Indication visuelle claire des cellules sélectionnées
  • Retour d'Erreur : Les cellules avec erreurs affichent un fond rouge
  • Mise en Surbrillance des Dépendances : Cellules référencées surlignées quand une cellule avec formule est sélectionnée
  • Effets au Survol : Retour visuel sur les éléments interactifs
  • Infobulles : Infobulles utiles sur les boutons et contrôles

Gestion des Colonnes

  • Colonnes Redimensionnables : Glisser les bordures des colonnes pour redimensionner
  • Ajustement Automatique : Ajustement automatique de la largeur des colonnes selon le contenu

Figer les Volets

  • Figer la Première Ligne : Garder la ligne d'en-tête visible lors du défilement
  • Figer la Première Colonne : Garder la première colonne visible lors du défilement

📋 Raccourcis Clavier

Navigation

  • Flèches : Déplacer la sélection
  • Tab : Aller à droite (Shift+Tab : aller à gauche)
  • Entrée : Aller en bas (Shift+Entrée : aller en haut)
  • Home : Aller à la première colonne
  • End : Aller à la dernière colonne
  • F2 : Entrer en mode édition
  • Échap : Annuler l'édition

Édition

  • Ctrl+Z : Annuler
  • Ctrl+Y ou Ctrl+Shift+Z : Rétablir
  • Ctrl+C : Copier
  • Ctrl+V : Coller
  • Suppr ou Retour arrière : Effacer la cellule

Formatage

  • Ctrl+B : Basculer le gras
  • Ctrl+I : Basculer l'italique
  • Ctrl+` : Basculer l'affichage des formules

Opérations sur les Fichiers

  • Ctrl+N : Nouvelle feuille de calcul
  • Ctrl+O : Ouvrir un fichier
  • Ctrl+S : Enregistrer
  • Ctrl+Shift+S : Enregistrer sous

Sélection

  • Ctrl+A : Sélectionner toutes les cellules
  • Ctrl+F : Ouvrir la boîte de dialogue Rechercher et Remplacer

🛠️ Installation

Prérequis

  • Toolchain Rust (installer depuis rustup.rs)
  • Cargo (fourni avec Rust)

Compilation depuis les Sources

# Cloner ou naviguer vers le répertoire du projet
cd exxel

# Compiler le projet
cargo build --release

# Exécuter l'application
cargo run --release

Dépendances

Le projet utilise les crates suivantes :

  • eframe = "0.27" - Framework GUI natif
  • egui = "0.27" - Bibliothèque GUI en mode immédiat
  • serde = "1.0" - Framework de sérialisation
  • serde_json = "1.0" - Support JSON
  • rfd = "0.14" - Dialogues de fichiers natifs

📖 Exemples d'Utilisation

Calculs de Base

A1: 10
A2: 20
A3: =A1+A2        → 30
A4: =A1*A2        → 200
A5: =A2/A1        → 2

Utilisation de Fonctions

A1: 5
A2: 10
A3: 15
A4: =SUM(A1:A3)   → 30
A5: =AVG(A1:A3)   → 10
A6: =MAX(A1:A3)   → 15
A7: =MIN(A1:A3)   → 5

Logique Conditionnelle

A1: 85
A2: =IF(A1>=90, "A", IF(A1>=80, "B", "C"))  → "B"

Fonctions de Texte

A1: "Hello"
A2: "World"
A3: =CONCATENATE(A1, " ", A2)  → "Hello World"
A4: =LEFT(A1, 3)              → "Hel"
A5: =RIGHT(A1, 3)              → "llo"

Exemple de Poignée de Recopie

  1. Saisir 1 dans A1
  2. Saisir 2 dans A2
  3. Sélectionner A1:A2
  4. Glisser la poignée de recopie (petit carré) vers le bas jusqu'à A10
  5. Résultat : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Copie de Formule Relative

  1. Saisir =A1+B1 dans C1
  2. Sélectionner C1 et glisser la poignée de recopie jusqu'à C5
  3. C2 devient =A2+B2, C3 devient =A3+B3, etc.

🏗️ Architecture

Main Components

  • App: Main application state and UI logic
  • Sheet: Spreadsheet data model (cells, formulas, formats)
  • CellValue: Enum representing cell value types (Empty, Number, Text, Error)
  • FormulaParser: Recursive descent parser for formula evaluation
  • Selection: Selection state management (Single, Range, Multiple)
  • Theme: Color palette and visual styling

Key Features

  • Incremental Recalculation: Only recalculates cells affected by changes
  • Cycle Detection: Prevents circular references
  • Error Handling: Comprehensive error messages and validation
  • Serialization: Full save/load support with custom HashMap serialization

📚 Documentation

MiniSheet dispose d'une documentation complète organisée en deux parties : des guides pratiques dans le dossier Guide/ et une documentation technique approfondie dans le dossier livre/.


📖 Guides Pratiques

Les guides pratiques sont disponibles dans le dossier Guide/ et couvrent des sujets spécifiques :

Guides Utilisateur

Guides Développeur

Guides Techniques

Guides Outils et Build

Guides Formats


📚 Documentation Technique Complète

MiniSheet est accompagné d'une documentation technique approfondie structurée en livre, couvrant tous les aspects du développement et de l'architecture.

Accès à la documentation

La documentation complète se trouve dans le dossier livre/ :

Contenu de la documentation

Chapitres principaux

  • Chapitre 1 : Introduction à MiniSheet - Présentation, historique, technologies
  • Chapitre 2 : Architecture et conception - Modules, données, sélection, thèmes
  • Chapitre 3 : Fonctionnalités de base - Grille, navigation, édition, sauvegarde
  • Chapitre 4 : Formules et fonctions - Parsing, évaluation, dépendances
  • Chapitre 5 : Interface utilisateur - egui, événements, rendu, composants
  • Chapitre 6 : Algorithmes et optimisation - Recherche, tri, mémoire, calculs
  • Chapitre 7 : Fonctionnalités avancées - Formatage conditionnel, validation, tableaux croisés
  • Chapitre 8 : Perspectives et développement - Limites, améliorations futures

Annexes spécialisées

Pour les développeurs

La documentation technique inclut :

  • Exemples de code Rust complets et fonctionnels
  • Architectures détaillées avec diagrammes
  • Algorithmes optimisés avec explications
  • Patterns de conception utilisés
  • Guides de contribution pour le développement

Pour les utilisateurs avancés

La documentation couvre :

  • Fonctionnalités avancées non documentées dans ce README
  • Exemples pratiques d'utilisation
  • Optimisations de performance
  • Dépannage et résolution de problèmes

Structure des fichiers

📁 Guide/                                    # Guides pratiques
├── 📄 GUIDE_UTILISATEUR.md                  # Guide utilisateur
├── 📄 GUIDE_FORMULES.md                     # Guide des formules
├── 📄 RACCOURCIS_CLAVIER.md                 # Raccourcis clavier
├── 📄 GUIDE_DEVELOPPEMENT.md                # Guide développeur
├── 📄 GUIDE_DEBUGGING.md                    # Guide débogage
├── 📄 API.md                                # Documentation API
├── 📄 ARCHITECTURE.md                       # Architecture technique
├── 📄 PERFORMANCE.md                        # Guide performance
├── 📄 SECURITE.md                           # Guide sécurité
├── 📄 GUIDE_DEPLOIEMENT.md                  # Guide déploiement
├── 📄 CARGO_TOML.md                         # Cargo.toml
├── 📄 CARGO_LOCK.md                         # Cargo.lock
├── 📄 TARGET_DIRECTORY.md                   # Répertoire target
├── 📄 TARGET_BUILDS.md                      # Build targets
└── 📄 FORMATS_FICHIERS.md                   # Formats de fichiers

📁 livre/                                    # Documentation technique approfondie
├── 📄 [README.md](./livre/README.md)                          # Guide de navigation
├── 📄 [TABLE_DES_MATIERES.md](./livre/TABLE_DES_MATIERES.md) # Table des matières complète
├── 📁 chapitre01/ à chapitre08/                              # 8 chapitres détaillés
│   └── 📄 Sections numérotées (1.1, 1.2, etc.)
└── 📁 annexes/                                               # 5 annexes pratiques
    ├── 📄 [annexe_A_fonctions_reference.md](./livre/annexes/annexe_A_fonctions_reference.md)
    ├── 📄 [annexe_B_raccourcis_clavier.md](./livre/annexes/annexe_B_raccourcis_clavier.md)
    ├── 📄 [annexe_C_structure_donnees.md](./livre/annexes/annexe_C_structure_donnees.md)
    ├── 📄 [annexe_D_exemples_pratiques.md](./livre/annexes/annexe_D_exemples_pratiques.md)
    └── 📄 [annexe_E_guide_contribution.md](./livre/annexes/annexe_E_guide_contribution.md)

🐛 Limitations Connues

  • Pas de support multi-feuilles (une seule feuille)
  • Pas de support de graphiques
  • Pas d'import/export Excel (.xlsx)
  • Validation de données basique uniquement
  • Pas de commentaires de cellules
  • Pas de règles de formatage conditionnel

🔮 Améliorations Futures

Fonctionnalités potentielles pour les versions futures :

  • Feuilles multiples avec onglets
  • Génération de graphiques
  • Support du format de fichier Excel (.xlsx)
  • Validation de données avancée
  • Commentaires de cellules
  • Formatage conditionnel
  • Fonctionnalité d'enregistrement automatique
  • Fonctions plus avancées (DATE, TIME, etc.)

📝 Licence

Ce projet est fourni tel quel à des fins éducatives et personnelles.

🤝 Contribution

Il s'agit d'un projet personnel, mais les suggestions et commentaires sont les bienvenus !

📧 Support

Pour les problèmes ou questions, veuillez consulter les commentaires du code ou créer une issue dans le dépôt du projet.


MiniSheet - Une application de tableur moderne construite avec Rust 🦀

About

MiniSheet - Application Tableur en Rust Une application de tableur riche en fonctionnalités construite avec Rust et egui/eframe, inspirée d'Excel. MiniSheet offre une expérience de tableur desktop moderne et performante avec un support complet des formules, du formatage des cellules et des outils de manipulation de données.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages