Excel formation - Page de vente TCd - 11 Découvrez la méthode complète pour analyser les données efficacement et sans effort avec les tableaux croisés dynamiques, en cliquant ici

COMMENT SUPPRIMER AUTOMATIQUEMENT LES ACCENTS DANS EXCEL

Dans ce nouveau tutoriel, je vais vous montrer comment supprimer automatiquement les accents saisis dans une feuille de calcul.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

 

1. Présentation

Comme nous venons de le voir dans l’introduction de ce tutoriel, je vais vous montrer comment procéder pour supprimer les accents présents dans une feuille de calcul Excel de manière automatique.

Pour cela, nous allons partir d’une liste de mots (Canoë, Kaléidoscope, Céder, Après,…) qui ont pour particularité d’avoir différents types d’accents.

Excel formation - Supprimer les accents - 01

Malheureusement Excel ne propose pas de fonction directement intégrée qui permette de supprimer ces accents !

Nous allons donc devoir passer par la construction d’une petite macro VBA très simple.

Tous les points que nous allons aborder ont déjà été étudiés dans le détail dans la formation gratuite que vous retrouverez sur le blog, que je vous conseille de consulter si vous souhaitez en savoir plus sur le fonctionnement du langage VBA en suivant simplement ce lien.

 

2. Une fonction pour supprimer les accents

Nous allons donc créer une nouvelle fonction en VBA qui va nous permettre de supprimer automatiquement les accents présents dans une chaîne de caractères.

Pour créer une fonction, nous allons commencer par lancer l’éditeur de code VBA en utilisant la combinaison de touches [Alt]+[f11].

Une fois que VBE (Visual Basic Editor, l’éditeur de code VBA intégré au sein des logiciels de la suite Office) est lancé, nous insérons un nouveau module en nous rendant dans le menu Insertion > Module

Excel formation - Supprimer les accents - 02

Un module est une feuille dans laquelle nous allons pouvoir saisir simplement des lignes de code qui vont correspondre à des macros commandes exécutées depuis Excel.

Chez moi, vous pouvez constater que le nouveau module contient déjà une ligne de code en première ligne

 

Option Explicit

 

Cette ligne impose que les variables utilisées dans le code soient explicitement déclarées, ce qui évite bien des erreurs !

Cliquez-ici pour en savoir plus sur cette ligne.

Pour commencer, nous allons créer notre fonction en saisissant le mot-clé Function suivi du nom que nous souhaitons lui attribuer (« sansAccent »):

 

Function sansAccent()
 
End Function

 

Lorsque nous validons (en appuyant sur la touche [Entrée]), Excel ajoute alors les parenthèses à la suite du nom de la fonction, ainsi que la fermeture de la fonctionEnd Function »).

Le code de la fonction va être à saisir entre ces deux lignes.

Maintenant que nous avons créé la fonction en elle-même, nous allons tout d’abord devoir donner à celle-ci la chaîne de caractères dans laquelle se trouve les accents que nous souhaitons modifier.

Pour cela, il suffit de saisir l’argument correspondant entre les parenthèses insérées par VBA sur la ligne de déclaration de la fonction :

 

Function sansAccent(mot As String)
 
End Function

 

S’agissant d’une chaîne de caractères, nous typons cet argument en tant que String.

Pour retourner un résultat à cette fonction, il va simplement s’agir d’utiliser l’opérateur d’affectation en utilisant le nom de la fonction, comme nous le ferions pour n’importe quelle variable

 

Function sansAccent(mot As String)

   sansAccent = mot
 
End Function

 

Évidemment, il ne s’agit ici que d’un exemple, nous retournons simplement le résultat saisi en argument, sans le moindre retraitement !

Pour utiliser cette fonction dans la feuille de calcul, il suffit de l’appeler par son nom, comme nous le ferions pour toutes les fonctions d’Excel.

Excel formation - Supprimer les accents - 03

 

 =sansAccent(A7) 

 

Maintenant que nous avons pu tester le bon fonctionnement de la fonction (même si celle-ci n’est encore sans aucun effet), nous allons faire un premier test qui va permettre de comprendre la logique de cette fonction.

Ce premier test va consister à remplacer tous les « é » par leur version sans accent, c’est-à-dire « e ».

Pour cela revenons dans le code de la fonction (nous pouvons passer rapidement d’Excel à VBE en utilisant la combinaison de touches [Alt]+[f11]).

Nous allons utiliser la fonction VBA Replace qui permet de remplacer un terme recherché par un autre terme dans une chaîne de caractères :

 

    mot = Replace(mot, "é", "e")
    sansAccent = mot

 

Cette fonction Replace attend trois arguments :

  • La chaîne de caractère sur laquelle nous souhaitons effectuer le remplacement,
  • Le terme recherché que nous allons souhaiter modifier au sein de la chaîne de caractères,
  • Le terme de remplacement

p>Comme vous pouvez le constater, nous modifions simplement ce terme dans la variable « mot » avant de le retourner en tant que résultat de fonction.

 

Pour tester cette fonction, il suffit de revenir dans la feuille de calcul, puis d’appuyer sur la touche [f9] afin de relancer les calculs sur la page.

Excel formation - Supprimer les accents - 04

Comme vous pouvez le constater, les « é » ont laissé leur place aux « e ».

Pour supprimer les « è », il suffit simplement de répéter l’opération :

 

    mot = Replace(mot, "è", "e")

 

Note : il est possible que VBE ne saisisse pas le caractère « è » correctement. Pas de panique, la macro sera quand même pleinement fonctionnelle !

Excel formation - Supprimer les accents - 05

Nous pourrions, en suivant ce fonctionnement saisir autant de lignes qu’il y a d’accents, mais évidemment, cette manière de procéder ne serait pas optimale.

Nous allons préférer utiliser une boucle qui va lister tous les accents possibles.

Pour cela, nous déclarons deux chaînes de caractères que nous allons appeler « listeAccents » et « listeLettres », toutes les deux en tant que String :

 

    Dim listeAccents  As String, listeLettres As String 

 

Dans la première, nous allons saisir tous les accents que nous allons vouloir supprimer de la base :

 

listeAccents = "éèëêàôùÉ"

 

Et dans la seconde, exactement les mêmes lettres, mais cette fois-ci non accentuées :

 

listeLettres = "eeeeaouE"

 

Puis, nous allons lancer une boucle qui va nous permettre de passer en revue toutes les lettres de la première chaîne afin de lancer la fonction Replace pour chacune d’entre elles.

Pour mettre en place cette boucle, nous commençons par déclarer une variable i que nous typons en tant que Integer et qui va nous permettre de passer en revue toutes les lettres contenues dans chacune de ces listes :

 

Dim i As Integer

 

Évidemment pour lister ainsi les lettres, nous utilisons une boucle For, au sein de laquelle la variable i va avoir pour valeur de départ 1, et la boucle va se répéter jusqu’à ce qu’elle celle-ci ait la valeur qui correspond au nombre de lettres contenues au sein des chaînes correspondantes :

 

For i = 1 To Len(listeAccents)
    Next
   

 

Comme vous pouvez le voir ici, la fonction Len permet d’obtenir le nombre de lettres contenues dans une chaîne.

Ensuite, il ne reste plus à procéder aux remplacements :

 

mot = Replace(mot, Mid(listeAccents, i, 1),  Mid(listeLettres, i, 1))

 

Nous demandons ici à la fonction de récupérer la lettre qui se trouve à l’emplacement i de la chaîne listeAccents en utilisant la fonction Mid.

Cette fonction Mid permet en effet de récupérer une partie seulement d’une chaîne de caractères principale.

Celle-ci attend les trois arguments suivants :

  • La chaîne de caractères depuis laquelle nous souhaitons extraire une partie,
  • La position à laquelle se trouve le premier caractère à extraire (il s’agit ici de la position de la lettre en cours de remplacement, retournée par la variable i),
  • Et enfin, le nombre de caractères à extraire (ici nous souhaitons extraire une lettre unique, donc cet argument a pour valeur « 1 »)

p>Cette fonction nous permet donc de récupérer la lettre accentuée que nous souhaitons supprimer.

 

Nous procédons exactement de la même manière pour récupérer la lettre non accentuée correspondante, que nous allons extraire de la variable « listeLettres »).

Cela étant fait, nous pouvons maintenant tester le résultat de la fonction directement depuis la feuille de calcul, tous les accents devraient avoir disparus !

Excel formation - Supprimer les accents - 06

Bien entendu, il existe tout un tas d’autres accents que nous n’avons pas utilisés ici, il suffit simplement de les ajouter dans les variables correspondantes (« listeAccents » pour les caractères accentués, et « listeLettres » pour les mêmes caractères sans accent) :

 

listeAccents = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ"  
listeLettres = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy" 

 

 

3. Les autres usage de la fonction sansAccent

Évidemment, la fonction que nous venons de créer peut aussi bien être utilisée dans la feuille de calcul, comme nous venons de le voir, que dans le code VBA.

Nous pouvons ainsi imaginer vouloir l’utiliser directement en tant que fonction dans le cadre du développement d’une macro commande VBA :

 

Sub testFonction()   Dim texte As String
    texte = "Après l'école les enfants iront au  ciné"
    
    MsgBox sansAccent(texte)
    
End Sub

 

 

Excel formation - Supprimer les accents - 07

Il est également possible d’automatiser la conversion des textes saisis dans une feuille de calcul pour supprimer les accents au fur et à mesure.

Pour cela, revenons dans la feuille de calcul d’Excel.

Puis, nous effectuons un clic-droit sur l’onglet de la feuille afin de sélectionner la ligne « Visualiser le code ».

Excel formation - Supprimer les accents - 08

De cette manière, VBE va à nouveau se lancer, mais cette fois-ci, plutôt que de présenter le module que nous avons créé juste avant, Excel à ouvert la page de saisie de code de la feuille de calcul depuis laquelle nous avons lancé l’éditeur de code.

Excel formation - Supprimer les accents - 09

Depuis cette feuille, nous allons pouvoir lancer des évènements, c’est-à-dire définir des actions à réaliser lorsqu’une opération particulière va se dérouler au sein de la feuille de calcul Excel !

Pour cela, il suffit de sélectionner la liste des évènements propres à la feuille de calcul (« Worksheet ») depuis le premier menu déroulant qui se trouve au-dessus de la feuille de code, puis dans le second menu, nous sélectionnons l’évènement « Change ».

Excel formation - Supprimer les accents - 10

À ce moment-là, Excel ajoute la ligne suivante dans la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
 
End Sub

 

Tout ce que nous allons saisir entre ces deux lignes va être lancé dès lors qu’une cellule va voir son contenu changer !

En plus de cela, la cellule concernée par le changement va nous être renvoyée par le biais de la variable Target.

Nous pouvons ainsi saisir la macro suivante :

 

Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Value = sansAccent(Target.Value)
End Sub

 

Et enfin, nous pouvons saisir un texte dans une cellule, afin de constater que les accents vont être supprimés lors de la validation de la cellule !

Excel formation - Supprimer les accents - 11

Bien entendu, l’exemple que nous venons de voir n’est présenté ici qu’à titre d’illustration et la macro demanderait d’être légèrement modifiée pour être utilisable.

En effet, si nous saisissons une formule, celle-ci sera automatiquement remplacée par sa valeur.

Pour corriger cela, il suffit de remplacer la propriété Value que nous avons utilisée par la propriété Formula.

Ensuite, si nous modifions plusieurs cellules en même temps, Excel nous retournera systématiquement une erreur.

L’astuce consiste alors à contrôler qu’une seule cellule est retournée par Target en utilisant la propriété Count :

 

    If Target.Count = 1 Then
        Target.Formula = sansAccent(Target.Formula)
    End If

 

Nous pouvons également utiliser une boucle For pour passer en revue toutes les cellules sélectionnées (voir le tutoriel vidéo).

 



Articles qui pourraient vous intéresser

Comment simplifier les formules avec l’automatisation des plages nommées d’Excel
Comment ajouter automatiquement une ligne lors d’un changement de valeur dans une colonne Excel
Comment tirer une lettre aléatoire pour créer un mot de passe incrackable – La fonction CAR() d’Excel
Comment créer une zone d’impression dynamique et intelligente sur Excel
Comment supprimer les lignes vides ou avec des cellules vides d’un tableau sur Excel
Comment géolocaliser une adresse sur Google Maps en 1 clic avec Excel
Comment calculer le taux de rendement interne d’un projet sur Excel (fonction TRI)
Comment envoyer la sélection par mail en 1 clic avec VBA sur Excel
Comment afficher plusieurs onglets d'un même classeur grâce au multi-fenêtrage d'Excel
Comment convertir des CSV en fichier Excel en masse (tous les fichiers d’un répertoire) avec VBA
6 Astuces pour envoyer facilement un fichier Excel par mail (sans VBA)
3 méthodes pour transformer un texte en majuscule (ou en minuscule) sur Excel

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.