Les mémos

Fermer Tables

Fermer Requêtes

Fermer Formulaires

Fermer Etats

Fermer Modules

Fermer Base

Fermer Automation

Fermer Administration

Fermer Registre

Fermer String

Fermer Email CDO

Fermer Outlook

Fermer Net

Fermer Dates - Heures

Fermer Fichiers

Fermer Références

Fermer Vrac

Je débute...

Fermer La normalisation

Fermer VBA

Attention
Aucun support
par émail !

Utilisez le forum pour les questions/réponses concernant MsAccess et les codes que vous trouverez sur ce site.
Visites

   visiteurs

   visiteurs en ligne

VBA - Ou placer le code

Module général ou module de classe ?

Lorsque le débutant rencontre du code VBA, la question est parfois : "Ou dois-je placer ce code ?"
La réponse est simple :  cela dépend wink

Imaginons que vous disposé de code représentant une fonction. Cette fonction qui vous retourne le nombre de fois que la lettre "e" existe dans une chaîne de caractères.
Il est évident que vous souhaiteriez utiliser cette remarquable fonction partout et de n'importe ou dans votre base.
Il n'existe alors qu'un seul endroit digne de recevoir ce code: le module général !

Module général, c'est ou ?

Lorsque vous ouvrez une base Access 2000/2003, vous retrouvez dans la fenêtre d'Access, une fenêtre qui porte le nom de votre base.

1869_a.pngCe que l'on appelle un module général est un module de code créé via le bouton "Modules" du volet de gauche (ici coloré en orange).

Pour Access 2007, choisissez le ruban "Créer" et complètement à droite de ce ruban, le bouton Macro / Module / Module de classe via lequel vous sélectionnez Module.

Access chargera et affichera alors automatiquement l'éditeur qui vous permettra de saisir le code de votre précieuse fonction.

Le raccourci :

Il existe également un raccourci clavier qui vous permet d'ouvrir directement l'éditeur, c'est Alt + F11.

Profitons-en pour définir une propriété importante de l'éditeur.

Par le menu Outils, Options dans l'onglet Editeur, cocher la case devant la ligne Déclaration des variables obligatoire.

Cela vous évitera beaucoup d'erreurs et de longues recherches inutiles pour trouver la variable mal orthographiée. Accessoirement, cela vous poussera également à mieux structurer votre code.



1869_b.png

Dans l'image ci-dessus, la ligne Option Explicit indique que vous devez déclarer les variables avant leur utilisation. Elle n'est affichée que si vous avez bien coché l'option concernée.

Lors de la déclaration de vos variables, précisez le type et n'hésitez surtout pas à utiliser des noms de variables "parlants".

Dim strNomClient As String
Dim lngNumeroArticle As Long


sera plus parlant que N, S ou i, surtout dans les fonctions ou modules importants et vous permettra de relire facilement votre code, même après de nombreux mois ou années.

Une bonne habitude pour augmenter la lisibilité et donc diminuer les sources d'erreurs, est d'indenter le code comme montré ci-dessous.
 

1869_c.png

Cela se fait par tabulations et un automatisme de l'éditeur.

Vous pouvez également utiliser cette extension qui fonctionne aussi bien sous Windows Xp et Access 2000, que sous Windows 7 et Access 2007.

Et les modules de classe alors ?

Comme déjà dit dans l'article précédent, nous ne parlerons que des modules que l'on place directement "sous" les formulaires ou états. En fait, ce sont les différents événements que l'on trouve dans les formulaires et les états qui déclenche l'exécution du code.

Ces événements sont par exemple l'ouverture ou fermeture du formulaire; le clic sur un bouton ou une zone de texte, la mise à jour ou la sortie d'une zone de texte, etc.
En fait, il existe tellement d'événements qu'il est difficile de les lister de mémoire cool
Le code exécuté lors de l'un de ces événements prend place dans une Sub (de Sub-routine) et pour s'y retrouver, chaque Sub comporte le nom de l'événement qui conduit à l'exécution du code.

Par exemple:

  • Vous créé un bouton nommé cmd_Imprimer destiné à imprimer un état, la Sub portera alors le nom de cmd_Imprimer_Click.
  • Vous voulez agir sur la couleur d'une zone de texte "NoCode" selon la saisie, vous placerez alors le code de vérification dans la Sub de l'événement après mise à jour de la zone de texte. Cela créera la Sub nommée NoCode_AfterUpdate.

Toutes les Sub, donc tout le code VBA, concernant un formulaire se retrouvera regroupé dans un module. Ce module sera le module de classe du formulaire concerné.

 
1869_d.png

On peut encore remarquer que le code VBA ne connait plus que l'anglais.
Via les propriétés du formulaire, on cherchera à placer du code sur l'événement "Après MAJ" (après mise à jour), mais dans l'éditeur, cet événement se nommera AfterUpdate comme on peut le constater sur l'image ci-dessus.
 
Malgré que toutes les fonctions et le code VBA en général doit être saisi en anglais, on peut écrire ces mêmes fonctions dans leur version française lorsqu'on les utilise dans l'interface ou dans le générateur graphique de requêtes. Le problème est que certaines fonctions sont traduites et d'autres ne le sont pas.
Si on y ajoute le fait que leur nom d'origine en anglais est souvent plus parlant, ainsi que plus court, le choix ne devrait pas être difficile.

Il faut alors constater que l'apprentissage des noms anglais de ces fonctions simplifiera cet apprentissage. A défaut, il faudra apprendre les deux versions biggrin
 

Date de création : 12/04/2010 : 02:44
Dernière modification : 21/07/2012 : 04:23
Catégorie : VBA
Page lue 6725 fois


Imprimer l'article Imprimer l'article

Recherche



Lettre d'information
Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
Captcha
Recopier le code :
Au sujet de l'auteur
L'auteur qui fréquente (fréquentait) le forum microsoft.public.fr.access a eu le plaisir d'être nommé MVP Office-Access de janvier 2003 à décembre 2011.

Qui sont les MVP ?

Divers ;-)
Nous contacter

Haut