Access pour les débutants de A à Z

20/08/2004

Par Morsi (home page)
 


1. Introduction et Historique
2. La programmation évènementielle
3. Eléments de Visual Basic
3.1. Les objets
3.2. Les objets - les termes
3.3. Evènements, procédures et procédures évènementielles
3.4. Ecriture d'une procédure
3.5. Exemples de procédures
3.6. Modules
4. Variables
4.1. Les différents types de données
4.2. Les tableaux
4.3. Déclaration des variables
4.4. Fonctions: Boites de dialogue
5. La programmation VBA


1. Introduction et Historique


  • Années 80: apparition d'applications utilisant des interfaces graphiques et apparition de la programmation évènementielle et des langages de programmation associés. Le principe de la programmation évènementielle étant faire correspondre à un événement le déclenchement d'une séquence de code.
  • Années 90: développement des réseaux et des environnements client serveur ainsi les langages doivent permettre d'interroger une base de données distante quelle que soit sa nature.


2. La programmation évènementielle


La programmation événementielle est fondée sur les évènements, un programme évènementiel est défini par ses réactions aux différents événements qui peuvent se produire. Les évènements peuvent être :

  • Des actions de l'utilisateur:click sur un bouton de commande, écriture dans une zone de texte…
  • Des évènements système : chargement d'un formulaire, minuterie...

Le programmeur doit prévoir la procédure à exécuter en réponse à un événement donné et donc les intérêts majeurs

  • Facilité de conception d'interfaces graphiques
  • Facilité d'utilisation


3. Eléments de Visual Basic


VBA est pour Visual Basic for Applications. VBA est un langage objet, on gère des objets (une zone de texte dans un formulaire) qui ont des propriétés (la couleur de fond de la zone de texte), des méthodes (le rafraîchissement de la zone de texte) et des évènements (la mise à jour du texte).


3.1. Les objets


Un objet est la combinaison de programmes et de données qui peuvent être traitées comme une entité.Il est possible d'utiliser des objets fournis par Visual Basic, de contrôler des objets provenant d'autres applications (Word, Excel, ...), et même de créer ses propres objets.
On trouve deux types d'objets dans Access :

  • Objets Access : Formulaires, Etats, Contrôles des formulaires et des états
  • Objets d'accès aux données : Bases de données, Tables, Requêtes, ...


3.2. Les objets - les termes


  • Propriété: Une propriété est une caractéristique de l'objet
  • Méthode: Une méthode est une action qu'on peut exécuter sur l'objet

Syntaxe
Objet.propriété = valeur Objet.méthode
Exemple: Un objet Formulaire a pour propriété la largeur et comme méthode le rafraîchissement (Formulaire.requery)


3.3. Evènements, procédures et procédures évènementielles


  • Un événement est une action spécifique qui se produit sur ou avec un certain objet.
  • Le code VBA est écrit sous forme d'unités appelées procédures. Une procédure est alors une série d'instructions Visual Basic qui exécutent une opération ou calculent une valeur.
  • Une procédure événementielle est une procédure qui s'exécute en réponse à un événement initié par l'utilisateur ou par le code du programme ou bien qui est déclenché par le système.

Il existe deux types de procédure :

  • Procédure SUB (ou procédure): Elle exécute des instructions mais ne renvoie aucune valeur (Les procédures évènementielles sont des procédures SUB). La procédure commence par l'instruction Sub et finit par l'instruction End Sub
  • Procédure FUNCTION (ou fonction) : Elle exécute des instructions et renvoie une valeur. Seules les fonctions sont utilisables dans les expressions et les requêtes. Les fonctions commencent par l'instruction Function et finit par l'instruction End Function.


3.4. Ecriture d'une procédure


La création d'une procédure évènementielle est automatique à partir de la fenêtre Propriétés du contrôle.
La création d'une procédure indépendante peut se faire avec la commande Procédure du menu Insertion, ou manuellement et Chaque procédure porte un nom qui la distingue. Ce nom est constitué de caractères alphanumériques et d'underscores (pas d'espace ni de point), doit commencer par une lettre et ne pas dépasser 255 caractères.
Une procédure peut recevoir des arguments tels que des constantes, des variables ou des expressions passées par la procédure appelante, ces arguments sont mis entre parenthèse après l'instruction Sub (ou Function) et son nom. Si une procédure n'a pas d'argument, la paire de parenthèses est vide mais obligatoire.
Les arguments peuvent être obligatoires ou facultatifs, un argument facultatif doit être précédé par Optional.
Comme une procédure peut en appeler une autre, leur déclaration peut être précédée des mots clés suivants :

  • Public : la procédure est accessible par toutes les procédures du projet (par défaut)
  • Private : la procédure est accessible uniquement par les procédures du même module


3.5. Exemples de procédures


La procédure suivante permet d'ouvrir le formulaire F_MENU :

Sub PROC_OUVERTURE_FORMULAIRE() DoCmd.OpenForm ''F_MENU'' END SUB
La procédure suivante permet d'ouvrir le formulaire dont le nom est passé en paramètre

Public Sub PROC_OUVERTURE_FORMULAIRE2(Nom_Formulaire As String) DoCmd.OpenForm Nom_Formulaire End Sub
On précise entre parenthèses les arguments de la procédure avec leur type de données.

La procédure suivante permet d'ouvrir le formulaire dont le nom est passé en paramètre (facultatif) s'il est renseigné et le formulaire F_MENU s'il ne l'est pas :

Public Sub PROC_OUVERTURE_FORMULAIRE3(Nom_Formulaire As String) If Not(Nom_Formulaire) Then DoCmd.OpenForm Nom_Formulaire Else DoCmd.OpenForm ''F_MENU'' End If End Sub
On appelle une procédure avec l'instruction Call : On pourra par exemple créer une procédure pour éviter d'écrire une même série d'instructions plusieurs fois dans le cas où différents évènements ont les mêmes conséquences. Il suffira alors d'appeler la procédure dans les procédures évènementielles.

La fonction suivante renvoie le montant de la TVA du montant passé en paramètre :

Function Fonc_Montant_TVA(Montant As Double) As Double Fonc_Montant_TVA = Montant * 0.196 End Function
La seconde fonction renvoie le montant de la TVA du montant passé en paramètre, mais cette fois-ci, le taux est également passé en paramètre :

Function Fonc_Montant_TVA2(Montant As Double, Taux As Double) As Double Fonc_Montant_TVA = Montant * Taux End Function
Dans ces deux fonctions, les arguments passés en paramètre doivent être des réels double et le résultat obtenu est un réel double.

Pour utiliser les fonctions précédentes, on pourra :

  • soit stocker le résultat dans une variable

Public Sub TEST() Dim Resultat1 As Double Dim Resultat2 As Double Resultat1 = Fonc_Montant_TVA(100) Resultat2 = Fonc_Montant_TVA2(100, 0.196) MsgBox Resultat1 MsgBox Resultat2 End Sub

  • soit dans une requête, la requête calcule le montant TVA des boissons


3.6. Modules


Les procédures sont écrites dans des modules. Un module est une collection de déclarations et de procédures Visual Basic associées pour former une unité. Ils se partagent en deux catégories :

  • Les modules cachés des formulaires et états : Chaque formulaire ou état possède un module caché dans lequel le code est écrit. C'est dans ces modules cachés que se trouvent les procédures évènementielles, on peut cependant y écrire des procédures indépendantes.
  • Les modules standard accessibles de l'onglet Modules d'ACCESS. Ces modules contiennent des procédures générales qui ne sont associées à aucun autre objet et des procédures fréquemment utilisées qui peuvent être exécutées à partir de n'importe où dans votre base de données.


4. Variables


Une variable est un nom qui représente l'emplacement en mémoire d'une valeur ,elle peut être modifiée au cours de l'exécution du programme. Une constante est aussi un nom qui représente l'emplacement en mémoire d'une valeur, mais elle ne varie pas au cours du temps (l'exécution du programme).
On utilise des constantes dans le cas où une valeur est utilisée plusieurs fois dans une application (par exemple le taux de TVA ou le chemin d'accès à un répertoire pour un export, un import…), et dans le cas où elle doit être modifiée, il suffira de le faire à l'endroit de la déclaration au lieu de le faire à chaque fois qu'elle est utilisée.


4.1. Les différents types de données


Nom du type Exemple Type de valeur
Byte 12 entier de 0 à 255
Boolean true vrai ou faux (true or false)
Integer 1234 Entier de -32768 à 32767
Long 123456 Entier de -2147483648 à 2147483
Single 123.45 valeur à virgule flottante (39 chiffres significatifs)
Double 4.94E94 valeur à virgule flottante (+ de 300 chiffres significatifs)
Currency 123.45 Monétaire
Date #05/05/1977# du 1er janvier 100 au 31 décembre 9999
Object CurrentDb Référence à des objets
String Bonjour chaînes de 0 à 2 milliards de caractères
Variant Bonjour ou 1234567 tout type de valeurs numériques ou chaînes de caractères

4.2. Les tableaux


Les tableaux sont des variables contenant plusieurs valeurs du même type de données. On accède à chaque élément d'un tableau en précisant son numéro d'index (sa position dans le tableau).
Un tableau peut avoir plusieurs dimensions (tableau multi dimension) dans quel cas il faudra préciser autant de numéros d'index qu'il y a de dimensions.
A noter aussi que les tableaux doivent être préalablement déclarés.

Exemple : Déclaration d'une variable de tableau de 365 éléments.

Dim Tableau(364) as currency
La syntaxe d'affectation pour les deux premiers jours (tableau de 365 jours) est la suivante :

Tableau(0)=20 Tableau(1)=50

4.3. Déclaration des variables


Lors de la déclaration de variables (attribution de l'espace de stockage), on emploie toujours une instruction Dim

Dim nom_variable as nom_du_type
Exemple
Dim ID_INTERVENANT as Integer
Une instruction de déclaration peut être placée dans une procédure pour créer une variable de niveau procédure. La variable ne pourra être utilisée que dans la procédure, car après, le contenu de la variable sera supprimé.
Elle peut être également placée au début d'un module pour créer une variable de niveau module. Le contenu de la variable sera alors accessible de toutes les procédures du module.
Pour que le contenu soit accessible des procédures (niveau procédure) de tous les modules, il faut utiliser l'instruction Public (ou Global)


Exemple
Public ID_INTERVENANT as Integer
L'instruction Private permet de déclarer des variables privées (locales) dans les modules.


Exemple
Private ID_INTERVENANT as Integer
Lorsqu'elle est utilisée au niveau module, l'instruction Dim équivaut à l'instruction Private.
Pour déclarer une constante :

Syntaxe
(Public|Private) Const nom_variable as nom_de_type = valeur

4.4. Fonctions: Boites de dialogue



5. La programmation VBA




Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.