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.
Sommaire
- Fonctions de conversion de type et leur utilité
- Principales fonctions de conversion de type en VBA et des exemples d'utilisation
- 1. Convertir une valeur en Integer – CInt
- 2. Convertir une valeur en Long – CLng
- 3. Convertir une valeur en Decimal – CDec
- 4. Convertir une valeur en Single – CSng
- 5. Convertir une valeur en Double – CDbl
- 6. Convertir une valeur en String – CStr
- 7. Convertir une valeur en Boolean – CBool
- 8. Convertir une valeur en Date – CDate
- 9. Convertir une valeur en Currency – CCur
- 10. Convertir une valeur en Byte – CByte
- 11. Convertir une valeur en Variant – CVar
- Tableau récapitulatif des conversions autorisées de type dans VBA
- Erreurs courantes et problèmes potentiels lors de la conversion de Type
- Conseils et bonnes pratiques
- Conclusion
- Pour aller plus loin en VBA
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 Integer – CInt
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.
1 2 3 4 |
Dim valeur As Double Dim resultat As Integer valeur = 7.8 resultat = CInt(valeur) |
2. Convertir une valeur en Long – CLng
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.
1 2 3 4 |
Dim valeur As Double Dim resultat As Long valeur = 123456.78 resultat = CLng(valeur) |
3. Convertir une valeur en Decimal – CDec
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.
1 2 3 4 |
Dim valeur As Double Dim resultat As Variant valeur = 1234.5678 resultat = CDec(valeur) |
4. Convertir une valeur en Single – CSng
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.
1 2 3 4 |
Dim valeur As Integer Dim resultat As Single valeur = 18 resultat = CSng(valeur) |
5. Convertir une valeur en Double – CDbl
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.
1 2 3 4 |
Dim valeur As Integer Dim resultat As Double valeur = 42 resultat = CDbl(valeur) |
6. Convertir une valeur en String – CStr
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.
1 2 3 4 |
Dim valeur As Integer Dim resultat As String valeur = 252 resultat = CStr(valeur) |
7. Convertir une valeur en Boolean – CBool
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.
1 2 3 4 |
Dim valeur As Integer Dim resultat As Boolean valeur = 1 resultat = CBool(valeur) |
8. Convertir une valeur en Date – CDate
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.
1 2 3 4 |
Dim valeur As String Dim resultat As Date valeur = "31/03/2023" resultat = CDate(valeur) |
9. Convertir une valeur en Currency – CCur
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.
1 2 3 4 |
Dim valeur As Double Dim resultat As Currency valeur = 19.99 resultat = CCur(valeur) |
10. Convertir une valeur en Byte – CByte
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.
1 2 3 4 |
Dim valeur As Integer Dim resultat As Byte valeur = 200 resultat = CByte(valeur) |
11. Convertir une valeur en Variant – CVar
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.
1 2 3 4 |
Dim valeur As Integer Dim resultat As Variant valeur = 82 resultat = CVar(valeur) |
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
enInteger
ou enLong
. - 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 enDouble
. - 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…
- Liste de toutes les fonctions VBA
- Manipulation des fichiers en VBA
- Comment utiliser RECHERCHEV (et autres fonctions Excel) en VBA
- Calculer la SOMME en VBA (plusieurs méthodes)
Commentaire sur “VBA: fonctions de conversion de Type (CStr, CInt, CDate,…)”
Très bon tutoriel. Merci