Fonctions de conversion de types de données

Mise à jour : novembre 2007

Ces fonctions sont compilées "inline", c'est-à-dire que le code de conversion fait partie du code qui évalue l'expression. Parfois, aucune procédure n'est appelée pour effectuer la conversion, ce qui permet d'améliorer les performances. Chaque fonction convertit une expression en un type de données spécifique.

CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)

Élément

  • expression
    Obligatoire. Toute expression du type de données source.

Type de données de la valeur de retour

Le nom de la fonction détermine le type de données de la valeur qu'elle retourne, comme l'illustre le tableau suivant.

Nom de la fonction

Type de données retourné

Plage de l'argument expression

CBool

Boolean, type de données (Visual Basic)

Toute expression numérique, Char ou String valide.

CByte

Byte, type de données (Visual Basic)

0 à 255 (non signé) ; les parties fractionnaires sont arrondies.1

CChar

Char, type de données (Visual Basic)

Toute expression Char ou String valide ; seul le premier caractère d'un String est converti ; la valeur peut être comprise entre 0 et 65 535 (non signé).

CDate

Type de données date (Visual Basic)

Toute représentation valide de la date et de l'heure.

CDbl

Double, type de données (Visual Basic)

-1,79769313486231570E+308 à -4,94065645841246544E-324 pour les valeurs négatives ; 4,94065645841246544E-324 à 1,79769313486231570E+308 pour les valeurs positives.

CDec

Decimal, type de données (Visual Basic)

+/-79 228 162 514 264 337 593 543 950 335 pour les nombres sans décimales. La plage de valeurs des nombres à 28 décimales est 
+/-7,9228162514264337593543950335. Le plus petit nombre différent de zéro est 0,0000000000000000000000000001 (+/-1E-28).

CInt

Integer, type de données (Visual Basic)

-2 147 483 648 à 2 147 483 647 ; les parties fractionnaires sont arrondies.1

CLng

Long, type de données (Visual Basic)

-9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 ; les parties fractionnaires sont arrondies.1

CObj

Object, type de données

Toute expression valide.

CSByte

SByte, type de données (Visual Basic)

-128 à 127 ; les parties fractionnaires sont arrondies.1

CShort

Short, type de données (Visual Basic)

-32 768 à 32 767 ; les parties fractionnaires sont arrondies.1

CSng

Single, type de données (Visual Basic)

-3,402823E+38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E+38 pour les valeurs positives.

CStr

String, type de données (Visual Basic)

Les valeurs retournées pour CStr dépendent de l'argument expression. Consultez Valeurs de retour pour la fonction CStr.

CUInt

UInteger, type de données

0 à 4 294 967 295 (non signé) ; les parties fractionnaires sont arrondies.1

CULng

ULong, type de données (Visual Basic)

0 à 18 446 744 073 709 551 615 (non signé) ; les parties fractionnaires sont arrondies.1

CUShort

UShort, type de données (Visual Basic)

0 à 65 535 (non signé) ; les parties fractionnaires sont arrondies.1

1 Les parties fractionnaires peuvent faire l'objet d'un type spécial d'arrondissement nommé arrondi bancaire. Consultez « Notes » pour obtenir plus d'informations.

Notes

En règle générale, vous devez utiliser les fonctions de conversion de Visual Basic de préférence aux méthodes .NET Framework, telles que ToString(), sur la classe Convert, sur une structure de type ou sur une classe. Les fonctions de Visual Basic sont conçues pour une interaction optimale avec le code Visual Basic ; elles permettent également de raccourcir votre code source et d'en faciliter la lecture. En outre, les méthodes de conversion .NET Framework ne produisent pas toujours les mêmes résultats que les fonctions Visual Basic, par exemple, lors de la conversion de Boolean en Integer. Pour plus d'informations, consultez Dépannage des types de données.

Comportement

  • Contrainte. En général, vous pouvez utiliser des fonctions de conversion des types de données pour forcer les résultats d'une opération à correspondre à un type de données particulier au lieu du type de données par défaut. Par exemple, utilisez CDec pour fonctionner en arithmétique décimale et non en arithmétique en simple précision, en double précision ou en arithmétique sur des nombres entiers.

  • Échec des conversions. Si le expression passé à la fonction se trouve en dehors de la plage du type de données dans lequel il doit être converti, un OverflowException se produit.

  • Parties fractionnaires. Lorsque vous convertissez une valeur non entière dans un type entier, les fonctions de conversion d'entiers (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng et CUShort) suppriment la partie fractionnaire et arrondissent la valeur au nombre entier le plus proche.

    Si la partie fractionnaire est exactement égale à 0,5, les fonctions de conversion d'entier l'arrondissent toujours au nombre entier pair le plus proche. Par exemple, 0,5 est arrondi à 0 ; 1,5 et 2,5 sont tous les deux arrondis à 2. C'est ce que l'on appelle parfois l'arrondi bancaire et son but est de compenser un écart qui pourrait s'accumuler lors de l'ajout de tels nombres.

    CInt et CLng diffèrent des Fonctions Int, Fix (Visual Basic), qui tronquent, au lieu d'arrondir, la partie fractionnaire d'un nombre. De plus, Fix et Int retournent toujours une valeur du même type de données que celui que vous avez passé.

  • Conversions date/heure. Utilisez la IsDate, fonction (Visual Basic) pour déterminer si une valeur peut être convertie en une date et une heure. CDate reconnaît les littéraux de date et d'heure mais pas les valeurs numériques. Pour convertir une valeur Date Visual Basic 6.0 en une valeur Date dans Visual Basic 2005 ou une version ultérieure, vous pouvez utiliser la méthode DateTime.FromOADate.

  • Valeurs date/heure neutres. Le Type de données date (Visual Basic) contient toujours des informations concernant la date et l'heure. Dans le cadre de la conversion de type, Visual Basic considère la valeur 1/1/0001 (le 1er janvier de l'année 1) comme une valeur neutre pour la date et 00:00:00 (minuit) comme une valeur neutre pour l'heure. Si vous convertissez une valeur Date en une chaîne, CStr n'inclut pas de valeurs neutres dans la chaîne obtenue. Par exemple, si vous convertissez #January 1, 0001 9:30:00# en une chaîne, la chaîne obtenue est "9:30:00 AM" ; les informations relatives à la date sont supprimées. Toutefois, les informations de date sont toujours présentes dans la valeur Date d'origine et peuvent être récupérées à l'aide de fonctions, telles que DatePart, fonction (Visual Basic).

  • Respect de la culture. Les fonctions de conversion de type impliquant des chaînes effectuent des conversions en fonction des paramètres de culture actuels de l'application. Par exemple, CDate reconnaît les formats de date définis dans les paramètres régionaux de votre système. Vous devez fournir le jour, le mois et l'année selon l'ordre correct pour vos paramètres régionaux ; sinon, la date pourrait être incorrectement interprétée. Les formats de date complets ne sont pas reconnus s'ils contiennent une chaîne précisant un jour de la semaine (par exemple, "mercredi").

    Si vous devez effectuer une conversion depuis ou vers une représentation sous forme de chaîne d'une valeur dans un format différent de celui spécifié dans vos paramètres régionaux, vous ne pouvez pas utiliser les fonctions de conversion de type Visual Basic. Pour cela, utilisez les méthodes ToString(IFormatProvider) et Parse(String, IFormatProvider) du type de cette valeur. Par exemple, utilisez Double.Parse lors de la conversion d'une chaîne en un Double et utilisez Double.ToString lors de la conversion d'une valeur de type Double en une chaîne.

CType, fonction

La fonction CType accepte un deuxième argument, typename, et force expression à correspondre à typename, où typename peut être n'importe quel type de données, structure, classe ou interface vers lequel une conversion valide existe.

Pour obtenir une comparaison entre CType et les autres mots clés de conversion de type, consultez DirectCast et TryCast.

CBool, exemple

L'exemple suivant utilise la fonction CBool pour convertir des expressions en valeurs Boolean. Si une expression prend une valeur différente de zéro, CBool retourne True ; sinon, elle retourne False.

Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)

CByte, exemple

L'exemple suivant utilise la fonction CByte pour convertir une expression en un Byte.

Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)

CChar, exemple

L'exemple suivant utilise la fonction CChar pour convertir le premier caractère d'une expression String en un type Char.

Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)

L'argument d'entrée de CChar doit être du type de données Char ou String. Vous ne pouvez pas utiliser CChar pour convertir un nombre en un caractère, car CChar ne peut pas accepter un type de données numérique. L'exemple suivant obtient un nombre représentant un point de code (code de caractère) et le convertit dans le caractère correspondant. Il utilise la InputBox, fonction (Visual Basic) pour obtenir la chaîne de chiffres, CInt pour convertir la chaîne en type Integer et ChrW pour convertir le nombre en type Char.

Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)

CDate, exemple

L'exemple suivant utilise la fonction CDate pour convertir des chaînes en valeurs Date. En général, les dates et les heures codées de manière irréversible comme des chaînes (comme l'illustre cet exemple) ne sont pas recommandées. Utilisez plutôt des littéraux de date et d'heure, tels que #Feb 12, 1969# et #4:45:23 PM#.

Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)

CDbl, exemple

Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)

CDec, exemple

L'exemple suivant utilise la fonction CDec pour convertir une valeur numérique en Decimal.

Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)

CInt, exemple

L'exemple suivant utilise la fonction CInt pour convertir une valeur en Integer.

Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)

CLng, exemple

L'exemple suivant utilise la fonction CLng pour convertir des valeurs en Long.

Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)

CObj, exemple

L'exemple suivant utilise la fonction CObj pour convertir une valeur numérique en Object. La variable Object contient uniquement un pointeur de quatre octets, qui pointe vers la valeur Double qui lui est assignée.

Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)

Exemple CSByte

L'exemple suivant utilise la fonction CSByte pour convertir une valeur numérique en SByte.

Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)

CShort, exemple

L'exemple suivant utilise la fonction CShort pour convertir une valeur numérique en Short.

Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)

CSng, exemple

L'exemple suivant utilise la fonction CSng pour convertir des valeurs en Single.

Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)

CStr, exemple

L'exemple suivant utilise la fonction CStr pour convertir une valeur numérique en String.

Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)

L'exemple suivant utilise la fonction CStr pour convertir des valeurs Date en valeurs String.

Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)

CStr retourne toujours une valeur Date au format de date courte des paramètres régionaux en cours, par exemple, "15/06/2003 16:35:47". Toutefois, CStr supprime les valeurs neutres de 1/1/0001 pour la date et 00:00:00 pour l'heure.

Pour plus d'informations sur les valeurs retournées par CStr, consultez Valeurs de retour pour la fonction CStr.

Exemple CUInt

L'exemple suivant utilise la fonction CUInt pour convertir une valeur numérique en UInteger.

Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)

CULng, exemple

L'exemple suivant utilise la fonction CULng pour convertir une valeur numérique en ULong.

Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)

CUShort, exemple

L'exemple suivant utilise la fonction CUShort pour convertir une valeur numérique en UShort.

Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)

Voir aussi

Référence

Fonctions de conversion (Visual Basic)

Fonctions Asc, AscW

Fonctions Chr, ChrW

Fonctions Int, Fix (Visual Basic)

Format, fonction

Hex, fonction (Visual Basic)

Oct, fonction

Str, fonction

Val, fonction

Autres ressources

Conversions de type en Visual Basic