Contenu

# Instruction ReDim

Déclare ou redéfinit des variables ou des tableaux.

### Syntaxe :

    ReDim [Preserve] variable [(début à fin)] [As nom-de-type][, variable2 [(début à fin)] [As nom-de-type][,...]]

Vous pouvez également ajouter le mot clé Preserve pour conserver le contenu du tableau redimensionné. ReDim ne peut être utilisé que dans des sous-programmes.

### Paramètres :

variable:Tout nom de variable ou de tableau.

typename: Mot clé qui déclare le type de données d'une variable.

Byte: Variable de type octet (0-255)

Boolean: Variable de type booleen (True, False)

Currency: Variable de type devise (Devise avec 4 décimales)

Date : variable de date

Double: Variable à virgule flottante double précision (1,79769313486232 x 10E308 - 4,94065645841247 x 10E-324)

Integer : variable au format nombre entier (-32768 - 32767)

Long : variable au format nombre entier long (-2.147.483.648 - 2.147.483.647)

Object: Variable objet (Remarque: cette variable ne peut être définie par la suite qu'avec Set!)

Single : variable à virgule flottante simple précision (3,402823 x 10E38 - 1,401298 x 10E-45).

String : variable de chaîne composée d'un maximum de 2 147 483 647 caractères.

Variant:Type de variable variant (contient tous les types, spécifiés par définition). Si aucun nom de type n'est spécifié, les variables sont automatiquement définies comme Type Variant, sauf si une instruction de DefBool à DefVar est utilisée.

object: Objet Universal Network object (UNO) ou instance de ClassModule.

char: Caractère spécial qui déclare le type de données d'une variable.

Dans LibreOffice Basic, vous n'avez pas besoin de déclarer explicitement des variables. Cependant, vous devez déclarer des tableaux avant de pouvoir les utiliser. Vous pouvez déclarer une variable avec l'instruction Dim, en utilisant des virgules (, ) pour séparer plusieurs déclarations. Pour déclarer un type de variable, entrez un caractère de déclaration de type après le nom ou utilisez un nom de mot-clé de type correspondant.

Declaration character | Variable type name
--- | ---
% | Integer
& | Long
! | Single
# | Double
$ | String
@ | Currency

array: Déclaration de tableau.

start, end: Valeurs numériques ou constantes qui définissent le nombre d'éléments (NombreElements = (end-start) +1) et la plage d'index.

start and end peuvent être des expressions numériques si ReDim est appliqué dans la procédure.

LibreOffice Basic supporte les matrices unidimensionnelles ou multidimensionnelles définies par un type de variable spécifié. Les matrices peuvent être utilisées si le programme comprend des listes ou des tables à éditer. L'avantage des matrices est qu'elles permettent d'appeler des éléments individuels à partir d'index, lesquels peuvent être formulés comme expressions numériques ou variables.

Les tableaux sont déclarés avec l'instruction Dim. Il existe plusieurs façons de définir la plage d'index :

      Dim text(20) As String ' 21 éléments numérotés de 0 à 20
      Dim value(5 to 25) As Integer ' 21 valeurs numérotées de 5 à 25
      Dim montant(-15 to 5) As Currency ' 21 montants(0 inclus),numérotés de  -15 à 5
      REM Champ de données bidimensionnel
      Dim table$(20,2) ' 63 items; de 0 à 20 niveau 1, de 0 à 20 niveau 2 et de  0 à 20 niveau 3.

Vous pouvez déclarer un type de tableau dynamique si une instruction ReDim définit le nombre de dimensions dans le sous-programme ou la fonction qui contient le tableau. En règle générale, vous ne pouvez définir une dimension de tableau qu'une seule fois et vous ne pouvez pas la modifier. Dans un sous-programme, vous pouvez déclarer un tableau avec ReDim. Vous ne pouvez définir des dimensions qu'avec des expressions numériques. Cela garantit que les champs sont aussi grands que nécessaire.

## Exemple :

    Sub ExampleRedim
        Dim iVar() As Integer, iCount As Byte
        ReDim iVar(5) As Integer
        For iCount = 1 To 5
            iVar(iCount) = iCount
        Next iCount
        ReDim iVar(10) As Integer
        For iCount = 1 To 10
            iVar(iCount) = iCount
        Next iCount
    End Sub