FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017  Ajouter une question

 

Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).

Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.


SommaireProgrammation OBasicLes variables (10)
précédent sommaire suivant
 

Les variables servent à stocker et manipuler des informations dans une macro.

Une variable possède :

un nom qui permet d'accéder aux données qu'elle contient : « maVariable » ;
un type de données : par exemple, String et Integer dans les procédures ci-dessous.

La macro affecte une chaîne de caractères (Bonjour !) dans une variable (maVariable), puis l'affiche dans un MsgBox :

Code vb : Sélectionner tout
1
2
3
4
5
6
Sub afficherMessage 
    Dim maVariable As String 
  
    maVariable = "Bonjour !" 
    MsgBox maVariable 
End Sub

Les données peuvent être modifiées pendant l'exécution de la macro.
Un exemple pour affecter une valeur numérique à une variable, l'afficher dans un MsgBox, ajouter 20 à la valeur de cette variable, puis afficher le nouveau résultat :
Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
Sub afficherValeur() 
   Dim maVariable As Integer 
  
   maVariable = 10 
   MsgBox maVariable 
  
   maVariable = maVariable + 20 
   MsgBox maVariable 
End Sub

Evitez de nommer les variables en utilisant des mots clés ou instructions/fonctions réservés par l'application (par exemple Val, Left...).
Le nom des variables doit commencer par un caractère alphabétique et ne pas excéder 255 caractères.
Les noms ne doivent pas contenir de caractères spéciaux.
Le caractère underscore _ est accepté. Essayez de donner des noms les plus explicites possibles afin de faciliter la relecture de votre programme.

Le type de données doit être défini en fonction de la valeur prise par la variable. Une variable définie de façon incorrecte pour un contexte particulier, peut générer un message d'erreur. Chaque type de donnée utilise un espace mémoire. Il est donc important de définir le bon type de données pour libérer de l'espace mémoire et ne pas ralentir inutilement le traitement de la macro.

Toutes les variables sont converties en type Variant si aucun autre type de données n'est explicitement déclaré.

En cas de déclaration de plusieurs variables avec le même Dim, vous devez préciser le type de donnée pour chaque variable.
Par exemple, si pour définir trois variables de type String (strVar1, strVar2 et strVar3) vous écrivez :
Dim strVar1 , strVar2 , strVar3 As StringDans ce cas strVar1 et strVar2 seront de type Variant.

Pour y remédier et obtenir trois variables String, Il faut écrire :
Dim strVar1 As String , strVar2 As String , strVar3 As String

Mis à jour le 26 août 2013 SilkyRoad

Le type de données doit être défini en fonction de la valeur prise par la variable.

Boolean :
Données pouvant prendre exclusivement les valeurs logiques True et False.
Les variables Boolean sont stockées sous la forme de nombres codés sur 16 bits .


Integer :

Données contenant des nombres entiers, de 16 bits, compris entre -32 768 et 32 767.
Le signe % est le caractère de déclaration du type Integer.
Remarque :
Si vous écrivez « Dim X As Integer », alors que la donnée est décimale (par exemple X=5.9), la valeur renvoyée sera égale à 6. La valeur de la variable est arrondie à l'entier le plus proche.

Long :
Nombre entier de 32 bits dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647.
Le signe et commercial (&) est le caractère de déclaration du type Long.
Si vous lui affectez un nombre décimal, la valeur de la variable est arrondie à l'entier le plus proche.

Currency :
Données de 64 bits dont la plage de valeurs s'étend de -922 337 203 685 477,5808 à 922 337 203 685 477,5807.
Le signe @ est le caractère de déclaration du type Currency.
Ce type de donnée est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grande précision est requise.

Single :
Type de donnée, sur 32 bits, qui regroupe des variables à virgule flottante en simple précision sous forme de nombres à virgule flottante, dont la valeur est comprise entre -3,402823E38 et -1,401298E-45 pour les valeurs négatives, et entre 1,401298E-45 et 3,402823E38 pour les valeurs positives.
Le point d'exclamation (!) est le caractère de déclaration du type Single.

Double :
Type de donnée, sur 64 bits, stockant les nombres à virgule flottante en double précision compris entre -1,79769313486231E308 et -4,94065645841247E-324 pour les valeurs négatives, et entre 4,94065645841247E-324 et 1,79769313486232E308 pour les valeurs positives.
Le signe dièse (#) est le caractère de déclaration du type Double.

Date :
Type de données, sur 64 bits, utilisé pour stocker les dates et les heures.

String :
Type de données,sur 64 bits, utilisé pour stocker des chaînes de caractères.
Une donnée de type String peut inclure lettres, nombres, espaces et signes de ponctuation.
Le signe dollar ($) est le caractère de déclaration du type String.

Variant :
Peut contenir tous les types de données.
Toutes les variables sont converties en type Variant si aucun autre type de données n'est explicitement déclaré.

Object :
Type de données représentant toute référence Objet.

Mis à jour le 26 août 2013 SilkyRoad zoom61

L'instruction Option Explicit est utilisée pour imposer la déclaration explicite de toutes les variables dans un module. Cette instruction doit apparaître en tête de module, avant toute procédure.
L'instruction Option Explicit permet d'identifier une variable non déclarée ou mal orthographiée (une erreur se produit).

Mis à jour le 3 août 2013 SilkyRoad

Les variables locales :
Une variable déclarée à l'intérieur d'une procédure (Sub ou Function) ne sera valide qu'à l'intérieur de celle-ci et uniquement jusqu'à sa fermeture.

Les variables publiques :
Dans certains cas, une variable doit rester valide pour toutes les procédures, tous les modules de toutes les bibliothèques, ou après la fermeture d'une procédure ou d'une fonction. La déclaration des variables doit alors se faire en tête de module et en dehors des procédures Sub ou Function :

GLOBAL VarName As TYPENAME
La variable est valide tant que la session OpenOffice.org est ouverte.

PUBLIC VarName As TYPENAME
La variable est valide dans tous les modules.

PRIVATE VarName As TYPENAME
La variable est valide dans ce module.

DIM VarName As TYPENAME

La variable est valide dans ce module.

Mis à jour le 3 août 2013 SilkyRoad

L'instruction Const permet de déclarer les constantes.

Une constante est un élément nommé conservant une valeur (chaîne, donnée numérique...) identique pendant toute l'exécution d'un programme.
Les constantes peuvent remplacer des valeurs réelles partout dans votre code.

Il y a plusieurs avantages à utiliser une constante :
Si la donnée doit être modifiée dans une macro complexe, vous n'avez plus besoin de parcourir toute la procédure pour la retrouver : il suffit de modifier la constante qui est généralement placée en début de macro ou en tête du module. Vous évitez ainsi les recherches fastidieuses et les erreurs de saisie.
Les constantes permettent aussi d'améliorer la lisibilité des macros.

Code vb : Sélectionner tout
1
2
3
4
5
6
Sub Test_Utilisation_Constantes 
  Const LaValeur As Integer = 100 
  Const LeTexte As String = "essai" 
  
  MsgBox LeTexte & " " & LaValeur * 2 
End Sub

Mis à jour le 5 août 2013 SilkyRoad

Ces fonctions convertissent une expression en un type de données spécifié. Elles sont particulièrement intéressantes pour réadapter un format, par exemple suite à un transfert de données brutes que vous souhaitez utiliser en type Date, numérique...

Fonction - Type renvoyé (Type de conversion)

  • CBool - Boolean (Convertit une comparaison de chaînes de caractères ou une comparaison numérique en expression logique) ;
    ou bien une expression numérique en expression logique) ;
  • CByte - Byte (Convertit une chaîne de caractères ou une expression numérique en type Byte) ;
  • CCur - Currency (Convertit une expression de chaîne ou une expression numérique en expression monétaire) ;
  • CDate - Date (Convertit une expression au format chaîne de caractères ou numérique en valeur de date) ;
  • CDbl - Double (Convertit une expression au format chaîne de caractères ou numérique en valeur de type Double) ;
  • CDec - Decimal (Convertit une expression de chaîne ou une expression numérique en expression décimale) ;
  • CInt - Integer (Convertit une expression au format chaîne de caractères ou numérique en nombre entier) ;
  • CLng - Long (Convertit une expression au format chaîne de caractères ou numérique en nombre entier long) ;
  • CSng - Single (Convertit une expression au format chaîne de caractères ou numérique en valeur de type Single (simple)) ;
  • CStr - String (Convertit une expression numérique en expression au format chaîne de caractères) ;
  • CVar - Variant (Convertit une expression de chaîne ou une expression numérique en expression de type variant).


Un exemple qui transforme une chaîne de caractères (String) en type Integer pour l'utilisation dans un calcul.
Code vb : Sélectionner tout
1
2
3
4
5
6
Sub Main 
  Dim x as String 
  
  x = "1234" 
  MsgBox CInt(x) * 2 
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Les arguments Optional (optionnels) permettent de définir les paramètres transmis à une fonction comme facultatifs.
Ces arguments doivent être placés en dernière position dans la liste des paramètres.
Il est parfois utile de vérifier la présence de ces arguments optionnels pour éviter les erreurs dans la procédure : dans ce cas, utilisez la fonction IsMissing pour déterminer si des arguments facultatifs ont été fournis lors de l'appel de la procédure. La fonction renvoie True si aucune valeur correspondant à l'argument spécifié n'a été passée, sinon elle renvoie la valeur False.

Nota :
Lorsque vous utilisez la fonction IsMissing, il est préférable que les arguments Optional soient déclarés en type Variant.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Sub Test 
 maFonction( "OOo" ) 
 maFonction( "OOo" , 50 ) 
 maFonction( "OOo" , 50 , 100 ) 
 maFonction( "OOo" ,  , 100 ) 
End Sub 
  
Function maFonction( Arg1 As String , Optional Arg2 As Variant , Optional Arg3 As Variant ) As Long 
   MsgBox "Arguments manquants: " & IsMissing( Arg2 ) & " - " & IsMissing( Arg3 ) 
End Function

Mis à jour le 5 août 2013 SilkyRoad

La fonction IsNull permet d'effectuer cette vérification en renvoyant la valeur True si la variable testée (Variant ou Object) est de type Null, et la valeur False dans le cas contraire.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Test_IsNull 
  Dim vVar As Variant 
  Dim oVar As Object 
  
 '--- test variable Variant     
  MsgBox IsNull( vVar ) 'False 
  vVar = "" 
  MsgBox IsNull( vVar ) 'False 
  vVar = "x" 
  MsgBox IsNull( vVar ) 'False 
  vVar = Null 
  MsgBox IsNull( vVar )  'True 
  
  '--- test variable Object 
  MsgBox IsNull( oVar ) 'True 
  oVar = ThisComponent 
  MsgBox IsNull( oVar ) 'False 
  oVar = Nothing 
  MsgBox IsNull( oVar ) 'True 
  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Vous pouvez utiliser la fonction IsEmpty.
La fonction renvoie la valeur True si la variable contient la valeur Empty, et la valeur False dans le cas contraire.
IsEmpty fonctionne uniquement pour les variables de type Variant.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Test_IsEmpty 
  Dim vVar As Variant 
  
 '--- test variable Variant     
  MsgBox IsEmpty( vVar ) 'True 
  
  vVar = "x" 
  MsgBox IsEmpty( vVar ) 'False 
  
  vVar = "" 
  MsgBox IsEmpty( vVar ) 'False 
  
  vVar = Null 
  MsgBox IsEmpty( vVar ) 'False 
  
  vVar = Empty 
  MsgBox IsEmpty( vVar ) 'True   
End Sub

Null est différent d'Empty, qui indique qu'une variable n'a pas encore été initialisée.

Mis à jour le 26 août 2013 SilkyRoad

Vous pouvez utiliser la fonction TypeName pour récupérer le type d'information contenu dans la variable :

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Exemple_TypeName 
  Dim Cible As Variant 
  
  Msgbox TypeName( Cible ) 'Empty 
  
  Cible = ThisComponent 
  Msgbox TypeName( Cible ) 'Object 
  
  Cible = "mimi" 
  Msgbox TypeName( Cible ) 'String 
  
  Cible = 10 
  Msgbox TypeName( Cible ) 'Integer 
  
  Cible = True 
  Msgbox TypeName( Cible ) 'Boolean 
  
  Cible = 99999999 
  Msgbox TypeName( Cible ) 'Double 
  
  Cible = CDate( "26/05/2006" ) 
  Msgbox TypeName( Cible ) 'Date 
  
  Cible = 10 
  Msgbox TypeName( Cible ) 'Integer 
  
  Cible = Null 
  Msgbox TypeName( Cible ) 'Null  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique OpenOffice & LibreOffice