Comment extraire un nombre à partir d’un texte automatiquement sur Excel ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, je vais vous montrer comme créer une formule qui va nous permettre de convertir rapidement un texte en un nombre afin de pouvoir l’utiliser facilement dans un 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

 

Partie 1 : Comment extraire un nombre contenu dans un texte ?

 

Partie 2 : Comment extraire un ou plusieurs nombres (au début, au milieu ou à la fin)

 

1. Introduction

Comme nous l’avons vu dans l’introduction de ce tutoriel, nous allons voir comment analyser un texte contenant un uafin d’extraire celui-ci pour pouvoir l’exploiter dans un calcul.

Pour cela, nous allons partir de la petite liste de fruits et légumes suivantes :

Excel formation - extraire nombre d un texte - 01

Comme vous pouvez le constater, chaque élément de cette liste est placé sur la gauche des cellules, ce qui signifie que pour Excel, il s’agit de textes et non de nombres.

La raison est ici évidente : dès qu’Excel détecte au moins un caractère non numérique dans une cellule, alors il va considérer qu’il s’agit d’une chaîne de caractères, et non d’un nombre.

C’est pourquoi, si nous essayons d’encapsuler les valeurs de cette liste dans une formule, Excel nous retournera une valeur erronée :

Excel formation - extraire nombre d un texte - 02

Le total de ces cellules retourné ici par la fonction SOMME() est en effet de 0.

 

2. Extraire les valeurs numériques d’une chaîne de caractères

Ici, nous allons donc exploiter la colonne « Nombre » située juste à droite, et nous allons souhaiter y insérer uniquement le nombre de fruits ou de légumes, sans le nom de celui-ci.

Dans cet exemple, nous allons pouvoir utiliser la fonction GAUCHE() pour récupérer les deux premiers caractères de la chaîne.

Comme nous l’avons déjà vu dans le tutoriel dédié à cette fonction, celle-ci permet d’extraire les premiers caractères contenus dans une cellule :

=GAUCHE(B8;2)

Excel formation - extraire nombre d un texte - 03

Excel nous indique alors qu’il y a 18 carottes.

En revanche, comme nous pouvons le constater, ce résultat est toujours placé sur la gauche de la cellule, signe que pour Excel il s’agit encore d’un texte ! En effet, la fonction GAUCHE() renverra toujours une chaîne de caractères, peu importe le contenu véritablement retourné…

Mais pas de soucis, pour convertir un texte en nombre, nous pouvons utiliser la fonction CNUM() dans laquelle nous allons passer en argument la fonction GAUCHE() que nous venons d’insérer :

=CNUM(GAUCHE(B8;2))

Excel formation - extraire nombre d un texte - 04

Maintenant, la cellule est bien placée à droite de la cellule, et se retrouve dans le résultat de la cellule C18 dans laquelle est insérée la fonction SOMME().

Ensuite, pour étendre cette formule sur toutes les cellules de la colonne, nous pouvons faire glisser la poignée de recopie vers le bas :

Excel formation - extraire nombre d un texte - 05

Pour conserver la mise en forme déjà appliquée, nous utiliserons plutôt le bouton droit de la souris afin de faire apparaître un menu contextuel, sur lequel nous choisissons de ne dupliquer que les valeurs, sans la mise en forme :

Excel formation - extraire nombre d un texte - 06

À ce moment-là, nous pouvons repérer deux anomalies :

Excel formation - extraire nombre d un texte - 07

Tout d’abord, lorsque la cellule ne contient aucune valeur, la formule nous retourne une erreur #VALEUR!.

Cette erreur nous est retournée par la fonction CNUM() qui ne trouve pas de texte à convertir en nombre.

Pour régler ce problème, nous allons pouvoir utiliser la fonction SIERREUR() qui permet d’effectuer un test sur le contenu d’une cellule, ou sur le résultat d’une forme afin de retourner une valeur alternative lorsque ce test retourne une erreur :

=SIERREUR(CNUM(GAUCHE(B8;2));0)

Ici, nous choisissons de retourner la valeur zéro lorsque la fonction CNUM() retourne effectivement une erreur.

Pour modifier toutes les cellules sélectionnées en même temps, nous validons en appuyant sur les touches [Ctrl]+[Entrée].

Le second problème que nous pouvons relever se situe sur la ligne « 124 Noisettes ».

En effet, étant donné que nous avons demandé à Excel d’extraire les deux premiers caractères de la cellule, celui-ci ne tient pas compte du reste du contenu de la cellule.

La solution va alors consister à obtenir le nombre de caractères à extraire de manière dynamique en demandant à Excel de retrouver la position de l’espace au sein de la chaîne de caractères.

Et pour cela, nous pouvons utiliser la fonction TROUVE() que nous avons déjà eu l’occasion de découvrir dans un tutoriel précédent.

=SIERREUR(CNUM(GAUCHE(B8;TROUVE(" ";B8)));0) 

Nous remplaçons le chiffre « 2 » que nous avions inséré dans la forme par cette fonction TROUVE() dans laquelle nous commençons par spécifier le caractère pour lequel nous souhaitons obtenir la position (l’espace), puis la cellule dans laquelle nous devons effectuer cette recherche.

Ici encore, nous validons en appuyant sur les deux touches [Ctrl] et [Entrée] :

Excel formation - extraire nombre d un texte - 08

Et nous retrouvons bien le bon nombre d’éléments de chaque ligne dans la colonne Nombre.

Nous pouvons maintenant ajouter une nouvelle ligne pour retrouver la valeur de celle-ci directement ajoutée dans le total :

Excel formation - extraire nombre d un texte - 09

Alors évidemment, comme nous l’avons un peu plus tôt, cet exemple est simplifié au maximum en limitant l’analyse sur des textes sur lesquels le nombre se retrouve au tout début de la cellule.

Si ce nombre pouvait se trouver à n’importe quel endroit de la chaîne (par exemple « Pack de 18 pommes rouges »), ou même avec plusieurs nombres dans une seule cellule (par exemple « Pack de 18 pommes rouges et de 12 pommes vertes »), alors l’analyse serait bien plus complexe et nécessiterait de mettre en place une fonction personnalisée.

C’est justement ce que nous allons voir dans la suite de ce tutoriel.

 

3. Créer une fonction évoluée de conversion de texte en nombre

Alors, évidemment, pour construire une fonction suffisamment évoluée pour réaliser cette opération, nous allons devoir la développer en VBA.

Pour cela, nous allons commencer par lancer VBE, qui est l’outil de développement des macros VBA.

Pour cela, nous disposons de plusieurs options, la plus rapide consistant à utiliser le raccourci clavier [Alt]+[F11].

Ensuite, pour créer une fonction personnalisée, nous allons insérer un nouveau module en nous rendant dans le menu Insertion > Module :

Excel formation - extraire nombre d un texte - p2 - 02

Un module est une sorte de feuille blanche, dans laquelle nous allons venir saisir des lignes de code pour créer nos macro-commandes et fonctions personnalisées.

 

   3.1. Fonction pour extraire un nombre à n’importe quelle position

 

Dans un premier temps, nous allons souhaiter extraire une valeur numérique depuis un texte, celle-ci pouvant être placée à n’importe quel endroit de ce texte :

Excel formation - extraire nombre d un texte - p2 - 03

Pour cela, nous allons créer une fonction que nous appelons EXTRAIRENOMBRE.

Pour créer une fonction, nous utilisons le mot-clé Function, suivi du nom de la fonction :

Excel formation - extraire nombre d un texte - p2 - 04

Lorsque nous validons la création de la fonction en appuyant sur la touche [Entrée] du clavier, VBA valide la création de celle-ci en ajoutant deux éléments :

  • Parenthèses vides, dans lesquelles nous viendrons juste après insérer un argument
  • La ligne End Function qui vient terminer la fonction. Tout ce que nous allons saisir entre ces deux lignes sera donc exécuté dès que nous appellerons la fonction.

Pour insérer un argument, il suffit de le saisir entre les parenthèses :

Function EXTRAIRENOMBRES(texte As  String)
 
End Function 

Ensuite, pour que la fonction retourne une valeur, il suffit de l’affecter à la fonction, comme s’il s’agissait d’une variable :

Function EXTRAIRENOMBRES(texte As  String)
 
    EXTRAIRENOMBRES = 10
    
End Function 

Ici la fonction nous retournera la valeur 10 lorsque nous l’appellerons, quel qu’en soit son argument.

Pour l’utiliser sur la feuille de calcul, il suffit de l’appeler comme nous le ferions pour n’importe quelle autre fonction d’Excel :

Excel formation - extraire nombre d un texte - p2 - 05

Bien entendu, le résultat est ici erroné, et nous allons maintenant chercher à obtenir la valeur réelle de la chaîne de caractères.

Pour cela, nous allons commencer par scinder le texte afin de stocker chaque mot comme valeur d’un tableau.

Nous commençons donc par créer une variable que nous appelons tableauValeurs et que nous typons en tant que Variant.

Ensuite, nous allons y stocker chaque mot de la variable passée en argument en utilisant la fonction VBA Split() et en utilisant l’espace comme caractère de séparation :

    Dim tableauValeurs As Variant
    tableauValeurs = Split(texte,  " ")

Nous pouvons maintenant passer en revue tous les éléments de ce tableau en utilisant une boucle For Each.

Une boucle For Each permet d’effectuer une action tant qu’une condition est remplie, ici tant qu’il y a des éléments dans le tableau tableauValeurs.

Si vous souhaitez en savoir plus sur les boucles, vous pouvez cliquer ici pour retrouver le tutoriel dédié.

    Dim valeur As Variant
    For Each valeur In tableauValeurs
    
    Next

Maintenant, à l’intérieur de cette boucle, nous allons analyser chaque élément pour déterminer s’il s’agit d’un nombre en utilisant la fonction VBA IsNumeric() :

    For Each valeur In tableauValeurs
        If IsNumeric(valeur) Then
            EXTRAIRENOMBRES = valeur
        End If
    Next

Nous pouvons maintenant tester la fonction pour extraire les nombres saisis dans les textes :

Excel formation - extraire nombre d un texte - p2 - 06

Excel nous retourne bien les bonnes valeurs, seulement nous pouvons constater que celles-ci sont placées sur le bord gauche de la cellule, ce qui signifie que pour Excel il s’agit encore de texte et non pas de nombres.

Pas de problème, pour corriger ce petit problème il suffit de donner un type à la fonction pour s’assurer qu’Excel la retourne bien comme une valeur numérique :

Function EXTRAIRENOMBRES(texte As  String) As Double

Excel formation - extraire nombre d un texte - p2 - 07

Nous pouvons même tester avec des nombres décimaux, cela ne posera pas de problème :

Excel formation - extraire nombre d un texte - p2 - 08

 

   3.2. Additionner les nombres contenus dans un texte

 

Maintenant, si nous prévoyons le fait qu’il puisse y avoir plusieurs nombres dans une seule et même cellule, nous pouvons souhaiter que tous ces nombres soient additionnés dans le résultat retourné par la fonction.

Pour cela, nous allons partir de la même fonction, que nous allons tout simplement copier-coller juste en dessous, en modifiant simplement son nom en ADDITIONNERNOMBRES() :

Excel formation - extraire nombre d un texte - p2 - 09

Ensuite, nous allons créer une nouvelle variable au tout début de la fonction, que nous appelons résultat, et que nous typons en tant que Double, comme la fonction :

    Dim resultat As Double

Celle-ci va nous permettre de récupérer la somme des valeurs numériques en ajoutant ces dernières à son propre résultat dans la boucle For Each :

    For Each valeur In tableauValeurs
        If IsNumeric(valeur) Then
            resultat = resultat + valeur
        End If
    Next

Il ne reste plus qu’à affecter la valeur de cette variable resultat en tant valeur de la fonction ADDITIONNERNOMBRES, juste avant que celle-ci ne se termine :

    ADDITIONNERNOMBRES = resultat

Nous pouvons maintenant tester cette nouvelle fonction sur la ligne correspondante :

Excel formation - extraire nombre d un texte - p2 - 10

 

 



Articles qui pourraient vous intéresser

Comment remplir automatiquement des cellules d'un tableau Excel avec la complétion automatique
Comment regrouper (ou pas !) les dates d’un tableau croisé dynamique (TCD) sur Excel ?
Comment connecter Excel sur Internet, sans VBA ?
Comment traduire automatiquement des fonctions Excel dans leur version originale ?
Comment analyser les résultats d’un sondage ou questionnaire avec Excel ?
Comment utiliser la fonction SOMME.SI pour effectuer des recherches sur des textes sur Excel ?
Comment calculer et étudier des écarts budgétaires avec Excel ?
Comment verrouiller et protéger un objet (graphique, image, zone de texte…) sur Excel ?
Comment formater des dates correctement dans Excel ?
Comment protéger le formatage des cellules tout en autorisant la saisie de données dans Excel ?
Comment transformer une photo en tableau Excel ?
Comment créer un publipostage automatique avec Excel ? (sans Word !)

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - 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.