Réponse acceptée !
C'est cadeau, ça fait plaisir (merci msdn) :
Types de données
Les variables sont des espaces réservés destinés à stocker des valeurs. Elles
possèdent un nom et un type de données. Ce dernier détermine la manière dont les
bits représentant ces valeurs sont stockés dans la mémoire de l'ordinateur.
Quand vous déclarez une variable, vous pouvez aussi spécifier un type de
données. Toutes les variables ont un type de données qui détermine le genre de
données qu'elles peuvent stocker.
Quand vous ne spécifiez aucun type de données, le type de données par défaut
de la variable est Variant. Extrêmement changeant, le type de données Variant
peut représenter plusieurs types de données selon les situations. Quand vous
affectez ces types de données à une variable Variant, vous n'avez pas besoin de
les convertir : Visual Basic effectue automatiquement toutes les conversions
nécessaires.
Néanmoins, si vous êtes certain qu'une variable contiendra toujours des
données du même type, vous pouvez déclarer une variable pour ce type de données
et permettre ainsi à Visual Basic de gérer les données plus efficacement. Une
variable destinée à stocker le nom d'une personne, par exemple, est mieux
représentée par un type de données String, car un nom est toujours constitué de
caractères.
Les types de données s'appliquent aussi à d'autres éléments que les
variables. Quand vous affectez une valeur à une propriété, cette valeur possède
un type de données. Les arguments des fonctions possèdent aussi des types de
données. En fait, tout ce qui concerne les données dans Visual Basic touche
aussi aux types de données.
Vous pouvez également déclarer des tableaux de n'importe quel type
fondamental.
Pour plus d'informations reportez-vous à la section
« Tableaux », plus loin dans ce chapitre. Pour une description détaillée de la
sélection des types de données susceptibles d'améliorer les performances de
votre application, reportez-vous au chapitre « Optimisation et
compatibilité ».
Déclaration des variables avec des types de données
Avant d'utiliser une variable d'un autre type que Variant, vous devez la
déclarer comme As type à l'aide de l'instruction Private, Public, Dim ou
Static. Les instructions suivantes, par exemple, déclarent respectivement un
type Integer, Double, String et Currency :
Private I As Integer
Dim Amt As Double
Static YourName As String
Public BillsPaid As Currency
Comme le montrent ces exemples, une instruction Declaration peut combiner
plusieurs déclarations :
Private I As Integer, Amt As Double
Private YourName As String, BillsPaid As Currency
Private Test, Amount, J As Integer
Note Si vous ne spécifiez pas de type de
données, la variable prend le type de données par défaut. Dans l'exemple
ci-dessus, les variables Test et Amount sont de type
Variant. Cela vous surprendra peut-être si, habitué à d'autres langages, vous
vous attendiez à ce que les variables de la même instruction Declaration soient
toutes du type spécifié (en l'occurrence, Integer).
Types de données numériques
Visual Basic fournit plusieurs types de données numériques, à savoir :
Integer, Long (entier long), Single (virgule flottante en simple précision),
Double (virgule flottante en double précision) et Currency(monétaire).
Les types de données numériques utilisent généralement moins d'espace de
stockage que le type Variant.
Si vous savez qu'une variable contiendra toujours des nombres entiers (tels
que 12) plutôt que des nombres comportant une partie décimale (tels que 3,57),
vous pouvez la déclarer comme étant de type Integer ou Long. Les opérations sont
plus rapides avec des entiers et utilisent moins de mémoire que les autres types
de données. Les entiers sont particulièrement utiles en tant que variables de
comptage dans des boucles For...Next.
Pour plus d'informations sur les structures de contrôle,
reportez-vous à la section « Présentation des structures de contrôle », plus
loin dans ce chapitre.
Si la variable contient une fraction, déclarez-la comme une variable Single,
Double ou Currency. Le type de données Currency admet jusqu'à quatre décimales
et quinze chiffres avant la virgule. Ce type de données est précis et convient
parfaitement aux calculs monétaires. Les nombres à virgule flottante (Single et
Double) disposent de plages beaucoup plus larges que Currency, mais peuvent
comporter de petites erreurs d'arrondissement.
Note Les valeurs à virgule flottante peuvent
être exprimées sous la forme mmmEeee ou
mmmDeee, où mmm est la mantisse et eee
l'exposant (en puissance 10). La valeur positive la plus élevée d'un type de
données Single est 3,402823E+38, ou 3,4 multiplié par 10 à la puissance 38 ; la
valeur la plus élevée d'un type de données Double est 1,79769313486232D+308,
soit environ 1,8 multiplié par 10 à la puissance 308. Quand D sépare la
mantisse de l'exposant dans un littéral numérique, la valeur est traitée comme
une valeur de type Double. Parallèlement, l'utilisation de E traite la
valeur comme une valeur de type Single.
Type de données Byte
Si la variable contient des données binaires, déclarez-la sous forme de
tableau avec le type de données Byte. (Les tableaux sont décrits à la section
« Tableaux », plus loin dans ce chapitre). L'utilisation des variables de type
Byte pour stocker des données binaires permet de conserver ces dernières pendant
les conversions de format. Quand des variables String sont converties du format
ANSI au format Unicode et inversement, toutes les données binaires qu'elles
contiennent sont altérées. Visual Basic peut effectuer automatiquement les
conversions entre les formats ANSI et Unicode pendant l'exécution des opérations
suivantes :
- Lecture de fichiers
- Écriture de fichiers
- Appels de DLL
- Appels des méthodes et des propriétés des objets
À l'exception du moins unaire, tous les opérateurs applicables aux entiers
fonctionnent aussi avec le type de données Byte. Comme ce dernier est un type
non signé compris entre 0 et 255, il ne peut pas représenter de nombre négatif.
Dans le cas du moins unaire, Visual Basic force d'abord le type Byte à prendre
un entier signé.
Toutes les variables numériques peuvent être affectées les unes aux autres
ainsi qu'à des variables de type Variant. Visual Basic arrondit au lieu de
tronquer la partie décimale d'un nombre à virgule flottante avant de l'affecter
à un entier.
Pour plus d'informations sur les conversions Unicode et ANSI
, reportez-vous au chapitre « Aspects internationaux ».
Type de données String
Si vous savez qu'une variable contiendra toujours une chaîne de caractères et
jamais de valeur numérique, vous pouvez la déclarer comme étant de type
String :
Private S As String
Vous pouvez ensuite affecter des chaînes de caractères à cette valeur et la
manipuler à l'aide des fonctions de chaînes de caractères :
S = "Database"
S = Left(S, 4)
Par défaut, une variable ou un argument chaîne de caractères est une
chaîne de longueur variable ; la longueur de la chaîne croît ou décroît à
mesure que vous affectez de nouvelles données à la variable. Vous pouvez
également déclarer des chaînes de longueur fixe à l'aide de la syntaxe
suivante :
String *size
Par exemple, pour déclarer une chaîne dont la longueur sera toujours de 50
caractères, utilisez du code semblable à celui-ci :
Dim EmpName As String * 50
Si vous affectez une chaîne de moins de 50 caractères, EmpName
ajoute à droite le nombre d'espaces nécessaires pour atteindre les 50
caractères. Si vous affectez une chaîne trop longue par rapport à la longueur
fixe spécifiée, Visual Basic tronque simplement les caractères en trop.
Étant donné que les chaînes de longueur fixe présentent à droite bon nombre
d'espaces, vous apprécierez les fonctions Trim et RTrim qui suppriment les
espaces lorsque vous manipulez ces chaînes.
Dans les modules standard, les chaînes de caractères de longueur fixe peuvent
être déclarées comme Public ou Private. Dans les modules de feuille et de
classe, en revanche, elles doivent être déclarées comme Private.
Pour plus d'informations sur les fonctions « Ltrim, Rtrim et
Trim », reportez-vous auManuel de référence du langage.
Permutation entre les chaînes et les nombres
Vous pouvez affecter une chaîne à une variable numérique, à condition que
cette chaîne représente une valeur numérique. Vous pouvez aussi affecter une
valeur numérique à une variable de chaîne. Par exemple, placez un bouton de
commande (CommandButton, une zone de texte (TextBox) et une zone de liste
(ListBox) sur une feuille. Tapez le code ci-dessous dans l'événement Click du
bouton de commande, exécutez l'application, puis cliquez sur le bouton de
commande.x@06p0062
Private Sub Command1_Click()
Dim intX As Integer
Dim strY As String
strY = "100,23"
intX = strY ' Passe la chaîne à une variable
' numérique.
List1.AddItem Cos(strY) ' Ajoute le cosinus du nombre de la
' chaîne à la zone de liste.
strY = Cos(strY) ' Passe le cosinus à la
' variable de chaîne.
Text1.Text = strY ' Imprime la variable de chaîne dans
' la zone de texte.
End Sub
Visual Basic force automatiquement les variables à prendre le type de données
approprié. Soyez donc très prudent quand vous permutez des chaînes et des
nombres, car le passage d'une valeur non numérique dans la chaîne peut engendrer
une erreur d'exécution.
Type de données Boolean
Quand une variable contient uniquement des informations vrai/faux, oui/non ou
actif/inactif, vous pouvez la déclarer comme étant de type Boolean. La valeur
par défaut de Boolean est False. Dans l'exemple ci-dessous,
blnRunning est une variable de type Boolean qui stocke un simple
paramètre oui/non.
Dim blnRunning As Boolean
' Vérifie si la bande fonctionne.
If Recorder.Direction = 1 Then
blnRunning = True
End if
Type de données Date
Les variables de type Variant ainsi que les types de données Date spécifiques
peuvent contenir des valeurs de type Date/Heure. On retrouve les mêmes
caractéristiques générales des dates dans les types de données Date et dans les
variables de type Variant.
Pour plus d'informations reportez-vous à la rubrique
« Valeurs de type Date/Heure stockées dans les variables Variant » de la section
« Description détaillée du type Variant ».
Quand d'autres types de données numériques sont convertis en Date, les
valeurs situées avant le séparateur décimal se rapportent à la date tandis que
celles situées après se rapportent à l'heure. Minuit correspond à 0 et midi à
0,5. Les nombres entiers négatifs représentent les dates antérieures au 30
décembre 1899.
Type de données Object
Les variables objet sont stockées sous forme d'adresses 32 bits (4 octets)
faisant référence aux objets contenus à l'intérieur d'une ou plusieurs
applications. Une variable de type Object est une variable qui peut être
affectée ultérieurement (à l'aide de l'instruction Set) pour faire référence à
n'importe quel objet effectivement reconnu par l'application.
Dim objDb As Object
Set objDb = OpenDatabase("c:\vb5\Biblio.mdb")
Quand vous déclarez des variables objet, essayez d'utiliser des classes
spécifiques (telles que TextBox au lieu de Control ou,
dans l'exemple précédent, Database au lieu de Object)
plutôt que le nom générique Object. Visual Basic peut résoudre les références
aux propriétés et aux méthodes des objets à l'aide de types spécifiques avant
que vous n'exécutiez l'application. Les classes spécifiques sont énumérées dans
l'Explorateur d'objets.
Quand vous manipulez les objets d'autres applications, vous pouvez les
déclarer tels qu'ils apparaissent dans la liste Classes de l'Explorateur
d'objets au lieu d'utiliser une variable de type Variant ou de type générique
Object. Vous serez ainsi certain que Visual Basic reconnaîtra le type d'objet
spécifique auquel vous faites référence tout en permettant de résoudre la
référence au moment de l'exécution.
Pour plus d'informations sur la création et l'affectation des
objets et des variables objet, reportez-vous à la section « Création d'objets »,
plus loin dans ce chapitre.
Conversion des types de données
Visual Basic fournit plusieurs fonctions de conversion que vous pourrez
utiliser pour convertir des valeurs en un type de données spécifique. Vous
pouvez par exemple convertir une valeur en valeur de type Currency à l'aide de
la fonction CCur :
PayPerWeek = CCur(hours * hourlyPay)
| Fonction de conversion | Convertit une expression en |
| Cbool | Boolean |
| Cbyte | Byte |
| Ccur | Currency |
| Cdate | Date |
| CDbl | Double |
| Cint | Integer |
| CLng | Long |
| CSng | Single |
| CStr | String |
| Cvar | Variant |
| CVErr | Error |
Note Les valeurs passées à une fonction de
conversion doivent être valides pour le type de données de la destination, sinon
une erreur se produit. Si vous essayez de convertir un type Long en type
Integer, par exemple, la valeur du type Long doit être comprise dans la plage
valide du type de données Integer.
Pour plus d'informations sur une fonction de conversion
spécifique, reportez-vous au Manuel de référence du langage.
Type de données Variant
Une variable de type Variant peut stocker tous les types de données définis
par le système. Quand vous affectez ces types de données à une variable de type
Variant, vous ne devez pas les convertir, car Visual Basic effectue
automatiquement toutes les conversions nécessaires. Par exemple :
Dim SomeValue ' Variant par défaut.
SomeValue = "17" ' SomeValue contient "17"
' (une chaîne de deux caractères).
SomeValue = SomeValue - 15 ' SomeValue contient maintenant la
' valeur numérique 2.
SomeValue = "U" & SomeValue ' SomeValue contient maintenant "U2"
' (une chaîne de 2 caractères).
Bien que vous puissiez effectuer des opérations sur les variables Variant
sans vous préoccuper du type des données qu'elles contiennent, il existe
quelques pièges qu'il faut impérativement éviter.
- Si vous effectuez des opérations arithmétiques ou des fonctions sur une
variable Variant, celle-ci doit contenir des données numériques. Pour plus
d'informations, reportez-vous à la rubrique « Valeurs numériques stockées dans
les variables Variant » de la section « Description détaillée du type
Variant ».
- Si vous concaténez des chaînes, utilisez l'opérateur & en lieu et place
de l'opérateur +. Pour plus d'informations, reportez-vous à la rubrique
« Chaînes de caractères stockées dans des variables Variant » de la section
« Description détaillée du type Variant ».
Outre son aptitude à se comporter comme les autres types de données standard,
le type de données Variant peut aussi contenir trois valeurs spéciales : Empty,
Null et Error.
La valeur Empty
Vous avez parfois besoin de savoir si une valeur a déjà été affectée à une
variable existante. Une variable Variant possède la valeur Empty lorsqu'aucune
valeur ne lui a encore été affectée. Cette valeur est une valeur spéciale
différente de 0, d'une chaîne de longueur nulle ("") ou de la
valeur Null. Vous pouvez rechercher une éventuelle valeur Empty à l'aide de la
fonction IsEmpty :
If IsEmpty(Z) Then Z = 0
Quand une variable Variant contient la valeur Empty, vous pouvez l'utiliser
dans des expressions ; elle est traitée comme 0 ou une chaîne de longueur nulle,
selon l'expression.
La valeur Empty disparaît dès qu'une autre valeur est affectée à une variable
Variant (y compris la valeur 0, la chaîne de longueur nulle et la valeur Null).
Vous pouvez réaffecter la valeur Empty à une variable Variant à l'aide du mot
clé Empty.
La valeur Null
Le type de données Variant peut contenir une autre valeur spéciale : Null.
Cette valeur est généralement utilisée dans les applications de bases de données
pour indiquer les données inconnues ou manquantes. Étant donné la manière dont
elle est utilisée dans les bases de données, Null possède des caractéristiques
uniques :
- Les expressions qui comportent une valeur de type Null donnent toujours un
résultat de type Null. Ainsi, on dit qu'une valeur de type Null se « propage » à
travers les expressions. Si une partie de l'expression a pour résultat une
valeur de type Null, l'expression entière produit une valeur de type
Null.
- Lorsqu'une valeur de type Null, une variable Variant contenant une valeur de
type Null ou une expression qui calcule une valeur de type Null est passée comme
argument à la plupart des fonctions, celles-ci renvoient une valeur de type
Null.
- Les valeurs de type Null se propagent à travers les fonctions intrinsèques
qui renvoient le type de données Variant.
Vous pouvez également affecter une valeur de type Null à l'aide du mot clé
Null :
Z = Null
Pour savoir si une variable Variant contient une valeur de type Null, vous
pouvez utiliser la fonction IsNull :
If IsNull(X) And IsNull(Y) Then
Z = Null
Else
Z = 0
End If
Si vous affectez une valeur de type Null à une variable qui n'est pas de type
Variant, une erreur récupérable se produit. L'affectation d'une valeur de type
Null à une variable Variant ne génère pas d'erreur, et la valeur de type Null se
propage à travers les expressions qui utilisent les variables Variant (bien
qu'une valeur de type Null ne se propage pas à travers certaines fonctions).
Vous pouvez renvoyer une valeur de type Null à partir de n'importe quelle
procédure Function qui renvoie une valeur Variant.
Pour que les variables aient une valeur de type Null, il faut que vous leur
en affectiez une explicitement. Ainsi, si vous n'utilisez pas de valeur de type
Null dans vos applications, il n'est pas nécessaire que vous écriviez du code
qui recherche ou gère ce type de valeur.
Pour plus d'informations sur l'utilisation des valeurs de
type Null dans des expressions, reportez-vous à la section « Null » du Manuel
de référence du langage.
La valeur Error
Dans une variable Variant, Error est une valeur spéciale indiquant qu'une
condition d'erreur est apparue dans une procédure. Contrairement aux autres
types d'erreur, les erreurs normales de niveau application ne sont pas traitées,
ce qui permet à l'application ou à vous-même d'adopter une autre solution en
fonction de la valeur d'erreur. Les valeurs d'erreur sont obtenues en
convertissant des nombres réels en valeurs d'erreur à l'aide de la fonction
CVErr.
Pour plus d'informations sur la manière d'utiliser la valeur
Error dans des expressions, reportez-vous à la section « CVErr, fonction » du
Manuel de référence du langage. Pour plus d'informations sur la gestion des
erreurs, reportez-vous au chapitre « Débogage et gestion d'erreurs ». Enfin,
vous trouverez une description détaillée du type de données Variant à la section
« Description détaillée du type Variant ».
@++
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"