Comment convertir une chaîne en nombre dans Excel VBA (3 méthodes)

  • Partage Ça
Hugh West

Nous verrons comment utiliser les fonctions intégrées et créer une fonction personnalisée pour convertir une chaîne de caractères en un nombre à l'aide d'exemples de code VBA.

Télécharger le cahier d'exercices

Téléchargez ce cahier d'exercices pour vous entraîner pendant que vous lisez cet article.

Convertir une chaîne en un nombre.xlsm

3 façons de convertir une chaîne en nombre dans Excel VBA

1. Convertir une chaîne en un nombre à l'aide des fonctions de conversion de type

Excel fournit plusieurs fonctions intégrées fonctions de conversion de type Nous pouvons les utiliser dans notre code VBA pour convertir facilement les données de type chaîne en différents types de données.

1.1 Chaîne de caractères en nombre entier

Pour convertir chaîne de caractères à entier nous pouvons utiliser le Fonction CInt dans notre code. Fonction CInt ne prend que un argument et cela devrait être un valeur numérique Essayons le code suivant dans l'éditeur de code visuel.

 Sub StringToNumber() MsgBox CInt(12.3) End Sub 

Appuyez sur F5 à exécuter le site code Le résultat est présenté dans le tableau suivant MsgBox .

La fonction CInt converti le site chaîne numérique valeur ("12.3" ) à un entier 12.

Pour en savoir plus sur le Fonction CInt exécutez le code suivant dans l'éditeur de code et observez le site résultats .

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CInt(Cells(i, 2)) Next End Sub 

Le site sortie est ici dans la suite capture d'écran .

Explication du code

Dans ce code, nous avons utilisé le Pour...boucle suivante pour appliquer le Fonction CInt sur les chaînes de cellules B3:B7. Le site sorties sont imprimés dans les cellules C3:C7. Nous avons utilisé le Fonction des cellules pour spécifier les valeurs d'entrée et l'endroit où imprimer les valeurs de sortie.

Résultats

La fonction CInt converti 25,5 au prochain nombre entier 26 D'un autre côté, il converti 10.3 à 10, pas 11 Lorsqu'une valeur numérique décimale est inférieure à 0,5, la fonction arrondit au même chiffre. Mais la fonction décimal la valeur de la chaîne numérique se transforme en nombre entier suivant si elle est égal à ou supérieure à 0,5.

Note

La valeur entière est comprise entre -32,768 à 32,767 Si nous mettons une valeur numérique qui est hors de cette gamme Excel affichera un erreur .

1.2 String to Long

Le site Fonction CLng convertit une valeur de chaîne numérique en un long datatype Son fonctionnement est similaire à celui de la fonction CInt, mais la différence essentielle réside dans sa fonction gamme qui se situe entre -2,147,483,648 et 2,147,483,647.

 Le code à exécuter se trouve ci-dessous :  Sub StringToNumber() For i = 3 To 9 Cells(i, 3).Value = CLng(Cells(i, 2)) Next End Sub 

Ici, les cellules B3:B9 contiennent des valeur numérique de la chaîne et converti l nombre de personnes sont dans des cellules C3:C9. Le site Fonction CLng converti -32800 et 32800 avec succès à les nombres longs que le Fonction CInt ne pourrait pas. Mais il aura aussi une erreur si l'entrée valeur numérique est hors de portée.

1.3 Chaîne de caractères en décimal

Utilisation de la Fonction CDec nous pouvons convertir a valeur numérique de la chaîne à un Type de données décimal. le code suivant pour convertir le site valeurs numériques dans les cellules B3:B7 au type de données décimal.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CDec(Cells(i, 2)) Next End Sub 

1.4 String to Single

Dans cet exemple, nous allons transformer les chaînes de caractères d'entrée en type de données unique (à virgule flottante en simple précision). Pour cela, nous devons utiliser la fonction Fonction CSng .

Les gammes de type de données unique- (i) -3.402823E38 à -1.401298E-45 pour négatif numéros.

(ii) 1.401298E-45 à 3.402823E38 pour positif numéros.

Exécutez le code suivant dans l'éditeur Visual Basic.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

Dans la sortie, les cellules B3:B9 contiennent des valeur numérique de la chaîne, et nombres de type de données simples convertis sont dans des cellules C3:C9. Mais il aura aussi un erreur si l'entrée valeur numérique est hors de portée.

1.5 String to Double

Dans cet exemple, nous allons transformer les chaînes de caractères d'entrée en type de données double (à virgule flottante en double précision). Pour cela, nous devons utiliser la fonction Fonction CDbl .

Le type de données double varie- (i) -1,79769313486231E308 à -4.94065645841247E-324 pour négatif numéros.

(ii) 4.94065645841247E-324 à 1.79769313486232E308 pour positif numéros.

Exécutez le code suivant dans l'éditeur Visual Basic.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CSng(Cells(i, 2)) Next End Sub 

Dans la sortie, les cellules B3:B9 contiennent des valeur numérique de la chaîne et nombres de type double convertis sont dans des cellules C3:C9. Mais il aura aussi un erreur si l'entrée valeur numérique est hors de portée.

1.6 De la chaîne à la devise

Le site type de données de la devise est pratique lorsque les calculs sont liés à argent De plus, si nous voulons plus de précision dans Correction de - point calcul L'utilisation du type de données "devise" est un bon choix. Nous devons utiliser la fonction Fonction CCur pour convertir une chaîne de caractères en un type de données de la devise Le type de données gammes de -922,337,203,685,477.5808 à 922,337,203,685,477.5808.

Code à convertir valeur numérique de la chaîne de cellules B3:B7 à type de données de la devise dans les cellules C3:C7 est ci-dessous.

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CCur(Cells(i, 2)) Next End Sub 

1.7 Chaîne en octet

Le site Fonction CByte convertit les valeurs numériques de type chaîne en type de données octet qui va de De 0 à 255.

Code est le suivant :

 Sub StringToNumber() For i = 3 To 7 Cells(i, 3).Value = CByte(Cells(i, 2)) Next End Sub 

Dans la sortie, les cellules B3:B9 contiennent des valeur numérique de la chaîne, et nombres de types de données d'octets convertis sont dans des cellules C3:C9. Mais il obtiendra aussi un erreur si l'entrée valeur numérique est hors de portée.

Lire la suite : Comment convertir une chaîne de caractères en longueurs en utilisant VBA dans Excel

Lectures similaires

  • Convertir une chaîne en double dans Excel VBA (5 méthodes)
  • Comment convertir du texte en nombre avec Excel VBA (3 exemples avec macros)
  • Corriger l'erreur de conversion en nombre dans Excel (6 méthodes)
  • Comment convertir la notation scientifique en nombre dans Excel (7 méthodes)

2. Utilisation d'une fonction VBA personnalisée pour vérifier et convertir une chaîne en nombre dans Excel

Dans cette illustration, nous allons faire une fonction personnalisée pour convertir les chaînes de caractères en nombres. Nous pouvons alors utiliser ce fonction personnalisée dans notre feuille de travail comme un fonction intégrée Dans cet exemple, nous utiliserons l'option Fonction CInt à convertir des chaînes de caractères à nombres entiers tout en créant le fonction personnalisée. Nous pourrions également utiliser tous les autres fonctions décrit dans méthode 1 pour convertir chaînes de caractères à différents types de données Pour ce faire, suivez les étapes ci-dessous.

Des pas :

  • Ici, dans les cellules B3:B7, nous avons des valeurs numériques en chaîne.

  • Maintenant, dans l'éditeur de base visuel, copie et pâte le code suivant, puis appuyez sur Ctrl + S à sauver
 Function StringToNumber(inputStr) Dim convertedNum As Variant If IsNumeric(inputStr) Then If IsEmpty(inputStr) Then convertedNum = "-" Else convertedNum = CInt(inputStr) End If Else convertedNum = "-" End If StringToNumber = convertedNum End Function 
  • En cellule C3 , commencer à taper le site nom de la fonction ( StringToNumber ). Excel va suggérer automatiquement le site fonction à utiliser. Appuyez sur le site Touche de tabulation pour entrer dans la fonction.

  • Mettez le référence de la cellule B3 comme seul argument.

  • Maintenant, appuyez sur Entrez après avoir fermé les parenthèses.

  • Localisez le Poignée de remplissage au coin inférieur droit de la cellule C3 à appliquer la fonction aux cellules C4:C7.

  • La sortie finale est constituée des nombres entiers convoités à partir des valeurs de la chaîne.

3. Code VBA pour convertir une plage sélectionnée de cellules en nombres dans Excel

Dans cette illustration, nous allons convertir un gamme de cellules sélectionnées contenant des valeurs de chaîne de caractères en nombres entiers. Si une cellule contient un non numérique le résultat sera une valeur ligne de tiret (-) au lieu de Suivez les étapes :

  • Sélectionner les cellules B3:B6 ayant chaînes numériques et B7 qui contient un non numérique

  • Dans le Éditeur Visual Basic copie et pâte les éléments suivants code .
 Sub StringToNumber() Dim convertedNum As Variant For Each cell In Selection If IsNumeric(cell) Then If IsEmpty(cell) Then convertedNum = "-" Else convertedNum = CInt(cell) End If Else convertedNum = "-" End If With cell .Value = convertedNumHorizontalAlignment = xlCenter End With Next cell End Sub 
  • Maintenant, appuyez sur F5 à exécuter le site sortie comme indiqué dans le tableau suivant capture d'écran .

Notes

  • Nous avons utilisé le Fonction isNumeric dans le 2ème et 3ème méthodes dans notre code VBA qui vérifie si une expression peut être convertie en un nombre.
  • Sur méthode 1 nous avons utilisé des fonctions intégrées (CInt, CDbl, CSng.....) pour convertir des valeurs numériques en chaînes à numéros Mais s'il y a un valeur non numérique il affichera un erreur d'inadéquation .

Conclusion

Nous savons maintenant comment convertir des chaînes de caractères en chiffres dans Excel. Nous espérons que cela vous encouragera à utiliser cette fonctionnalité avec plus de confiance. Si vous avez des questions ou des suggestions, n'oubliez pas de les poser dans le champ de commentaires ci-dessous.

Hugh West est un formateur et analyste Excel très expérimenté avec plus de 10 ans d'expérience dans l'industrie. Il est titulaire d'un baccalauréat en comptabilité et finance et d'une maîtrise en administration des affaires. Hugh a une passion pour l'enseignement et a développé une approche pédagogique unique qui est facile à suivre et à comprendre. Sa connaissance approfondie d'Excel a aidé des milliers d'étudiants et de professionnels du monde entier à améliorer leurs compétences et à exceller dans leur carrière. Grâce à son blog, Hugh partage ses connaissances avec le monde, offrant des tutoriels Excel gratuits et une formation en ligne pour aider les particuliers et les entreprises à atteindre leur plein potentiel.