Comment écrire un texte à l’envers avec la fonction personnalisée INVERSER() en VBA Excel
Aujourd’hui, je vous propose un nouveau tutoriel, dans lequel nous allons créer une petite fonction personnalisée assez amusante, puisque celle-ci va nous permettre d’écrire un texte à l’envers.
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
Comme nous l’avons vu dans la courte introduction de ce tutoriel, je vous propose de découvrir comment créer une petite fonction personnalisée sur Excel, qui va nous permettre d’inverser le contenu d’une cellule passée en argument.
Si l’inversion en elle-même ne pose pas de problème particulier, il sera important que nous fassions attention au fait que la fonction puisse gérer plusieurs types de données, qu’il s’agisse de textes ou encore de nombres, nous y reviendrons un peu plus tard.
2. Comment créer une fonction personnalisée sur Excel
Pour créer notre fonction personnalisée, nous allons bien entendu devoir passer par le développement d’une petite macro-commande en VBA.
Pour que ce tutoriel reste accessible à tout le monde, nous allons revenir dans le détail sur aspect de cette dernière.
Si vous souhaitez aller plus loin dans la découverte du langage VBA, vous pouvez évidemment consulter la formation disponible sur le blog en cliquant ici.
Pour commencer, nous allons lancer l’éditeur de code VBE (pour Visual Basic Editor), qui est l’éditeur de code intégré dans les différentes applications de la suite Office et qui permet de développer des macro-commandes en VBA.
Pour cela, nous appuyons simplement sur les touches [Alt]+[F11] :
VBE s’ouvre alors et nous allons commencer par créer un nouveau module.
Un module est une feuille de saisie de code dans laquelle nous allons pouvoir saisir nos macros et fonctions.
Pour insérer un nouveau module, nous nous rendons dans le menu Insertion > Module :
Une fois le module inséré, nous allons pouvoir insérer notre fonction personnalisée en saisissant simplement le mot-clé Function, suivi du nom de la fonction.
3. La fonction INVERSER()
Le nom que nous donnons à une fonction est très important, car celui-ci permettra de pouvoir identifier facilement celle-ci, et doit être retenu facilement pour ne pas avoir à le chercher trop longtemps.
Nous allons donc appeler la fonction INVERSER() :
Function INVERSER()
End Function
Comme vous pouvez le constater, lorsque nous validons la création de la fonction en appuyant sur la touche [Entrée] du clavier, Excel ajoute deux éléments automatiquement :
- Tout d’abord Excel ajouter des parenthèses après le nom de la fonction, qui permettra ensuite de pouvoir insérer des arguments à la fonction,
- Excel ajoute également la ligne « End Function » qui permet de marquer la fin de la fonction. Tout ce qui sera inscrit entre ces deux lignes sera exécuté à chaque fois que nous allons lancer la fonction
Pour commencer, nous allons donc pouvoir définir un argument à notre fonction qui permettra de saisir une valeur que nous allons voir manipuler afin d’en récupérer la valeur inversée.
Nous allons appeler cet argument valeur, et étant donné que l’utilisateur doit être capable de saisir toute sorte de donnée (nombres ou textes), nous allons typer cet argument en tant que Variant.
Function INVERSER(valeur As Variant)
End Function
Ensuite, nous allons déclarer deux variables qui vont nous permettre de faire fonctionner la macro :
- La variable i tout d’abord qui va nous permettre de passer en revue chaque caractère de l’argument, nous typons cette variable en tant qu’Integer,
- Puis la variable valeurInversee qui va permettre de construire la nouvelle chaîne de caractères à retourner avec la fonction
Dim i As Integer
Dim valeurInversee As String
4. Utiliser une boucle For... Next inversée !
Maintenant que la variable i est disponible, nous allons pouvoir mettre en place une boucle For… Next qui permet d’exécuter une commande tant qu’une variable est vraie.
Si vous souhaitez en savoir plus sur les boucles For… Next, vous pouvez suivre le chapitre dédiée tiré de la formation sur l’apprentissage de VBA.
Pour cette boucle, nous commençons par donner à la variable i la valeur 1, et nous allons vouloir que celle-ci se répète jusqu’à ce qui ai pour valeur le nombre de caractères dont est composé la variable valeur.
Pour connaître ce nombre de caractères, Excel dispose de la fonction Len() :
For i = 1 To Len(valeur)
Next
Ensuite, nous pouvons construire la variable valeurInversee, laquelle est égale à sa propre valeur à laquelle nous concaténons le caractère obtenu dans la variable valeur, mais en partant de la fin :
For i = 1 To Len(valeur)
valeurInversee = valeurInversee & Mid(valeur, Len(valeur) - i + 1, 1)
Next
Pour obtenir ce caractère, nous utilisons la fonction Mid(), qui permet d’obtenir une sous-chaîne issue d’une chaîne globale.
Cette fonction attend trois arguments :
- Tout d’abord la chaîne de caractères à partir de laquelle nous souhaitons extraire la sous-chaîne, il s’agit ici de la variable valeur
- Le second argument permet de spécifier à partir caractère nous souhaitons effectuer l’extraction, comme nous venons de le voir, la position de ce caractère dépend de la valeur de i, mais étant donné que nous souhaitons effectuer l’extraction en partant de la fin, nous allons retrancher la valeur de i au nombre de caractères contenus dans la variable valeur,
- Enfin, le troisième argument permet de spécifier combien de caractères nous souhaitons extraire, ici nous souhaitons effectuer l’extraction caractère par caractère, nous donnons donc la valeur de 1 à cet argument
Nous pouvons encore simplifier cette opération en inversant le sens du déroulement de la boucle (nous donnons à i le nombre de caractères contenus dans la variable valeur, puis nous déroulons la boucle en sens inverse pour que i finisse par être égal à 1).
De cette manière, nous pourrons directement récupérer le caractère qui nous intéresse en utilisant la variable i :
For i = Len(valeur) to 1 Step -1
valeurInversee = valeurInversee & Mid(valeur, i, 1)
Next
Pour inverser le sens de la boucle, nous ajoutons à la fin de la ligne contenant le For l’instruction Step -1, qui permet d’ôter une unité à chaque exécution de la boucle
5. Comment appeler la fonction personnalisée depuis la feuille de calculs Excel ?
Et voilà, maintenant que nous pouvons récupérer la valeur inversée de la variable passée en argument, il ne reste plus qu’à affecter cette valeur à la fonction :
INVERSER = valeurInversee
Nous pouvons maintenant tester la fonction directement dans la feuille de calcul, en l’appelant comme n’importe quelle autre fonction Excel :
=INVERSER(A7)
Ensuite nous pouvons étendre la formule sur les cellules situées en dessous :
6. Gérer les valeurs numériques
Il ne reste alors plus qu’un petit détail à régler.
En effet, comme nous pouvons le constater sur la ligne 9, bien que l’inversion d’une valeur numérique ait bien été effectuée, la cellule est alignée sur la gauche, ce qui signifie que celle-ci est reconnue comme une chaîne de caractères et non comme un nombre…
Pour corriger cette petite anomalie, nous allons simplement effectuer une conversion juste avant de retourner le résultat à la fonction, seulement lorsque le résultat est reconnu comme étant un nombre (pour cela nous allons utiliser la fonction IsNumeric() qui retourne la valeur True lorsque c’est le cas) :
If IsNumeric(valeurInversee) Then
valeurInversee = CDbl(valeurInversee)
End If
Le résultat de la ligne 9 et maintenant correctement aligné sur la droite de la cellule :