Convertir une chaîne en nombre dans VBA

Iqra Hasnain 26 mai 2022
Convertir une chaîne en nombre dans VBA

Cet article explique comment convertir une chaîne en nombre dans VBA Excel. Il y a un guide étape par étape et de nombreux exemples pour notre compréhension.

Convertir une chaîne en nombre dans VBA

Dans le code VBA, la conversion des nombres enregistrés sous forme de texte en nombres réels est obligatoire. Nous avons de nombreuses options de conversion.

Nous pouvons convertir des chaînes en nombres des types de données Byte, Integer, Long, Single, Double, Currency et Decimal. Nous discuterons de chaque conversion en détail avec des exemples.

Convertir une chaîne en octet dans VBA

Nous pouvons facilement transformer une chaîne en un nombre du type de données byte à l’aide du code suivant.

# vba
byte = CByte(str)

On peut utiliser la fonction CByte() pour réaliser cette conversion. L’instruction ci-dessus comporte deux éléments : CByte() et chaîne.

La fonction CByte() force la chaîne à se transformer en un type d’octet. CByte() est souvent utilisé pour effectuer la transformation de chaîne internationale en type de données byte.

En termes simples, CByte() distingue généralement les séparateurs décimaux/milliers distinctifs et de nombreuses options de devise qui dépendent de l’emplacement de votre ordinateur. La plage qu’un type de données byte peut contenir est de 0 à 225. Si votre chaîne ne se situe pas entre cette plage, une erreur se produira.

Voici un exemple de macro dans lequel nous avons convertStr comme argument pour convertir une chaîne en un octet.

# vba
Function convertStr(newStr As Variant)

    MsgBox (CByte(newStr))

End Function

Sub newFunc()
convertStr ("12")
End Sub

Production:

convertir une chaîne en nombre sous forme d’octet dans VBA

Convertir une chaîne en entier dans VBA

À l’aide de l’instruction suivante, vous pouvez facilement convertir une chaîne en un nombre du type de données entier. La syntaxe de cette fonction est présentée ci-dessous.

# vba
CInt(newStr)

Il est recommandé d’utiliser la fonction Clnt() pour changer une chaîne en un type de données entier. Cette fonction force la chaîne à se transformer en type de données entier.

Si une chaîne contient une fraction, cette fonction la convertira en entier. Si la fraction est précisément 0,4, cette fonction la changera au nombre pair le plus proche.

Par example:

# vba
0.4 will become 0.
1.6 and 2.4 both will become 2.
3.7 and 4.3 will become 4

Clnt() est souvent utilisé pour effectuer la transformation de chaîne internationale en type de données entier. En termes simples, Clnt() distingue généralement les séparateurs décimaux / milliers distinctifs et de nombreuses options de devise qui dépendent de l’emplacement de notre ordinateur.

La plage entre laquelle un type de données entier peut contenir des nombres est de -32 768 à 32 767. Si votre chaîne ne se situe pas dans cette plage, une erreur se produira.

Prenons un exemple et utilisons la fonction CInt() comme indiqué ci-dessous. Cet exemple définit newStr comme argument pour transformer une chaîne en un entier, comme indiqué ci-dessous.

# vba
Function convertToInteger(newStr As Variant)

    MsgBox (CInt(newStr))

End Function

Sub newFunc()
convertToInteger ("12.5")
End Sub

Production:

convertir une chaîne en nombre comme int dans VBA

Convertir une chaîne en long dans VBA

On peut utiliser la fonction CLng() pour réaliser cette conversion. La syntaxe de cette fonction est présentée ci-dessous.

# vba
CLng(Str)

Nous pouvons utiliser la fonction CLng() lorsque notre objectif est de changer une chaîne en plusieurs types de données longs. Les éléments de cette instruction sont CLng() et string.

Cette fonction force une chaîne à passer au type de données long.

Si une chaîne contient une fraction, cette fonction l’arrondira. Si la fraction est précisément 0,4, cette fonction la changera au nombre pair le plus proche, comme indiqué ci-dessous.

# vba
0.4 will become 0.
1.6 and 2.4 both will become 2.
3.7 and 4.3 will become 4

CLng() est souvent utilisé pour effectuer la transformation de chaîne internationale en types de données longs. En termes simples, CLng() distingue généralement les séparateurs décimaux / milliers distinctifs et de nombreuses options de devise qui dépendent de l’emplacement de votre ordinateur.

La plage entre laquelle un type de données entier peut contenir des nombres est de -2 147 483 648 à 2 147 483 647. Si votre chaîne ne se situe pas dans cette plage, une erreur se produira.

Prenons un exemple et utilisons la fonction CLng(). Dans cet exemple, nous avons défini newStr comme argument pour changer une chaîne en long, comme indiqué ci-dessous.

# vba
Function convertToLong(newStr As Variant)

    MsgBox (CLng(newStr))

End Function

Sub newFunc()
convertToLong ("15.7")
End Sub

Production:

convertir la chaîne en nombre aussi long dans VBA

Le type de données long diffère du type de données entier par une seule chose. Des nombres plus grands sont acceptables dans les types de données longs.

Mais il n’y avait pas assez de mémoire dans l’ancien temps, et il n’était pas recommandé d’utiliser des types de données longs.

Dans les temps modernes, la mémoire n’est plus un problème. Nous pouvons utiliser le type de données long au lieu d’un entier.

Convertir une chaîne en simple dans VBA

Nous pouvons facilement transformer une chaîne en un nombre d’un seul type de données à l’aide de la syntaxe suivante, comme indiqué ci-dessous.

# vba
CSng(str)

On peut utiliser la fonction CSng() pour réaliser cette conversion. Il y a deux éléments dans l’instruction ci-dessus, CSng() et string.

Cette fonction force une chaîne à se transformer en un seul type de données.

CSng() est souvent utilisé pour effectuer la transformation de chaîne internationale en un seul type de données. CSng() distingue généralement les séparateurs décimaux/milliers distinctifs et les options de devise qui dépendent de l’emplacement de votre ordinateur.

La plage entre laquelle un seul type de données peut contenir des nombres à virgule flottante est

  • 3.402823E38 à -1.401298E-45 lorsque les valeurs sont négatives
  • 1.401298E-45 à 3.402823E38 lorsque les valeurs sont positives

Une erreur apparaîtra si votre chaîne ne se situe pas dans cette plage. Comme indiqué ci-dessous, passons en revue un exemple dans lequel nous définissons newStr comme argument pour changer une chaîne en un seul.

# vba
Function convertToSingle(newStr As Variant)

    MsgBox (CSng(newStr))

End Function

Sub newFunc()
convertToSingle ("1.3")
End Sub

Production:

convertir une chaîne en nombre en tant que single dans VBA

Convertir une chaîne en double dans VBA

À l’aide de l’instruction suivante, nous pouvons facilement convertir une chaîne en plusieurs types de données doubles. La syntaxe de cette fonction est comme indiqué ci-dessous.

# vba
CDbl(str)

Il est recommandé d’utiliser la fonction CDbl() pour changer une chaîne en un type de données double. Cette fonction force une chaîne à passer au type de données double.

CDbl() est souvent utilisé pour effectuer la transformation de chaîne internationale en un type de données double.

En termes simples, CDbl() distingue généralement les séparateurs décimaux / milliers distinctifs et de nombreuses options de devise qui dépendent de l’emplacement de votre ordinateur.

La plage entre laquelle un type de données double peut contenir des nombres à virgule flottante est ci-dessous.

  • -1,79769313486231E308 à -4,94065645841247E-324 lorsque les valeurs sont négatives.
  • 4.94065645841247E-324 à 1.79769313486232E308 lorsque les valeurs sont positives.

Une erreur apparaîtra si notre chaîne ne se situe pas dans cette plage. Comme indiqué ci-dessous, passons en revue un exemple dans lequel nous définissons newStr comme argument pour changer une chaîne en double.

# vba
Function convertToDouble(newStr As Variant)

    MsgBox (CDbl(newStr))

End Function

Sub newFunc()
convertToDouble ("1.345")
End Sub

Production:

convertir une chaîne en nombre en tant que double dans VBA

Convertir une chaîne en devise dans VBA

À l’aide de l’instruction suivante, vous pouvez facilement convertir une chaîne en plusieurs types de données monétaires. La syntaxe de la fonction est indiquée ci-dessous.

# vba
CCur(newStr)

Il est recommandé d’utiliser la fonction CCur() pour changer une chaîne en un type de données monétaire. Cette fonction force une chaîne à changer dans le type de données monétaire.

CCur() est souvent utilisé pour effectuer la transformation de chaîne internationale en un type de données de devise.

Cela signifie que CCur() distingue généralement les séparateurs décimaux / milliers distinctifs et de nombreuses options de devise qui dépendent de l’emplacement de votre ordinateur. Le type de données monétaire peut contenir des nombres entiers par 10 000.

En conséquence, une devise peut contenir 15 nombres à gauche de la virgule décimale et quatre nombres à droite de la virgule décimale. Ainsi, la plage entre laquelle une devise peut contenir des nombres est :
-922 337 203 685 477,5808 à 922 337 203 685 477,5807.

Une erreur apparaîtra si votre chaîne ne se situe pas dans cette plage.

Comme indiqué ci-dessous, passons en revue un exemple dans lequel nous définissons newStr comme argument pour changer une chaîne en devise.

# vba
Function convertToCurrency(newStr As Variant)

    msgBox(CCur(newStr))

End Function

Convertir une chaîne en décimal dans VBA

Nous pouvons utiliser l’instruction suivante pour réaliser cette conversion.

# vba
CDec(newStr)

Nous pouvons utiliser la fonction CDec() lorsque notre objectif est de changer une chaîne en plusieurs types de données décimaux. Cette fonction force une chaîne à changer dans le sous-type de données décimal du type de données Variant.

En termes simples, CDec() renverra une variante changée en sous-type décimal.

CDec() est souvent utilisé pour effectuer la transformation internationale d’une chaîne en un type de données décimal. Cela signifie que CDec() distingue généralement les séparateurs décimaux / milliers distinctifs et de nombreuses options de devise qui dépendent de l’emplacement de votre ordinateur.

Le type de données décimal peut contenir des nombres entiers ayant une puissance variable de 10. La puissance indique le nombre de chiffres pouvant être présents à droite du point décimal.

La plage dans laquelle les décimales peuvent contenir des valeurs est indiquée ci-dessous.

  • Lorsque l’échelle est 0, c’est-à-dire sans décimale, la plage va de 79 228 162 514 264 337 593 543 950 335 à 79 228 162 514 264 337 593 543 950 335.
  • Lorsqu’il y a 28 décimales, les valeurs les plus grandes et les plus petites sont +7,9228162514264337593543950335 et -7,9228162514264337593543950335.
  • Les plus petites valeurs ne contenant pas de zéro sont -0,000000000000000000000000001 et 0,00000000000000000000000001.

Comme indiqué ci-dessous, passons en revue un exemple dans lequel nous définissons newStr comme argument pour changer une chaîne en décimal.

# vba
Function convertToDecimal(newStr As Variant)

    msgBox(CDec(newStr))

End Function

Article connexe - VBA String