Comment protéger automatiquement les cellules Excel après la saisie
Dans ce tutoriel, je vais vous montrer comment créer un système de protection intelligent qui verrouille automatiquement les cellules dès qu'une donnée y est saisie.
Cette technique est parfaite pour les formulaires de saisie où vous souhaitez empêcher toute modification ultérieure des informations, garantissant ainsi l'intégrité de vos données importantes.
Que vous gériez un registre client, un suivi de commandes ou des rapports d'activité, cette méthode vous permettra de sécuriser efficacement vos informations tout en maintenant une interface conviviale pour la saisie.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
Pour illustrer ce tutoriel, nous allons souhaiter mettre en place un registre des dépenses d'une petite entreprise.
L'objectif est simple : permettre aux employés de saisir leurs dépenses professionnelles, mais une fois enregistrées, ces informations ne pourront plus être modifiées sans autorisation spéciale, avec un mot de passe administrateur.
Voici le tableau que nous allons utiliser :
Ce tableau nous permettra de suivre efficacement les dépenses de l'entreprise tout en garantissant que les données saisies ne puissent pas être modifiées après coup, évitant ainsi toute falsification accidentelle ou intentionnelle, ce qui permet de garantir l'intégrité des données.
Par exemple, une fois qu'un employé a déclaré une dépense de 75€, il ne devrait pas pouvoir la modifier ultérieurement en 175€ sans passer par un processus de validation.
La méthode que nous allons voir présente plusieurs avantages :
- Elle prévient les modifications accidentelles des données déjà saisies
- Elle sécurise les informations contre les falsifications
- Elle conserve l'historique des données tel qu'il a été initialement enregistré
- Elle permet néanmoins aux administrateurs d'effectuer des corrections via un mot de passe
2. Préparation de notre feuille de suivi des dépenses
Avant d'implémenter notre code de protection, il est important de comprendre comment fonctionne la protection des feuilles dans Excel.
Par défaut, quand nous protégeons une feuille Excel, toutes les cellules sont verrouillées et ne peuvent pas être modifiées. Pour permettre la saisie dans certaines cellules, nous devons spécifiquement les déverrouiller avant d'activer la protection.
Dans notre cas, nous voulons un comportement plus dynamique : les cellules doivent être modifiables tant qu'elles
Pour commencer, nous allons donc configurer notre feuille pour que toutes les cellules de saisie soient initialement déverrouillées. Voici comment procéder :
- 1. Nous sélectionnons la plage des cellules dans lesquelles nous souhaitons permettre à l’utilisateur de saisir des informations, ici les cellules A7:F18
- 2. Nous faisons un clic droit et choisissons « Format de cellule » (ou utilisons le raccourci [Ctrl]+[1])
- 3. Dans la boîte de dialogue, nous allons dans l'onglet « Protection »
- 4. Nous décochons la case « Verrouillée » et cliquons sur « OK »
Cette étape est cruciale car elle permet aux utilisateurs de commencer à saisir des données dans toutes les cellules du tableau. Sans cette configuration initiale, les cellules seraient verrouillées dès le début, empêchant toute saisie.
Et donc maintenant, il ne reste plus qu’à activer la protection de la feuille avec un mot de passe.
Pour cela :
- Nous nous rendons dans l'onglet « Révision » du ruban Excel situé en haut de notre écran
- Nous cliquons sur le bouton « Protéger la feuille »
- Une boîte de dialogue s'ouvre alors avec plusieurs options
- Dans le champ « Mot de passe pour déprotéger la feuille », nous saisissons un mot de passe, par exemple : "azerty"
- Juste en dessous, nous vérifions que l'option « Sélectionner les cellules déverrouillées » est bien cochée (cette option est essentielle pour permettre aux utilisateurs de naviguer et sélectionner les cellules déverrouillées)
- Nous cliquons sur « OK »
- Excel nous demande de confirmer le mot de passe, nous saisissons à nouveau "azerty"
- Nous cliquons sur « OK » pour finaliser la protection
À ce stade, notre feuille est protégée avec le mot de passe "azerty", et seules les cellules que nous avons préalablement déverrouillées sont accessibles en écriture. Ce même mot de passe "azerty" devra être utilisé dans notre code VBA pour permettre les modifications automatiques de l'état de verrouillage des cellules.
Bien entendu, dans un environnement professionnel réel, nous devrions utiliser un mot de passe beaucoup plus sécurisé que "azerty", qui est trop simple et figure parmi les mots de passe les plus courants. Un bon mot de passe devrait comporter un mélange de lettres majuscules, minuscules, chiffres et caractères spéciaux, avec une longueur d'au moins 12 caractères pour une sécurité optimale.
3. Implémentation du code VBA pour le verrouillage automatique
Pour effectuer cette opération, nous allons mettre en place une petite macro en VBA.
Le VBA, pour Visual Basic for Applications, est un langage de programmation créé par Microsoft et intégré à toute la suite Office conçu pour interagir avec les applications comme Excel, Word ou Access. Celui-ci permet en effet d'ajouter de nombreuses fonctionnalités dans Excel qui vont bien au-delà des capacités standards du tableur.
Grâce au VBA, nous pouvons automatiser des tâches répétitives, créer des interfaces utilisateur personnalisées, manipuler les données de manière avancée, ou encore, comme dans notre cas, mettre en place des systèmes de sécurité intelligents.
Ici, nous allons passer assez rapidement sur les principes fondamentaux du VBA car notre objectif est de mettre en place rapidement notre système de verrouillage automatique, mais si vous souhaitez en savoir plus, et découvrir comment maîtriser ce langage puissant pour développer vos propres solutions sur mesure dans Excel, vous pouvez découvrir mon livre « Apprendre le VBA pour les grands débutants » en cliquant ici.
Ce guide vous accompagne pas à pas dans l'apprentissage du VBA, depuis les concepts de base jusqu'aux techniques avancées, avec de nombreux exemples pratiques et exercices pour consolider vos connaissances.
Pour accéder à l'éditeur VBA, nous utilisons le raccourci clavier [Alt]+[F11]. Une nouvelle fenêtre s'ouvre, c'est l'environnement de développement VBA.
Dans l'explorateur de projets (généralement situé à gauche), nous recherchons notre classeur actuel. Nous déployons l'arborescence pour trouver les feuilles de calcul. Nous double-cliquons sur la feuille qui contient le registre que nous souhaitons protéger :
Une fenêtre de code s'ouvre pour notre feuille. C'est ici que nous allons saisir notre macro de verrouillage automatique.
La macro que nous allons y insérer est un petit peu spéciale, étant donné qu'il s'agit ici d'une macro événementielle, c'est-à-dire que celle-ci s'exécute automatiquement en réponse à un événement spécifique qui se produit dans Excel. Les macros événementielles agissent comme des sentinelles qui surveillent certaines actions dans notre feuille de calcul et réagissent instantanément lorsqu'elles se produisent.
Ici, nous allons souhaiter que notre macro s'exécute chaque fois qu'une modification est apportée à une cellule de notre feuille. C'est cette réactivité qui nous permettra de verrouiller instantanément une cellule dès qu'une donnée y est saisie.
Pour l'ajouter automatiquement, nous sélectionnons « Worksheet » dans le menu déroulant situé en haut à gauche de la fenêtre de code, et dans la liste des événements située sur la droite, nous choisissons « Change ». Excel génère alors automatiquement le squelette de notre procédure événementielle avec la signature correcte, incluant le paramètre « Target » qui nous indiquera quelle cellule a été modifiée :
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Ce paramètre Target est crucial car il nous permettra de verrouiller précisément la cellule qui vient d'être modifiée, sans affecter les autres.
Une fois cette structure de base en place, nous n'avons plus qu'à ajouter notre code spécifique à l'intérieur pour implémenter la logique de verrouillage automatique. Notre objectif est simple : lorsqu'une cellule passe d'un état vide à un état contenant une valeur, nous voulons la verrouiller immédiatement.
Et pour commencer, nous ajoutons une instruction qui permet de désactiver temporairement les événements Excel pour éviter que notre code ne déclenche lui-même un nouvel événement de modification, ce qui pourrait créer une boucle infinie.
' Désactiver temporairement les événements pour éviter les boucles infinies
Application.EnableEvents = False
Cette ligne est essentielle dans tout code qui modifie des cellules au sein d'un événement Worksheet_Change. Sans cette précaution, chaque fois que notre code modifierait une propriété de cellule, cela pourrait déclencher un nouvel événement Change, qui exécuterait à nouveau notre code, créant ainsi une réaction en chaîne potentiellement infinie qui bloquerait Excel.
Maintenant, nous allons déprotéger temporairement la feuille pour nous permettre de modifier l'état de verrouillage des cellules, en utilisant le mot de passe « azerty » que nous avons utilisé plus tôt pour protéger la feuille.
' Déprotéger la feuille pour pouvoir modifier les propriétés des cellules
ActiveSheet.Unprotect Password:="azerty"
À présent, il va nous rester à vérifier si la cellule modifiée contient maintenant quelque chose, c'est-à-dire qu'elle n'est plus vide. Pour cela, nous utiliserons la méthode VBA IsEmpty qui nous retourne la valeur TRUE si la cellule est vide (ne contient aucune valeur) et FALSE si la cellule contient une valeur quelconque (texte, nombre, date, formule, etc.).
If IsEmpty(Target.Value) = False Then
End If
Si effectivement la cellule contient du contenu, nous souhaitons que celle-ci ne puisse plus être modifiée, nous modifions donc sa propriété « Locked » pour lui donner la valeur « True ».
Target.Locked = True
Une fois cette propriété définie, et après que la feuille sera à nouveau protégée, cette cellule ne pourra plus être modifiée par les utilisateurs sans le mot de passe.
Pour finir, nous n'oublions pas de reprotéger la feuille, et de réactiver les événements Excel pour rétablir le fonctionnement normal du classeur.
' Reprotéger la feuille
ActiveSheet.Protect Password:="azerty"
' Réactiver les événements
Application.EnableEvents = True
Maintenant, notre code est complet et fonctionnel. À chaque fois qu'un utilisateur modifiera une cellule dans la feuille, notre procédure événementielle s'exécutera automatiquement. Si la cellule modifiée contient maintenant une valeur, elle sera immédiatement verrouillée, empêchant toute modification ultérieure sans le mot de passe administrateur.
4. Test et utilisation du système de verrouillage
4.1. Vérification du fonctionnement
Pour tester notre système, nous allons effectuer quelques saisies dans notre tableau :
- 1. Nous cliquons sur la cellule A8 et saisissons une date, par exemple « 17/04/2025 »
- 2. Nous appuyons sur [Entrée] pour valider la saisie
- 3. Nous essayons maintenant de modifier cette même cellule
Nous constatons que la cellule A2 est maintenant verrouillée ! Si nous essayons de la modifier, Excel affiche un message d'erreur nous informant que la cellule est protégée. C'est exactement le comportement que nous recherchions.
Continuons notre test en remplissant d'autres cellules du tableau. À chaque fois, nous observons que les cellules se verrouillent automatiquement après la saisie, tandis que les cellules vides restent modifiables.
Nous saisissons ces informations ligne par ligne. À mesure que nous remplissons chaque cellule et appuyons sur [Entrée] ou [Tab] pour passer à la cellule suivante, nous observons que les cellules déjà remplies deviennent verrouillées.
4.2. Déverrouillage temporaire pour corrections
Dans un environnement réel, il peut arriver que nous ayons besoin de corriger une donnée déjà saisie. Dans ce cas, seul un administrateur connaissant le mot de passe pourra effectuer cette modification. Voici comment procéder :
- 1. Nous allons dans l'onglet « Révision » du ruban
- 2. Nous cliquons sur « Déprotéger la feuille »
- 3. Nous saisissons le mot de passe (« azerty » dans notre exemple)
- 4. Nous effectuons les corrections nécessaires
- 5. Une fois terminé, nous reprotégeons la feuille en cliquant sur « Protéger la feuille » dans l'onglet « Révision », en saisissant à nouveau le mot de passe
Cette procédure permet de maintenir la sécurité des données tout en offrant la flexibilité nécessaire pour effectuer des corrections légitimes.
Pour aller plus loin, nous pourrions encore ajouter d'autres fonctionnalités, comme un enregistrement automatique du classeur à chaque modification pour empêcher l’utilisateur de quitter sans enregistrer ces modifications, ou encore une option permettant à un administrateur de se connecter pour effectuer des modifications sur les cellules verrouillées sans avoir à déprotéger puis reprotéger manuellement toute la feuille, ou encore un système de journalisation qui enregistre toutes les modifications avec leur date, heure et l'identité de l'utilisateur qui les a effectuées.
Alors si vous souhaitez que nous allions plus loin dans l'exploration de ces fonctionnalités avancées, n'hésitez pas à m'en faire part dans l'espace des commentaires, pour que je fasse une suite à cette vidéo