Contenu

# Utilisation des variables

Cette rubrique décrit l'utilisation de base des variables dans LibreOffice Basic.

## Conventions de nommage des variables

Un nom de variable peut comprendre jusqu'à 255 caractères. Le premier de ces caractères doit être une lettre entre A et Z ou a et z. Les chiffres peuvent également être utilisés dans ces noms, mais les signes de ponctuation et les caractères spéciaux ne sont pas autorisés, sauf le caractère de soulignage ("_"). Dans LibreOffice Basic, les identificateurs de variables ne respectent pas la casse. Les noms de variables peuvent contenir des espaces mais doivent, dans ce cas, être placés entre crochets.

Exemples d'identificateurs de variables :

        MyNumber=5      'Correct'
        MyNumber5=15    'Correct'
        MyNumber_5=20   'Correct'
        My Number=20    'invalide, un nom de variable avec un espace doit être entouré de crochets [].
        [My Number]=12  'Correct'
        DéjàVu=25       'Invalide, caractères spéciaux interdits'
        5MyNumber=12    'Incorrect, ne doit pas commencer par un chiffre'
        Number,Mine=12  'Invalide, signes de ponctuation non autorisés'

## Déclaration des variables

Dans LibreOffice Basic, il n'est pas nécessaire de déclarer les variables explicitement. Une variable peut être déclarée à l'aide de l'instruction Dim. Vous pouvez déclarer plusieurs variables à la fois en séparant leurs noms à l'aide d'une virgule. Pour définir le type de variable, utilisez soit un caractère de déclaration de type après le nom, soit le mot-clé approprié.

Exemples de déclarations de variables :

        Dim a$               'Déclare la variable "a" de type String'
        Dim a As String      'Déclare la variable "a" de type String'
        Dim a$, b As Integer 'Déclare une variable de type String et une de type Integer'
        Dim c As Boolean     'Déclare c de type Boolean variable qui peut être TRUE ou FALSE'

Après avoir déclaré une variable comme étant d'un certain type, vous ne pouvez pas la déclarer à nouveau sous le même nom comme étant d'un type différent !

Lorsque vous déclarez plusieurs variables dans une seule ligne de code, vous devez spécifier le type de chaque variable. Si le type d'une variable n'est pas explicitement spécifié, alors Basic supposera que la variable est du type Variant.

      ' Les deux variables "a" et "b" sont de type Entier
      Dim a As Integer, b As Integer
      ' La variable "c" est un variant et "d" est un entier
      Dim c, d As Integer
      ' La variable A peut aussi être explicitement déclarée comme Variant
      Dim e As Variant, f As Double

Le type Variant est un type de données spécial qui peut stocker n'importe quel type de valeur. Pour en savoir plus, reportez-vous à la section Le type Variant ci-dessous.

### Déclarations de variables forcées

Pour forcer la déclaration de variables, utilisez la commande suivante :

    Option Explicit

L'instruction Option Explicit doit constituer la première ligne du module, avant le premier élément SUB. Généralement, seules les matrices doivent être déclarées explicitement. Toutes les autres variables sont déclarées en fonction du caractère de déclaration de type ou, en cas d'omission, en tant que type par défaut Single (simple).

## Types de variables

LibreOffice Basic supporte quatre classes de variables :

- Les variables numériques peuvent contenir des valeurs numériques. Certaines variables servent à stocker de petits ou de grands nombres et d'autres sont utilisées pour des nombres à virgule flottante ou des fractions.

- Les variables de type chaîne contiennent des chaînes de caractères.

- Les variables logiques contiennent soit la valeur TRUE (vrai) soit la valeur FALSE (faux).

- Les variables de type objet peuvent stocker des objets de différents types, comme des tables et des documents à l'intérieur d'un document.

### Variables entières

Les variables entières sont comprises entre -32 768 et 32 767. Si vous assignez une valeur à virgule flottante à une variable entière, les décimales sont arrondies au nombre entier suivant. Les variables entières sont calculées rapidement dans les procédures et peuvent être utilisées pour les variables de comptage dans les boucles. Une variable entière n'occupe que deux octets de mémoire. "%" constitue le caractère de déclaration de ce type.

    Dim Variable%
    Dim Variable As Integer

### Variables entières longues

Les variables entières longues sont comprises entre -2 147 483 648 et 2 147 483 647. Si vous assignez une valeur à virgule flottante à une telle variable, les décimales sont arrondies au nombre entier suivant. Les variables entières longues sont calculées rapidement dans les procédures et peuvent être utilisées pour les variables de comptage dans les boucles pour les valeurs importantes. Une variable entière longue occupe quatre octets de mémoire. "&" constitue le caractère de déclaration de ce type.

    Dim Variable&
    Dim Variable As Long

### Variables décimales

Les variables décimales peuvent contenir des nombres positifs ou négatifs, ou zéro. La précision est de 29 chiffres.

Il est possible d'utiliser plus (+) ou moins (-) comme préfixes aux nombres décimaux (avec ou sans espaces).

Si un nombre décimal est assigné à une variable nombre entier, LibreOffice Basic arrondira la valeur vers le haut ou vers le bas.

### Variables simples

Les variables de type Single peuvent prendre des valeurs positives ou négatives allant de 3,402823 x 10E38 à 1,401298 x 10E-45. Les variables de type Single sont des variables à virgule flottante, dans lesquelles la précision décimale diminue à mesure que la partie non décimale du nombre augmente. Les variables Single conviennent aux calculs mathématiques de précision moyenne. Les calculs nécessitent plus de temps que pour les variables entières, mais sont plus rapides que les calculs avec des variables doubles. Une variable Single nécessite 4 octets de mémoire. Le caractère de déclaration de type est "!".

    Dim Variable!
    Dim Variable As Single

### Variables doubles

Les variables de type Double peuvent prendre des valeurs positives ou négatives allant de 1,79769313486232 x 10E308 à 4,94065645841247 x 10E-324. Les variables Double sont des variables à virgule flottante, dans lesquelles la précision décimale diminue à mesure que la partie non décimale du nombre augmente. Les variables doubles conviennent pour des calculs précis. Les calculs nécessitent plus de temps que pour les variables Single. Une variable Double nécessite 8 octets de mémoire. Le caractère de déclaration de type est "#".

    Dim Variable#
    Dim Variable As Double

### Variables monétaires

Les variables monétaires sont stockées en interne sous forme de nombres de 64 bits (huit octets) et s'affichent sous forme de nombres décimaux fixes comportant 15 valeurs non décimales et 4 décimales. Leurs valeurs sont comprises entre -922 337 203 685 477,5808 et +922 337 203 685 477,5807. Les variables monétaires servent à calculer des valeurs monétaires avec une grande précision. @ constitue le caractère de déclaration de ce type.

    Dim Variable@
    Dim Variable As Currency

### Littéraux pour les entiers

Les nombres peuvent être encodés en utilisant des formes octales et hexadécimales.

      xi = &o13 '    8 + 3
      ci = &h65 ' 6*16 + 5
      MAX_Integer =  &o77777 '  32767 = &h7FFF
      MIN_Integer = &o100000 ' -32768 = &h8000
      MAX_Long = &h7fffffff '  2147483647 = &o17777777777
      MIN_Long = &h80000000 ' -2147483648 = &o20000000000

### Variables de chaîne

Les variables de chaîne peuvent comporter des chaînes de caractères allant jusqu'à 2 147 483 648 caractères. Chaque caractère est stocké sous la valeur Unicode correspondante. Les variables de chaîne peuvent être utilisées pour le traitement de texte à l'intérieur de programmes et pour le stockage temporaire de tout caractère non imprimable d'une longueur maximale de 2 Gbites. La mémoire nécessaire au stockage des variables de chaîne dépend du nombre de caractères de celles-ci. "$" constitue le caractère de déclaration de ce type.

Dans les fonctions de chaîne BASIC, le premier caractère de la chaîne a 1 pour index.

    Dim Variable$
    Dim Variable As String

### Variables logiques

Les variables logiques ne stockent qu'une seule des deux valeurs suivantes : VRAI ou FAUX. 0 correspond à FAUX ; toute autre valeur correspond à VRAI.

    Dim Variable As Boolean

### Variables de date

Les variables de date ne peuvent contenir que des valeurs de date et d'heure stockées dans un format interne. Les valeurs assignées aux variables de date par Dateserial, Datevalue, Timeserial oo Timevalue sont automatiquement converties au format interne. Les variables de date sont converties en nombres normaux à l'aide de la fonction Day, Month, Year, Hour, Minute ou Second. Le format interne permet de comparer des valeurs date/heure par calcul de la différence entre deux nombres. Ces variables ne peuvent être déclarées qu'avec le mot-clé Date.

    Dim Variable As Date

### Littéraux pour les dates

Les littéraux de date permettent de spécifier des variables de date non ambiguës et indépendantes du langage actuelle. Les littéraux sont entourés de dièses #. Les formats possibles sont :

- #yyyy-mm-dd#

- #mm/dd/yyyy#

      start_date = #12/30/1899# ' = 1
      dob = #2010-09-28#

## Le type Variant

Les variables déclarées comme Variant peuvent gérer tout type de données. Cela signifie que le type de donnée actif est défini pendant l'exécution lorsqu'une valeur est affectée à la variable.

Il existe trois manières principales de créer une variable Variant, comme indiqué ci-dessous :

      Dim varA ' Le type n'est pas spécifié, la variable est donc un Variant
      Dim varB as Variant ' La variable est explicitement déclarée comme un Variant
      varC = "abc" ' Les variables non déclarées antérieurement sont traitées comme ds Variants

L'exemple ci-dessous utilise la fonction TypeName pour montrer comment le type de variable Variant change en fonction de son assignation.

      Dim myVar As Variant
      MsgBox TypeName(myVar) ' Empty
      myVar = "Hello!"
      MsgBox TypeName(myVar) ' String
      myVar = 10
      MsgBox TypeName(myVar) ' Integer

Une variable Variant est initialisée avec le type de donnée spécial Empty. Vous pouvez utiliser la fonction IsEmpty pour tester si la variable est un Empty Variant.

Vous pouvez également utiliser le mot clé Any pour déclarer une variable en tant que Variant. Cependant, Any est obsolète et est disponible pour la compatibilité descendante.

Les arguments de type Variant ou Any transmis dans les appels de fonction n'ont pas leurs types vérifiés.

      Dim myVar As Any ' Variable "myVar" est un Variant

## Valeurs initiales des variables

Dès que la variable est déclarée, elle est automatiquement définie à la valeur "Null". Notez les conventions suivantes :

Les variables numériques obtiennent automatiquement la valeur "0" dès qu'elles sont déclarées.

La valeur 0 est assignée en interne aux variables de date, ce qui revient à convertir la valeur 0 avec la fonction Day, Month, Year, Hour, Minute ou Second.

Les variables de chaîne obtiennent un espace vide ("") lorsqu'elles sont déclarées.

## Matrices

LibreOffice Basic reconnaît les matrices unidimensionnelles ou multidimensionnelles définies par un type de variable spécifié. Les matrices peuvent être utilisées pour l'édition de listes et de tables dans les programmes. Les différents éléments d'une matrice peuvent être désignés par un index numérique.

Les matrices doivent être déclarées avec l'instruction Dim. Il existe plusieurs façons de définir la plage d'index d'une matrice :

        Dim Text$(20)       '21 éléments numérotés de 0 à 20'
        Dim Text$(5,4)      '30 éléments (a matrice de 6 x 5 éléments)'
        Dim Text$(5 To 25)  '21 éléments numérotés de 5 à 25'
        Dim Text$(-15 To 5) '21 éléments ( 0 inclus ), numérotés de -15 à 5'

La plage d'index peut comprendre des nombres positifs comme des nombres négatifs.

## Constantes

Les constantes ont une valeur fixe. Elles ne sont définies qu'une seule fois dans le programme et ne peuvent pas être redéfinies ultérieurement :

    Const ConstName=Expression

Rubriques connexes

Constantes Basic

Instruction Dim