VBA: fonctions de conversion de Type (CStr, CInt, CDate,…)

La gestion des types de données est un aspect crucial de la programmation, et VBA (Visual Basic for Applications) ne fait pas exception. Lorsque vous travaillez avec différentes variables et types de données, il est parfois nécessaire de convertir une valeur d'un type de données à un autre. Les "fonctions de conversion de type" sont des fonctions intégrés dans VBA pour faciliter ces conversions.

VBA: fonctions de conversion de Type

Fonctions de conversion de type et leur utilité

Les fonctions de conversion de type sont utilisées pour modifier le type de données d'une variable ou d'une expression. Dans VBA, cela peut être nécessaire pour plusieurs raisons, par exemple:

  • Adapter une variable à un type de données spécifique requis par une fonction ou une procédure.
  • Effectuer des calculs avec des variables de types différents.
  • Stocker des données dans des structures de données qui requièrent un type de données spécifique.

Principales fonctions de conversion de type en VBA et des exemples d'utilisation

VBA dispose d'une fonction de conversion de Type pour chaque type de données. En voici les principales, avec des exemples d'utilisation pour chacune d'entre elles.

1. Convertir une valeur en IntegerCInt

Dans cet exemple, la variable valeur est de type Double et contient la valeur 7,8. La fonction CInt est utilisée pour convertir cette valeur en Integer, ce qui donne 8, puis stocke le résultat dans la variable resultat.

 

2. Convertir une valeur en LongCLng

Ici, la variable valeur est de type Double et contient la valeur 123456,78. La fonction CLng est utilisée pour convertir cette valeur en Long, ce qui donne 123457, puis stocke le résultat dans la variable resultat.

 

3. Convertir une valeur en DecimalCDec

Autre exemple: la variable valeur est de type Double et contient la valeur 1234,5678. La fonction CDec est utilisée pour convertir cette valeur en Decimal, puis stocke le résultat dans la variable resultat.

 

4. Convertir une valeur en SingleCSng

Dans cet exemple, la variable valeur est de type Integer et contient la valeur 18. La fonction CSng est utilisée pour convertir cette valeur en Single, ce qui donne 18,0 et ensuite stocke le résultat dans la variable resultat.

 

5. Convertir une valeur en DoubleCDbl

Dans cet exemple, la variable valeur est de type Integer et contient la valeur 42. La fonction CDbl est utilisée pour convertir cette valeur en Double, ce qui donne 42,0, puis stocke le résultat dans la variable resultat.

 

6. Convertir une valeur en StringCStr

Cette fois-ci, la variable valeur est de type Integer et contient la valeur 252. La fonction CStr est utilisée pour convertir cette valeur en String, ce qui donne "252", puis stocke le résultat dans la variable resultat.

 

7. Convertir une valeur en BooleanCBool

Ici, la variable valeur est de type Integer et contient la valeur 1. La fonction CBool est utilisée pour convertir cette valeur en Boolean, ce qui donne True, puis stocke le résultat dans la variable resultat.

 

8. Convertir une valeur en DateCDate

Pour changer, voici une conversion vers une date… La variable valeur est de type String et contient la chaîne "31/03/2023". La fonction CDate convertit cette chaîne en Date, ce qui donne le 31 mars 2023, puis stocke le résultat dans la variable resultat.

 

9. Convertir une valeur en CurrencyCCur

Ici, la valeur est de type Double et contient la valeur 199,99. La fonction CCur est utilisée pour convertir cette valeur en Currency, puis stocke le résultat dans la variable resultat.

 

10. Convertir une valeur en ByteCByte

Un peu d'informatique maintenant: la variable valeur est de type Integer et contient la valeur 200. La fonction CByte convertit cette valeur en Byte, ce qui donne 200, puis stocke le résultat dans la variable resultat.

 

11. Convertir une valeur en VariantCVar

Et pour terminer, la variable valeur de type Integer contenant la valeur 82. La fonction CVar est utilisée pour convertir cette valeur en Variant, puis stocke le résultat dans la variable resultat.

 

Tableau récapitulatif des conversions autorisées de type dans VBA

Dans le tableau qui suit, vous trouverez le résumé des possibilités de conversion entre les différent Types de variables. Si vous utilisez ce tableau lors de votre conversions, vous êtes sûrs d'y parvenir sans que cette conversion se solde par une erreur.

 

Fonction de conversion Types d'entrée acceptés (Français) Dans VBA (donc en anglais)
CBool Booléen, Chaîne (représentant un booléen) Boolean, String
CByte Entier, Réel, Chaîne (représentant un entier entre 0 et 255) Integer, Single, String
CInt Entier, Réel, Chaîne (représentant un entier entre -32.768 et 32.767) Integer, Single, String
CLng Entier, Réel, Chaîne (représentant un entier entre -2.147.483.648 et 2.147.483.647) Integer, Single, String
CSng Entier, Réel, Chaîne (représentant un nombre réel) Integer, Single, String
CDbl Entier, Réel, Chaîne (représentant un nombre réel) Integer, Single, String
CCur Entier, Réel, Chaîne (représentant un nombre réel) Integer, Single, String
CDate Date, Chaîne (représentant une date) Date, String
CStr Booléen, Entier, Réel, Date, Chaîne Boolean, Integer, Single, Date, String
CDec Entier, Réel, Chaîne (représentant un nombre réel) Integer, Single, String
CVar Booléen, Entier, Réel, Date, Chaîne, Null Boolean, Integer, Single, Date, String, Null

Les autres combinaisons, par exemple une tentative de convertir une date en Integer avec la fonction CInt, vont se solder par une erreur d'incompatibilité de Type.

Erreurs courantes et problèmes potentiels lors de la conversion de Type

Lors de l'utilisation des fonctions de conversion de type, certains problèmes peuvent survenir, notamment :

  • Perte de précision: Lors de la conversion de types numériques, il peut y avoir une perte de précision, par exemple, lors de la conversion d'un Double en Integer ou en Long.
  • Erreurs de conversion: Si une valeur ne peut pas être convertie correctement, une erreur de type "Type Mismatch" peut se produire. Par exemple, tenter de convertir une chaîne non numérique en Integer avec CInt entraînera une erreur.
  • Dépassement de capacité: Certaines conversions peuvent entraîner un dépassement de capacité si la valeur est en dehors de la plage acceptable pour le type de données cible. Par exemple, si vous essayez de convertir un nombre trop grand (plus grand que 32.767) pour être stocké en tant qu'Integer en utilisant CInt, une erreur "Overflow" se produira.

Conseils et bonnes pratiques

Voici quelques bonnes pratiques pour utiliser les fonctions de conversion de type en VBA:

  • Utilisez la fonction de conversion appropriée: Choisissez la fonction de conversion qui correspond le mieux au type de données cible souhaité. Par exemple, utilisez CInt pour convertir en Integer et CDbl pour convertir en Double.
  • Vérifiez la plage de valeurs: Avant de convertir une valeur, assurez-vous qu'elle se situe dans la plage acceptable pour le type de données cible. Cela permet d'éviter les erreurs de dépassement de capacité.
  • Gérez les erreurs de conversion: Utilisez la gestion d'erreurs pour détecter et gérer les erreurs de conversion. Par exemple, vous pouvez utiliser la structure "On Error GoTo" pour rediriger l'exécution du code vers un traitement spécifique en cas d'erreur.
  • Convertir avec précaution: Lors de la conversion de types numériques, soyez conscient de la possibilité de perte de précision. Si cela pose problème, envisagez d'utiliser un type de données plus précis, comme Decimal.

Conclusion

Les fonctions de conversion de type sont des outils essentiels pour gérer les types de données dans VBA. Elles facilitent la conversion des valeurs d'un type de données à un autre en s'adaptant aux besoins spécifiques de votre code. En comprenant comment et quand utiliser ces fonctions, vous pouvez améliorer la qualité et la fiabilité de vos programmes VBA. N'hésitez pas à expérimenter et à pratiquer l'utilisation de ces fonctions de conversion de type pour maîtriser pleinement leur utilisation et leur application dans vos projets VBA.

Pour aller plus loin en VBA

Pour finir, voici une liste d'articles qui pourraient vous intéresser et vous être utiles…

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Commentaire sur “VBA: fonctions de conversion de Type (CStr, CInt, CDate,…)”