Microsoft Office Online
Se connecter à Mon site Office Online (Qu'est-ce que c'est ?) | Se connecter

 
 
Microsoft Office Excel
Rechercher
Rechercher
 
Acheter Office
Acheter et activer Office
 
 
 
Support et commentaires
Ressources techniques
Ressources supplémentaires
Avertissement : vous affichez cette page avec un navigateur Web non pris en charge. Ce site Web fonctionne de manière optimale avec Microsoft Internet Explorer 6.0 ou version ultérieure, Firefox 1.5 ou Netscape Navigator 8.0 ou version ultérieure. En savoir plus sur les navigateurs pris en charge.

Présentation des macros personnalisées dans Excel
 
S'applique à
Microsoft Office Excel 2003
Microsoft Excel 2002

Image de la couverture du livre


Cet article a été rédigé par Curtis Frye, auteur de Microsoft Office Excel 2003 Programmation Au quotidien.

La plupart des tâches que vous effectuez dans Excel, telles que la saisie des données de ventes pour une journée donnée ou l'ajout d'une formule à une feuille de calcul (feuille de calcul : document principal utilisé dans Microsoft Excel pour traiter et stocker des données ; également appelé tableur. Une feuille de calcul est composée de cellules organisées dans des lignes et des colonnes et fait toujours partie d'un classeur.), sont des tâches uniques. D'autres, telles que la modification du format d'une plage de cellules, sont des tâches très répétitives, que vous pouvez effectuer rapidement à l'aide de certains outils Excel. En revanche, il vous arrive souvent d'effectuer une ou deux tâches fréquentes, qui vous demandent de passer par de nombreuses étapes.

Par exemple, vous pouvez vouloir mettre en surbrillance plusieurs cellules importantes d'une feuille de calcul à chaque fois que vous présentez un rapport à vos collègues. Plutôt que de vous lancer dans une longue série d'étapes manuelles, vous pouvez créer une macro ou une série d'actions enregistrées, pour que les étapes soient effectuées à votre place. Ou bien, si vous connaissez le langage de programmation Microsoft Visual Basic® pour Applications (VBA), vous pouvez écrire une macro personnalisée dans son intégralité. Quelle que soit la solution pour laquelle vous optez, après avoir créé une macro, vous pouvez l'exécuter, la modifier ou la supprimer à votre convenance.

Cet article vous présente la programmation orientée objet et Visual Basic Editor, l'environnement dans lequel vous pouvez écrire vos propres macros Excel.

Utilisation de Visual Basic Editor

Visual Basic Editor est un outil puissant qui vous permet d'étendre les performances et la polyvalence des macros au-delà de toutes les possibilités offertes par l'enregistrement seul. Pour l'ouvrir, pointez sur Macro dans le menu Outils, puis cliquez sur Visual Basic Editor. (Ou, appuyez sur Alt+F11.)

Pour ouvrir une macro spécifique, pointez sur Macro dans le menu Outils, puis cliquez sur Macros. (Ou, appuyez sur Alt+F8.) Dans la boîte de dialogue Macro, sélectionnez la macro que vous voulez modifier ou afficher, puis cliquez sur Modifier pour ouvrir Visual Basic Editor.

Programmation orientée objet dans Visual Basic Editor

Dans Visual Basic Editor, vous utilisez la programmation orientée objet pour créer vos propres programmes. Un programme n'est, en principe, rien de plus qu'un ensemble d'instructions que l'ordinateur exécute dans un ordre précis.

Dans un langage de programmation orientée objet, tous les aspects de votre code d'ordinateur reposent sur les éléments de votre environnement. Ces « éléments » sont représentés (en toute logique) en tant qu'objets et toutes les actions et données sont incorporées dans ces objets. Dans Excel, les objets peuvent être des classeurs, des feuilles de calcul, des plages de cellules et des fichiers externes.

En général, vous utilisez quatre aspects des objets pour donner vie à un programme : les propriétés, les méthodes, les événements et les collections.

Propriétés

En bref, les propriétés sont des variables décrivant un certain aspect de l'objet dans lequel elles sont incluses. Une propriété d'objet courante dans Excel est la propriété Name, contenant la valeur d'identification que vous attribuez ou qu'Excel attribue à un classeur, une feuille de calcul, une plage de cellules ou autre objet. Par exemple, si vous modifiez le nom d'une feuille de calcul (en utilisant du code VBA ou en cliquant avec le bouton droit sur l'onglet de la feuille de calcul), vous modifiez la valeur stockée dans la propriété Name.

Vous pouvez définir de nouvelles valeurs pour certaines propriétés de feuille de calcul (telles que Name) directement dans VBA. Pour modifier les autres propriétés de feuille de calcul, vous devrez peut-être enregistrer une action dans Excel (par exemple, les étapes permettant de protéger une plage de cellules) ou utiliser une méthode (comme décrite dans la section suivante).

Dans VBA, les propriétés sont signalées au sein d'un programme à l'aide de la notation par points, où le nom de l'objet est écrit en premier, puis le nom de la propriété en second et les deux éléments sont séparés par un point. Par exemple, pour modifier le nom d'une feuille de calcul, vous utilisez la propriété Worksheet.Name.

Méthodes

Une méthode est une action qu'un objet « sait » effectuer. Par exemple, vous savez probablement que la feuille de calcul affichée dans la fenêtre Excel s'appelle la feuille de calcul active. Dans le code VBA d'Excel, vous pouvez cibler la feuille de calcul que vous voulez affecter en appelant tout d'abord sa méthode Activate. Une fois la méthode Activate en cours d'exécution, la feuille de calcul à laquelle elle est associée passe devant les autres feuilles de calcul de la fenêtre Excel et devient disponible pour modification.

Comme pour les propriétés, les méthodes sont appelées à l'aide de la notation par points. Pour recalculer toutes les formules d'une feuille de calcul, par exemple, vous appelez la méthode Worksheet.Calculate.

Événements

Tout comme une propriété est un attribut quantifiable d'un objet et une méthode est une action qu'un objet sait entreprendre, un événement est une action qu'un objet « reconnaît » comme ayant eu lieu. Par exemple, Excel 2003 est au courant des événements suivants (entre autres) :

  • Une feuille de calcul est ouverte ou fermée.
  • Une feuille de calcul est activée ou désactivée.
  • Une feuille de calcul est enregistrée.
  • Un graphique est sélectionné.
  • Une touche (ou combinaison de touches) est enfoncée.
  • Des données sont entrées dans une cellule.
  • Des formules d'une feuille de calcul sont recalculées.
  • Un lien hypertexte est suivi.

Excel inclut divers gestionnaires d'événements ou routines de code, qui observent des actions particulières. Lorsque l'une de ces actions survient et que vous avez indiqué à Excel comment réagir à cet événement, Excel exécute le code de votre gestionnaire d'événements. Par exemple, si après avoir créé un classeur, vous voulez qu'Excel affiche toutes les fenêtres de classeurs en cascade, vous pouvez créer le gestionnaire d'événements suivants :

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
   Application.Windows.Arrange xlArrangeStyleCascade
End Sub

Ne vous inquiétez pas si vous n'êtes pas certain de ce que fait chaque élément de la routine du gestionnaire d'événements. Pour le moment, concentrez-vous sur la ligne centrale du code, qui indique à Excel d'organiser ses fenêtres à l'aide du style en cascade. Vous pouvez obtenir le même résultat à l'aide des commandes de menu d'Excel (menu Fenêtre, commande Réorganiser, sous-commande Cascade). Toutefois, s'il s'agit d'une action que vous voulez voir se répéter à chaque fois qu'un événement particulier survient, vous pouvez utiliser le langage VBA pour la faire se produire automatiquement et ménager vos efforts !

Collections

L'élément final de la programmation orientée objet avec lequel vous devez vous familiariser est la collection. Comme son nom l'indique, une collection est un groupe d'objets du même type, contenu dans un autre objet. Par exemple, un classeur contient une collection d'une ou plusieurs feuilles de calcul. Si vous souhaitez apporter la même modification à chaque feuille de calcul du classeur, vous pouvez parcourir chaque feuille de calcul de la collection et apporter la modification par programme.

Si vous avez déjà créé des programmes, vous avez probablement rencontré la boucle For…Next, qui vous permet de répéter un ensemble d'instructions plusieurs fois à l'aide d'une séquence semblable à la séquence suivante. (Cet exemple ajoute le chemin d'accès au répertoire du classeur actif à la section de droite du pied de page sur la première feuille d'un total de trois feuilles de calcul.)

For i = 1 to 3
   Worksheets(i).PageSetup.RightFooter = Path
Next i

Le problème de la pré-programmation (c'est-à-dire, l'attribution d'une valeur définie) de la limite supérieure de cette boucle For…Next est que vous devez modifier le code à chaque fois que vous ajoutez ou supprimez une feuille de calcul. Cela ne pose pas un réel problème si vous ne devez le faire qu'une ou deux fois, mais si vous gérez beaucoup de code, vous oublierez forcément quelques occurrences. Ensuite, vous devrez résoudre les erreurs en résultant. Pire encore, ces erreurs ne seront peut-être pas décelées jusqu'à ce que le relecteur ne s'aperçoive que les 500 premières copies imprimées de votre rapport annuel ne sont pas correctement mises en forme (sans compter que vous avez éteint votre téléphone portable pour ne pas être dérangé pendant votre moment de détente sur la plage).

Vous pourriez utiliser un peu de code pour découvrir le nombre de feuilles de calcul dans votre classeur, mais il existe une solution encore plus simple : utiliser une boucle For Each…Next à la place. Une boucle For Each…Next trouve le nombre d'objets dans une collection, tels que les feuilles de calcul dans un classeur et parcourt chaque occurrence. À l'aide de cette technique, le code précédent peut être écrit comme suit :

For Each Wksht in Worksheets
    Wksht.PageSetup.RightFooter = Path
Next Wksht
		

Plutôt que d'incrémenter la valeur d'une boucle For…Next standard, la boucle For Each…Next recherche simplement le membre suivant de la collection Worksheets et s'arrête lorsqu'il n'en trouve plus.

Visual Basic Editor et ses fenêtres

Visual Basic Editor affiche différentes informations dans diverses fenêtres. Lorsque vous commencez à écrire des macros, il est important que vous connaissiez les fenêtres suivantes : la fenêtre Explorateur de projets, la fenêtre Propriétés et la fenêtre Code.

Fenêtre Explorateur de projets

Lorsque vous ouvrez directement Visual Basic Editor, vous pouvez utiliser la fenêtre Explorateur de projets pour sélectionner la macro sur laquelle vous voulez travailler. L'Explorateur de projets présente tous les projets (groupements de code) et les macros qu'ils contiennent dans une arborescence, qui fonctionne comme l'arborescence de l'Explorateur Windows®. Les objets racines ou de base de l'arborescence représentent le classeur actuel dans lequel vous travaillez ainsi que les autres classeurs et compléments éventuellement ouverts.

Les principaux éléments utilisés par les projets VBA sont stockés individuellement dans un dossier distinct au sein de chaque projet. Ces éléments sont :

  • Les objets (décrits précédemment dans cet article)
  • Les modules, qui contiennent le code macro associé à une feuille de calcul
  • Les modules de classe, qui sont des définitions des objets définis par l'utilisateur que vous avez créés pour votre classeur
  • Les formulaires utilisateur, qui fournissent une surface visible sur laquelle vous pouvez placer des contrôles graphiques, tels que des boutons, des images et des zones de texte

Dans l'exemple suivant, le classeur en cours est identifié en tant que VBAProject. Les trois feuilles de calcul incluses dans le classeur (Feuil1, Feuil2 et Feuil3), ainsi que le classeur lui-même (ThisWorkbook), apparaissent dans le dossier Microsoft Excel Objets. Toutes les macros programmées dans VBA ou enregistrées apparaissent dans le dossier Modules. Tous les modules de classe ou formulaires utilisateur apparaissent dans un dossier Modules de classe ou Formulaires, respectivement.

Fenêtre Explorateur de projets, fenêtre Propriétés et fenêtre Code

Fenêtre Propriétés

Directement sous la fenêtre Explorateur de projets, vous trouverez la fenêtre Propriétés, utilisée pour examiner et modifier les diverses propriétés associées à l'objet sélectionné. Pour les modules, généralement, seule la propriété Name est disponible. Les feuilles de calcul présentent des propriétés supplémentaires, que vous pouvez modifier, telles que StandardWidth et DisplayPageBreaks. La plupart du temps, vous modifiez les propriétés dans la fenêtre Propriétés lorsque vous gérez des formulaires utilisateur.

Remarque  Le nom qui apparaît pour un objet dans la zone de la propriété Name de la fenêtre Propriétés n'est pas nécessairement le même que celui de l'objet correspondant dans Excel. Les deux noms peuvent sembler identiques, mais ils peuvent également différer à cause des règles d'attribution de noms par défaut utilisées par Visual Basic Editor pour les objets. (Par exemple, les noms ne doivent pas comporter d'espaces, doivent commencer par une lettre, ne peuvent pas être un mot réservé et ne doivent pas dépasser 31 caractères.) Même lorsque les noms sont différents, ils peuvent toutefois être liés en interne pour garantir la référence à l'objet approprié.

Fenêtre Code

La fenêtre Code est la plus grande fenêtre de Visual Basic Editor et elle est surmontée de deux zones de liste déroulante. Vous utilisez la zone de liste déroulante de gauche, la zone Objet, pour sélectionner un objet à gérer. Lorsque vous gérez uniquement du code, la zone affiche l'objet Général par défaut. Vous utilisez la seconde zone de liste déroulante, la zone Procédure, pour sélectionner les macros individuelles du module en cours. Comme les macros sont ajoutées et supprimées à partir de ce module, elles sont également ajoutées et supprimées à partir de la zone Procédure.

Fenêtre Code

Vous pouvez également utiliser les touches de direction Haut et Bas pour faire défiler les listes de code jusqu'à la macro de votre choix. Tandis que vous faites défiler le code, la zone Procédure est mise à jour pour refléter la macro en cours.

publicité