• 10 hours
  • Easy

Free online content available in this course.

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 1/7/13

Elles sont belles mes variables !

Log in or subscribe for free to enjoy all this course has to offer!

Ce chapitre relativement court vous permettra de vous familiariser avec les variables.

Présentation des variables

Tout d'abord, qu'est-ce qu'une variable ?

Une variable est un endroit où l'on stocke une ou plusieurs données en mémoire afin de pouvoir y accéder rapidement. Vous pouvez penser à une boîte aux lettres qui vous permet soit de mettre du courrier, soit d'en retirer, ou encore de lire le courrier sans l'enlever de la boîte aux lettres.
Par exemple, vous pouvez créer une variable pour stocker la réponse d'une question posée à l'utilisateur, ou le résultat d'une équation mathématique.

Chaque variable a son propre nom unique (comme une boîte aux lettres), qui doit commencer par le caractère [$] dollar et être formé uniquement de lettres, nombres et le caractère [_] tiret bas ou "underscore".

Et oui ! Que ce soit une commande, une valeur, du texte, une fonction, un fichier, un tableau, on peut absolument mettre ce que l'on désire dans cette boîte virtuelle ! Vous n'avez pas besoin de déclarer auparavant que la variable contiendra un entier ou une chaîne de caractères par exemples, car Autoit s'en charge lui-même.

Quelques exemples
  • $var1

  • $my_variable

  • $ce_tuto_est_vraiment_genial

Quand vous créez une variable, son nom doit être significatif. Si vous créez des centaines de variables dans un code et que vous ne savez pas ce que représente chaque variable, vous allez avoir beaucoup de mal à le comprendre. :)

Il existe des variables un peu différentes, les macros.
Une macro est une variable spéciale qui ne peut pas être modifiée par l'utilisateur. Elle contient principalement des informations renvoyées par votre système d'exploitation, et commence par le caractère @.
Voir la sous-partie Les macros pour en savoir plus.

La portée d'une variable

Il y a trois méthodes principales pour déclarer une variable : une déclaration de variable s'effectue grâce aux mots-clés Global, Dim ou Local.

La différence entre Global, Dim et Local est leur portée dans le script :

  • Global = force la création d'une variable de portée globale.

  • Dim = portée locale si la variable n'existe pas déjà globalement (dans ce cas, ré-utilise la variable globale !).

  • Local = force la création d'une variable de portée locale ou interne à une fonction.

Pour simplifier
  • Global = création d'une variable (redéfinissable) dont la valeur se retrouve partout, y compris dans les fichiers inclus (Includes).

  • Dim = création d'une variable (redéfinissable) dont la valeur se retrouve uniquement dans le script en cours (cette variable ne peut pas être récupérée dans ou par un fichier inclus).

  • Local = même chose que précédemment, mais peut aussi limiter la portée de la variable dans une fonction (dans ce cas, faire la déclaration dans la fonction).

Si vous ne saisissez pas totalement, sachez que vous utiliserez le plus souvent Global, du moins tant que vous ne saurez pas utiliser les fonctions. C'est pour ces dernières que la portée locale devient intéressante, car notre variable ne sera connue que pendant l'exécution de la fonction et n'influencera pas le reste du script, et ceci même si vous utilisez le même nom.

Déclarer une constante

A ces trois méthodes s'ajoute une quatrième, Const, qui permet de créer une variable qui ne pourra pas être redéfinie dans le script. Elle ne doit jamais être réassigné sous peine d'erreur à l'exécution. On s'en sert pour définir les paramètres du programme afin d'être certain de ne jamais les modifier.

  • Const = création d'une variable (non-redéfinissable) dont la valeur se retrouve partout, y compris dans les fichiers inclus (Includes) sauf si sa portée est limitée par l'ajout des commandes Dim ou Local juste avant.

Exemples
  • Dim$var1
    Ici on declare localement la variable $var1.

  • Dim$var1, $myvariable = 10
    Ici, on déclare la variable $var1 et la variable $myvariable tout en lui attribuant la valeur 10.

  • Const$const1 = 1
    La variable $const1 aura pour valeur 1 et tout le long du code elle ne pourra pas en changer.

  • Local Const$const2 = 1
    La variable $const2 aura une valeur fixe de 1 limitée par la portée locale.

Exemple
  • $var1 = "create and assign"
    On assigne une chaîne de caractères à la variable $var1 sans l'avoir déclarée préalablement.

Cette méthode est très souvent utilisée car c'est de loin la plus simple, mais attention tout de même, la variable n'aura pas de portée globale.

Les tableaux

Mais d'abord, c'est quoi un tableau ?

Le tableau, appelé 'Array' en anglais, est une variable qui peut avoir plusieurs dimensions.
Il peut être initialisé par les commandes Const, Global, Dim et Local tout comme une variable standard.
La différence, c'est qu'il contient plusieurs 'cases' dans lesquelles on pourra stocker des valeurs.
C'est en gros la réunion des boîtes aux lettres du quartier. Mais comme vous vous en doutez, ces boîtes aux lettres ont un lien entre elles, ici elles recevront le courrier par le même facteur.

Un Array sera défini par des lignes et des colonnes, par exemple je veux savoir ce que contient la seconde ligne de la première colonne.

Les Arrays 1D

On parle d'un tableau 1D lorsque celui-ci est initialisé avec une seule dimension (une seule colonne) :

Dim $Array[5] = [8, 4, 5, 9, 1]

Nous avons ci-dessus un tableau de cinq lignes avec une colonne.
Pour accéder ou modifier un élément de ce tableau, il suffit d'indiquer la valeur de la position de cet élément dans le tableau.

Par exemple, essayez le code ci-dessous :

Dim $Array[5] = [8, 4, 5, 9, 1]
MsgBox(0,"Tutoriel Autoit du siteduzero.com",$Array[1]) ;Affiche la valeur de la ligne 1

Il affichera la valeur '4'.

$Var = $Array[3]

Selon le tableau déclaré précédemment, ce code attribue la valeur 9 à la variable $Var.</puce>

Les Arrays 2D

On parle d'un tableau 2D lorsque celui-ci est initialisé avec plus d'une dimension, c'est à dire qu'on aura par exemple plusieurs lignes et plusieurs colonnes. Ce type d'Array ressemble donc aux tableaux tels que vous les concevez in real life.

On pourra donc utiliser le shéma suivant pour déclarer nos Arrays 2D:

Dim $Array[Nb_Ligne][Nb_Colonnes]=
[
   [Ligne1_Col1, Ligne1_Col2, ... , Ligne1_ColN],
   [Ligne2_Col1, Ligne2_Col2, ... , Ligne2_ColN],
    ... ,
   [LigneN_Col1, LigneN_Col2, ... , LigneN_ColN]
]
Exemple

Prenons un tableau classique, créé avec Excel, qui comprend le Prénom et l'argent que possèdent plusieurs personnes. Il ressemblera alors à :

Image utilisateur
; Crée un tableau de deux colonnes avec cinq lignes.
Dim $Grille[5][2]=[["PRENOM", "ARGENT"], ["Jim", 485.44], ["Louis", 160.68], ["Paul", 275.16], ["Richard", 320.00]]

; Attribue la valeur Paul à la variable $Var
$Var = $Grille[3][0]

Si on veut récupérer la cinquième ligne de la deuxième colonne (Donc l'argent que possède Richard) on va donc chercher à:

$Var = $Grille[4][1]

Ce qui affichera 320.

Tout comme une variable classique, un tableau peut être dupliqué simplement comme ceci :

$Tableau = $Grille

ou effacé comme ceci :

$Tableau = ''

On utilisera très souvent les tableaux pour stocker des valeurs multiples car le traitement en sera plus rapide et plus aisé, notamment grâce aux boucles que vous allez voir prochainement, et parce que si vous deviez créer 150 variables pour stocker vos valeurs vous seriez bien embêté.

Les macros

Autoit utilise un certain nombre de macros qui sont des variables spéciales en lecture seule, et incrémentées par défaut à Autoit. Les macros commencent par le caractère @ au lieu du classique $ et sont donc faciles à reconnaitre. Comme avec les variables constantes, vous pouvez utiliser les macros dans les expressions, mais ne pouvez leurs assigner une valeur.

Les macros pré-définies sont généralement utilisées pour fournir des informations sur le système tel que le chemin du répertoire de Windows, ou le nom de l'utilisateur en cours, l'heure, la résolution de l'écran, les retours d'erreur, etc...
La liste qui suit n'est pas complète. Pour avoir la liste complète des macros à votre dispositions, allez dans la documentation d'Autoit et cliquez sur Macro reference.

Liste non-exhaustive des macros les plus utilisées

  • @MyDocumentsDir : retourne le chemin complet du repertoire "Mes Documents" ;

  • @ComputerName : retourne le nom de l'ordinateur ;

  • @CRLF : équivaut à un retour chariot (appui sur la touche Entrée) ;

  • @DesktopDir : retourne le chemin complet du Bureau ;

  • @DesktopHeight : retourne la hauteur de votre résolution d'écran ;

  • @DesktopWidth : retourne la largeur de votre résolution d'écran ;

  • @HOUR : retourne l'heure ;

  • @HotKeyPressed : retourne la dernière touche appuyée par l'utilisateur ;

  • @ScriptDir : retourne le chemin complet du script ;

  • @ProgramFilesDir : retourne le chemin complet du répertoire "Program Files" ;

  • @OSVersion : retourne la version de votre OS ;

  • @SystemDir : retourne le chemin complet de votre répertoire système ;

  • @TempDir : retourne le chemin complet de votre répertoire temporaire.

Pour tester la puissance des macros, je vous laisse essayer ce script :

MsgBox(64,"Informations sur tous vos répertoires","Répertoire Système : " & @SystemDir & @CRLF & _
"Mes Documents : " & @MyDocumentsDir & @CRLF & _ 
"Dossier Temporaire : " & @TempDir & @CRLF & _
"Démarrage : " & @StartMenuDir & @CRLF & _
"Program Files : " & @ProgramFilesDir & @CRLF )

Vous pouvez remarquer l'utilisation de @CRLF afin de revenir à la ligne.
Cette macro sera souvent utilisée dans vos chaînes de caractères afin de revenir à la ligne.

Vous remarquerez également l'utilisation de '& _ '.
C'est une méthode utile quand vos lignes deviennent trop longues, vous pouvez alors l'utiliser pour que vos scripts soient plus lisibles.
En effet, quand une ligne devient trop longue, on préfère quelques fois la diviser en plusieurs lignes.

Pour ce faire, il suffit d'écrire '& _ ', qui veut juste dire à Autoit de continuer sa lecture une ligne en dessous, mais qu'on n'a pas terminé notre ligne.

S'il vous faut n'en retenir qu'une, ce serait @ScriptDir. En effet, à chaque fois que vous allez devoir interagir avec un fichier, vous allez très souvent utiliser cette variable. Vous souhaitez mettre une image dans votre script ? C'est encore cette macro que vous allez utiliser si votre image se situe dans le même dossier que votre script.

Bravo, vous avez avalé ce chapitre avec succès. Vous êtes déclaré apte à continuer si tout est clair dans votre tête.

Example of certificate of achievement
Example of certificate of achievement