Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

AdministrationAnimauxArtComptabilitéDiversesDroitéducationélectronique
FilmsL'économieL'histoireL'informatiqueLa biologieLa géographieLa grammaireLa littérature
La médecineLa musiqueLa politiqueLa psychologieLa sociologieLe tourismeLes mathématiquesManagement
PersonnalitésPhysiqueRecettesSportTechnique

Automatiser des traitements avec Visual Basic pour Excel

l'informatique



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Automatiser des traitements avec Visual Basic pour Excel



QUELQUES POINTS AVANCES SUR EXCEL

Nommer des plages de cellules

A) Quel nom choisir ?

Excel permet de nommer une plage de cellules d'aprÈs un nom, plutôt que de faire systématiquement appel à son adresse.

Avant de regarder comment nommer une plage de cellules Excel, il convient de s'interroger sur la façon de nommer une cellule.

Il n'existe aucune rÈgle établie et donc aucun garde-fou pour empÊcher d'utiliser un nom absurde ou peu pratique. L'utilisateur est seul maitre de son choix.

Il est cependant vivement conseillé d'éviter d'utiliser des signes comme « éà.,;/:! » etc. Ils faussent la lecture, et se rappeler du nom d'une plage contenant des caractÈres spéciaux peut Être difficile.

De plus il est intéressant de donner un nom en rapport direct avec les données que nous manipulons. Baptiser « surface » une cellule contenant un montant en Francs n'a pas son pareil pour embrouiller l'utilisateur.

Notons tout de mÊme que certains caractÈres ne sont pas acceptés, comme l'espace. En général, on symbolise donc un espace dans le nom de la plage par un « _ ».

B) Donner un nom à une plage

Pour cela, il suffit de rentrer un nom dans la case d'adressage et de valider par la touche Entrée, et la plage de cellules sera baptisée d'aprÈs le nom saisit.


Attention, un nom ne peut Être donné qu'une seule fois ! Si nous rentrons un nom déjà utilisé, Excel nous envois directement sur la cellule en question. De plus, si la touche Entrée n'est pas utilisée pour confirmer, le renommage ne sera pas effectué.

Une cellule nommée de cette façon possÈde le solide avantage de pouvoir Être appelée depuis n'importe quelle fonction Excel par son nom. Cette référence agit comme une adresse absolue, soit dans l'exemple ci dessus, « taux_tss » est un équivalent exact de « $B$3 ».

Autre avantage, une cellule nommée, pour peu que son nom ait été conçu intelligemment, permet de mieux comprendre le but d'une formule.

Exemple :

Utilisons notre taux de TSS pour calculer le montant des taxes à partir d'une liste de prix.

Puis, calculons le prix total, TSS incluse.


PremiÈre étape : Nommer la cellule contenant le taux de 5% « taux_tss ».

Seconde étape : Mettre en place la formule faisant référence aux prix HT en plage B6:B11.

TroisiÈme étape : Mettre en place la formule calculant le prix total.

Nous obtenons le tableau suivant :


Bilan :

L'étirement des formules de calcul de montant de la taxe a été facilité par le fait que l'utilisation d'une cellule nommée soit considérée comme une adresse absolue.

La lisibilité de la formule est bien meilleure.

Au premier coup d'oeil, on comprend qu'on manipule une valeur monétaire, et qu'on essaye de calculer un montant de taxe (pratique en cas de reprise d'un travail existant).

B) Nommer une plage de plusieurs cellules

Nommer une plage de plusieurs cellules implique le mÊme procédé que nommer une seule cellule, puisque pour Excel une plage contenant une ou plusieurs cellules est synonyme.

Les avantages sont les mÊmes que dans le nommage d'une cellule unique.

Afin de différencier les plages de cellules uniques et les plages de cellules multiples, il peut Être intéressant de convenir à l'avance d'une façon différentes de les nommer.

Par exemple en préfixant tous les noms de plages de cellules multiples par « pl_ ».

Ceci est une proposition et en aucun cas une obligation. Mais une telle gymnastique est une bonne façon de commencer à organiser ses données si on pense utiliser de nombreuses plages nommées.

Exemple : Nommons notre plage contenant les prix HT et calculons la somme de ces prix.


La formule SOMME à utiliser est rendue encore plus simple par l'utilisation de notre plage nommée.


De plus, la formule devient pour ainsi dire du français. Au premier coup d'oeil, on comprend intuitivement que SOMME(pl_prix_ht) est Une somme de prix hors taxe !

La formule SOMME(B6:B11), rigoureusement identique du point de vue d'Excel, ne permet pas une telle lecture.

Importer des données externes dans Excel à partir d'un fichier texte

Excel permet d'importer des données extérieures et de les ordonner correctement en fonction des lignes et colonnes, si la source est pré-disposée pour permettre ce genre de manipulation. En général c'est le cas, pour peu que les personnes ayant préparé le fichier soient prévenues que l'utilisation ultérieure se fera à partir d'Excel.

On appelle formatage le découpage du fichier source. Excel est capable d'en reconnaitre et d'en utiliser plusieurs. En général un formatage simple et efficace est un formatage oÙ les données sont séparées par des tabulations, ou bien oÙ les données d'un certain type sont rigoureusement ordonnées en colonne.

Reprenons notre exemple vu ci-dessus. Faisons un copier coller de notre tableau (sans les sommes) directement dans un fichier texte créé pour l'occasion.


Nous obtenons un fichier prix.txt ressemblant à cela aprÈs le collage :


Nous observons que les colonnes ne sont pas toutes correctement respectées. Les données de chaque colonne initiale sous Excel sont en effet séparées par une tabulation. Certaines données courtes sont donc décalées par rapport aux autres. Celles qui se ressemblent le plus au niveau longueur restent bien ordonnées.

Retournons maintenant dans Excel et positionnons-nous dans un nouvel onglet. Le menu Données/Données Externes/Importer des données permet de demander à Excel de récupérer les données contenues dans notre fichier texte.


La fenÊtre ouverte propose des types préétablis de liens vers des bases de données et autres, qui ne nous intéressent pas dans le cadre d'un import de données simple. Il permet par contre également de parcourir le réseau afin de trouver le fichier source que l'on souhaite importer.


Ne pas oublier de préciser le type de fichier (*.txt) et son nom.

La fenÊtre suivante propose un aperçu de ce qu'Excel a pu trouver dans le fichier ciblé.


Excel a déjà plus que maché le travail en déterminant que nos données sont de type Délimité, ce qui sous entends délimité par un caractÈre particulier (tabulation, point-virgule).

Ce choix nous convient, mais il est possible de demander un autre moyen de traitement le cas échéant. On peut également spécifier la ligne à partir de laquelle importer nos données. Pour le moment satisfaisons-nous de ceci et validons cette page en cliquant sur Suivant.

A) import pour les fichiers délimités


Excel ayant reconnu un fichier délimité, il propose par défaut la tabulation, qu'il pense avoir identifié comme notre délimiteur. Notons au passage qu'on peut utiliser des données délimitées par d'autres symboles que la tabulation, et mÊme les indiquer nous mÊme si ils ne font pas partie de la liste.

La derniÈre étape permet de choisir le type de format colonne par colonne. Excel propose comme indiqué de présenter les nombres sous formes de nombres, les dates en dates et le reste en caractÈres.


Cette derniÈre étape de préparation à l'import terminé, Excel retourne au classeur ouvert et propose d'insérer les données dans celui-ci dans n'importe quel onglet existant ou d'en créer un nouveau.


Nos données sont rapatriées à bon port.


Notez qu'une sélection de tout le contenu du fichier texte et un simple copié-coller dans Excel suffisait pour reproduire exactement la mÊme manipulation. Excel reconnait en effet automatiquement les tabulations dans les données externes et considÈre automatiquement chacune d'elles comme un changement de colonnes.

B) Import pour les fichiers à largeur fixe

Supposons maintenant que nous avons affaire à un fichier contenant non plus des données séparées par un caractÈre précis, mais simplement par des espaces de sorte que chaque colonne soit rigoureusement alignée.


A nouveau, Excel reconnait ce type de formatage, et propose donc dans la premiÈre étape de traiter un fichier à largeur fixe.


L'étape 2 diffÈre du traitement de fichiers délimités. Excel propose à nouveau de façon spontanée un traitement aussi adapté que possible aux données, mais ce type de fichier demande souvent plus d'intervention de la part de l'utilisateur.


Excel indique la façon dont il va séparer les données (et donc les colonnes) par une flÈche verticale.

A l'aide d'un glisser-déposer, il est possible de changer la position des flÈches. Un simple clic gauche dans une zone vide de cellules permet de créer de nouvelles séparations. Un double-clique sur une flÈche existante permet de la supprimer.

Une rÈgle graduée au dessus de la présentation permet de représenter facilement les espacements.

Les étapes suivantes sont similaires au traitement des formats de colonnes pour l'import des fichiers délimités.

LES MACROS DANS EXCEL

Définir une macro

Une macro est un petit programme dans lequel on emmagasine des instructions Excel pour les exécuter sur commande.

Ex : Sélectionner une cellule, changer la police d'une plage, saisir des données dans une cellule, etc.

Lorsque qu'elle est appelée, une macro exécute les instructions qu'on lui a indiquées dans l'ordre oÙ elles ont été enregistrées.

Ex : Sélectionner une cellule, y saisir une valeur numérique puis afficher le tout en gras.

Une macro peut-Être appelée grace à un bouton, un menu, une autre macro, etc.

Le but des macros est, en un seul appel, de réaliser plusieurs actions

Qui sont réalisées souvent.

Qui nécessitent plusieurs clics.

Il est inutile de créer une macro pour exécuter des actions qui ne répondent pas à ces critÈres.

2. Créer une macro avec l'enregistreur

Excel permet de créer une macro simplement, par l'intermédiaire du mode graphique.

Le principe : On met en marche l'enregistreur de macros et on effectue les taches qu'on veut que la macro enregistre. L'enregistreur les met en mémoire dans la macro au fur et à mesure. Quand on a fini, on arrÊte l'enregistreur.

Ce genre de macro réalisées avec l'enregistreur permet de répéter des actions simples et ainsi d'automatiser des taches pénibles et chronophages.

A) Préparer le terrain : Afficher les barres d'outils utiles

Afficher la barre d'outils Visual Basique via le menu Affichage/ Barres d'outil/VB.


Cette barre se compose des boutons suivants :

- Exécuter une macro.

- Enregistrer une macro.

- AccÈs au menu sécurité (pour autoriser l'exécution de nos macros).

- Visual Basique éditor (pour voir oÙ et comment son enregistrées les instructions dans une macro).

- Boite à outils contrôle : Affiche une barre d'outils réunissant des outils parfois utilisés en parallÈle de la création de macros.

- Mode création : démarre ou interrompt le mode création.

- Microsoft Script Editor : Pour développer des applications liées au Web.

B) Préparer le terrain : Les autres accÈs

Les mÊmes fonctionnalités sont disponibles via le menu Outils/Macro.


C) Initialisation de l'enregistrement

Lancer l'enregistreur de macro en appuyant sur le bouton correspondant de la barre d'outils des macros.

La fenÊtre de l'enregistreur s'ouvre, comprenant :

- Une zone permettant de donner un nom à notre nouvelle macro.

- Une zone facultative permettant de décider d'un raccourcis pour son déclenchement.

- Un menu permettant de préciser oÙ enregistrer notre macro.

- Une zone facultative oÙ saisir une description de la macro.


Par défaut, la macro se baptise Macro1, ou suivi du numéro disponible suivant si une ou plusieurs macros existent déjà.

Il est possible d'enregistrer la macro dans le Classeur de macros personnelles, auquel cas la macro sera utilisable dans tous les classeurs Excel que l'utilisateur ouvrira dorénavant. C'est une sorte de super-classeur permettant de stocker une macro utilisée trÈs fréquemment et pour tous types de travaux Excel.


Une fois les zones renseignées et les choix validés, l'enregistreur est actif : A partir de maintenant et jusqu'à l'arrÊt de l'enregistreur, toutes les manipulations effectuées sur le classeur Excel seront gardées en mémoire dans Macro1.

Notez l'apparition d'un petit assistant comprenant deux boutons :


- Le bouton arrÊt de l'enregistreur, similaire à celui de la barre d'outils des macros.

- Un bouton permettant de passer du mode Références Relatives ou Absolues.

C) Enregistrement des actions

Afin de tester l'enregistrement de ma macro, effectuer une action quelconque telle que par exemple :

- Sélectionner une cellule.

- Écrire quelque chose dans la cellule sélectionnée.

- Changer la couleur de fond d'une cellule.

- Mettre le contenu d'une cellule en gras.

-

AprÈs avoir réalisé cette simple action, cliquer sur le bouton de la barre d'outils des macros interrompant l'enregistrement.

Bien que rien ne permette de le voir à l'écran sans accéder au menu macro, nous avons bien mis en mémoire une ou plusieurs actions, qu'Excel nous permettra de ressortir à volonté.

Pour le moment, nos actions enregistrées ne sont disponibles qu'à partir du menu des macros. Cliquer sur le bouton Exécuter une macro de notre barre d'outils nous permet de rappeler notre macro en la sélectionnant et en appuyant sur le bouton Exécuter.

L'action ou les actions que nous avions mis en mémoire dans la macro sont exécutées à nouveau. Elles le seront à chaque fois que nous les appellerons.

Pour plus de rapidité dans le lancement, cliquer à nouveau sur le bouton Exécuter une macro et sur Options. Nous avons la possibilité de donner un raccourci à notre macro, afin de pouvoir l'exécuter rapidement au clavier. Le raccourcis qui va Être donné va remplacer celui qui existe éventuellement déjà. L'utilisation du raccourci CTRL+L, qui est disponible, est conseillé pour ne pas risquer de mauvaise surprise.

Répéter l'opération en enregistrant une macro avec plus d'instructions permet de se faire une idée des possibilités de manipulations.

Exemple de macro à enregistrer :

- Début de l'enregistrement.

- Macro crée avec le raccourcis CTRL+L et appelée ma_macro_test.

- Sélection de la cellule B10.

- Écriture du mot « test » dans la cellule et validation par la touche entrée.

- Sélection de la cellule d'en dessous via les flÈches du clavier.

- Mise en gras de la cellule.

- Écriture du mot « miaou » dans la cellule et validation par la touche entrée.

- Fin de l'enregistrement.

D) Déclenchement pratique de nos macro

Il est possible de déclencher notre macro via le menu Outils/macro/Lecture, et ce autant de fois que désiré. Cependant, le principe étant de faire des macros uniquement pour des enchainements d'opérations utilisés réguliÈrement, il est nettement plus pratique de trouver un autre moyen de déclenchement, plus rapide et plus clair.

Pour cela nous disposons de trois moyens :

Il est possible de créer sur la feuille de calcul elle-mÊme un bouton déclencheur. La barre d'outils Formulaires nous donne accÈs à la création d'un tel bouton.


Créer un bouton spécial pour notre macro et le rendre disponible via à une barre d'outils. Pour cela, simplement aller chercher le menu Affichage/Barres d'outils/Personnaliser.

Le menu auquel nous accédons permet de modifier une barre d'outils existante ou 'un créer une nouvelle. Optons pour la seconde option et fabriquons-nous une barre d'outil uniquement réservés à nos tests et manipulations.

Entrez simplement un nom pour la nouvelle barre. Cela fait, la barre est traitée comme n'importe quelle barre déjà existante et disponible via les menus correspondants.

Nous constatons que :

- la barre nouvellement crée est ajoutée dans la liste des barres accessibles via le menu personnalisation que nous avons ouvert.

- La barre s'ouvre à coté de notre menu. Elle est vide pour le moment.


Occupons-nous maintenant de remplir cette nouvelle barre grace au second onglet Commandes.


Comme indiqué dans la boite de dialogue « Pour ajouter une commande à une barre d'outils : sélectionnez une Catégorie puis une Commande et glissez cette derniÈre hors de la boite de dialogue vers la barre d'outils. »

Nous obtenons une barre d'outils dotée d'un nouvel icône. Un simple clic gauche permet d'ouvrir le menu d'affectation d'une macro. Un clic droit et l'option Affecter une macro permet la mÊme modification.


Une sélection simple de notre macro permet de lier la lier à notre nouveau bouton.

Dorénavant, un simple clic sur notre bouton permettra de lancer la macro.

Il est enfin possible de rajouter un lancement de macro depuis un menu existant ou d'en créer un pour l'occasion. Pour cela, reprendre la création d'une nouvelle barre mais sélectionner cette fois l'option « nouveau menu » de la fenÊtre des Catégories dans l'onglet Commandes.


Un glisser-déposer sur la barre du menu en haut permet de créer notre menu.


Tant que la fenÊtre de personnalisation des barre d'outils est ouverte, nous pouvons répéter cette opération. En sélectionnant « Macro » dans l'onglet Commandes et en le déposant dans le menu encore vierge, nous pouvons rajouter indéfiniment des objets dans le menu.

Un simple clic droit une fois le menu enrichi permet de lier une macro aux choix de ce dernier, d'y changer le nom, de supprimer l'option


Si la fenÊtre de personnalisation des barres de menu est fermée, un clic gauche sur une option de menu non encore affectée permettra d'y ouvrir un menu pour lui dédier une macro.

Notez qu'il est possible d'ajouter un menu à un menu, créant ainsi un sous-menu, modifiable comme ci-dessus.

Excel est par défaut paramétré pour ne lire que les macros certifiées par Microsoft. Afin qu'Excel accepte systématiquement d'utiliser vos macros, il faut changer le degré de sécurité du logiciel via le menu Outils/Macros/Sécurité.


Le niveau de sécurité faible permettra l'exécution de toutes les macros sans distinction d'origine.

L'ENVIRONNEMENT VISUAL BASIQUE

1. Étudier les macros en code procédural

A) Ouverture de Visual Basic Editor

Lors de la création des macros, on a vu qu'Excel garde en mémoire les actions saisies par l'utilisateur.

OÙ et comment ces successions de commandes sont-elles stockées ?

Excel fait appel à un logiciel parallÈle appelé Visual Basic Editor (éditeur VB) pour gérer le contenu de ses macros.

Pour l'activer, cliquer sur le bouton correspondant de la barre d'outils des macros. Le nouveau logiciel s'ouvre sur une nouvelle application composée de deux fenÊtres.



L'éditeur VB nous propose un rapide tour d'horizon de ce qu'il parvient pour le moment à lire de notre travail. Il présente notamment deux choses : Les Projets et les Modules.

Un projet est l'image pour le VBA du classeur Excel. Chaque classeur possÈde son projet. Il regroupe tous les éléments de VB qui dépendent de mon classeur Excel.

Un module est un élément du projet VB. C'est un petit paquet de code, contenant une ou plusieurs macros. L'intérÊt d'avoir plusieurs modules est de se garder la possibilité de les exporter vers d'autres classeurs indépendamment les uns des autres si besoin.

Le premiÈre fenÊtre en haut à gauche est intitulée VBA Project. Elle présente, une fois les arborescences dépliée, les classeurs actuellement ouverts avec leurs onglets respectifs et quelques éléments propres au VBA Project :

- Le classeur EUROTOOL, qui est propre au fonctionnement d'Excel, auquel nous n'avons pas accÈs.

- Un projet par classeur Excel ouvert.

- Les Modules des classeurs que nous avons créés et qui sont actuellement ouverts.


La seconde fenÊtre est la fenÊtre des propriétés. Elle permet de donner des informations sur les objets sélectionnés dans la fenÊtre des projets.

Exemple : Sélection de la feuille 1 de notre classeur Excel :


B) AccÈs au code via Visual Basic Editor

Nous allons maintenant étudier comment Excel a stocké les informations concernant notre macro. Pour cela, double cliquer sur le Module relié à notre classeur dans la fenÊtre des projets. Une troisiÈme fenÊtre intitulée nom_classeur.xls – Module 1 (code) doit s'ouvrir.

Cette fenÊtre permet de visualiser du code Visual Basique, c'est à dire l'écriture permettant à Excel de transcrire les actions de notre macro dans un langage compréhensible. Ce texte est appelé le code de la macro. On l'appelle également script.

Toutes les macros sont ainsi enregistrées dans un module de code. L’enregistreur de macro a créé et inséré le module de code MODULE1 qui contient la macro dÈs l'enregistrement de celle-ci. Un module de code peut contenir plusieurs macros. On peut créer pour un projet autant de modules qu’on le désire.

C) Lire et comprendre le concept de code en VB et sa syntaxe

Comme on l'a vu plus haut, chaque macro développée en VB est un ensemble d'instructions écrites en Visual Basique.

Une liste d'instruction se lit de haut en bas.

Chaque instruction est résolue entiÈrement avant de passer à la suivante.

Les commentaires sont ignorés lors de l'exécution. Ils ne sont là que pour permettre au programmeur des petites notes visant à améliorer la lisibilité. Il sont précédés d'une ' ou du mot clé rem.

En VB, on a l'habitude de mettre une instruction par ligne, pour améliorer la lisibilité. Éventuellement, une instruction trop longue pour rester lisible sur une seule ligne sera écrite en plusieurs lignes. Chaque fin de ligne sera alors signifiée par un _ précédé d'un espace. Il convient de considérer cela comme une mise à la ligne purement syntaxique, pour une lecture plus agréable, et n'a aucune conséquence sur le code.

Un retrait (tabulation) est effectuée pour séparer les groupes d'instructions afin d'améliorer la lecture.

Les noms donnés par l'utilisateur respectent les rÈgles suivantes :

- Le premier caractÈre est une lettre.

- Les minuscules et majuscules ne sont pas différenciées, bien qu'on se serve généralement d'une majuscule pour signifier un nouveau mot dans une chaine de caractÈre dépourvue d'espacements.

- Ne pas utiliser les mots clés réservés au VB.

- Ne pas utiliser de points, espaces, de !, de $, de # et de @.

- Un nom ne peut dépasser 255 caractÈres.

- Ne pas utiliser de mot ressemblant à une référence de cellule

- Ne pas nommer de façon ressemblante deux éléments n'ayant rien en commun.

Les données notées entre [] sont facultatives.

Les données entrés entre <> sont à remplacer par les données en question.

D) L'aide à la saisie

L'éditeur VB reconnait les mots clés saisis par l'utilisateur. Il donne spontanément des couleurs particuliÈres au code, permettant une meilleure lisibilité.

Bleu pour les mots clés.

Vert pour les commentaires.

Rouge pour les lignes en erreurs de syntaxe.

Au fur et à mesure de la frappe d'une fonction, il propose de l'aide à la programmation en affichant sous la ligne un encadré jaune indiquant les arguments qu'une fonction peut recevoir, ainsi que leur type.


E) L'aide en VBA

La touche F1 aprÈs avoir placé le curseur sur un élément de VBA permet d'obtenir de l'aide sur cet élément. La touche F1 va donc devenir votre meilleure amie pendant toute la durée de vos premiers essais en programmation VBA, à chaque fois que vous aurez besoin de manipuler un élément que vous ne maitriserez pas encore.

L'aide se présente sous la forme d'une description de l'élément et de sa fonction, suivi des précisions sur la syntaxe. Un exemple d'utilisation conclue l'aide sur chaque élément.

PREMIERS PAS DANS LA PROGRAMMATION EN VBA

1. Les variables

En informatique, une variable est une donnée qu'on demande au programme de mémoriser pour la réutiliser ultérieurement.

ConcrÈtement, c'est une demande de mise à disposition d'une petite quantité de mémoire dans l'ordinateur, dont on souhaite là mise à disposition et que l'on baptise pour la retrouver facilement.

Une variable est donc caractérisée par trois choses : Son Nom, son Type et son Contenu.

Par convention, les Noms des variables sont exempt d'espaces et de caractÈres accentués. Souvent on utilise une majuscule en début de mot.

Voici ci-dessous la liste des Types de variables en VBA.

Les valeurs chiffrées :

Byte (1 octet) Contient de 0 à 255

Integer (entier) Contient de -32 768 à 32 767

Long (entier long)

Single (réel) Contient de -3,4E38 à 1,4E-45

Double (réel double) +/- 1000 Milliards.

Decimal Jusqu'à 28 chiffres aprÈs la virgule.

String (chaine de caractÈres)

Boolean (booléen) True ou False.

Date (Dates et heures)

Variant (tous types)

Object (objet) Le type de l'objet est directement utilisable.

2. Comment déclarer une variable

Pour créer une variable, il faut au préalable la déclarer, c'est à dire la créer en précisant son nom. Les déclarations de variable sont en principe regroupées en début de bloc d'instruction, pour plus de lisibilité.

Il y a deux façons de déclarer une variable en VBA. La déclaration peut Être implicite ou explicite.

Une déclaration implicite se fait à tout moment d'un bloc d'instructions. On se contente de donner un nom à une variable et d'y stocker un contenu. On ne précise pas le type de variable, qui est alors considéré automatiquement comme Variant. L'inconvénient est que ce type de variable occupe beaucoup de mémoire et est à mÊme de ralentir l'exécution du programme. C'est donc à éviter autant que possible.

Une déclaration explicite signifie qu'on précise le type de la variable utilisée et qu'on la présente sous une forme codifiée en début de programme.

Il existe plusieurs mots clés pour indiquer que l'on va déclarer une variable. Leur différence se situe principalement dans la destination que l'on souhaite donner à la variable.

Dim permet de déclarer une variable qui sera utilisable au niveau du bloc d'instruction oÙ la déclaration est faite. Elle peut donc Être accessible par une partie du module ou par le module entier.

Private permet de déclarer une variable qui sera disponible pour tout le module oÙ la déclaration est faite.

Public permet de déclarer un variable utilisable dans tous les modules de tous les projets Excel ouverts.

Static permet de déclarer une variable qui gardera sa valeur pendant son bloc d'utilisation.

As est utilisé juste avant l'indication du type de variable, quelle que soit le mot clé utilisé pour définir l'accÈs à la variable.

Exemples :

Nom = 'Quentin' déclare une variable de type Variant appelée Nom.

MaSomme = 12000 déclare une variable de type Variant appelée MaSomme.

Dim Total As Integer déclare une variable appelée Total qui sera un entier

Dim Adresse As String déclare une chaine de caractÈres appelée Adresse.

Private Montant_1 As Double déclare un nombre réel appelé Montant.

Des raccourcis permettent de faire des déclarations de variables plus rapidement. On peut rajouter un suffixe pour demander un type de variable

% Pour une variable de type Integer

& Pour une variable de type Long

! Pour une variable de type Single

# Pour une variable de type Double

@ Pour une variable de type Curency

$ Pour une variable de type String

Exemples :

Dim nom$ Déclare une variable Nom de type String.

Dime SommeDue@ Déclare une variable SommeDue de type Currency.

L'affectation d'une valeur à une Variable peut se faire lors de la déclaration de la variable ou à n'importe quel moment du programme.

Exemples :

Dim Total As Integer = 50000

Private Montant As Single = 28,54

Nom = 'Quentin'

Montant = 28,53

3. Les Constantes

Une constante n'est ni plus ni moins qu'une variable dont la valeur ne changera pas tout au long du programme.

Sa déclaration se fait avec le mot clé Const. Elle possÈde un type tout comme les variables. On peut rendre une constante disponible pour tous les modules ouverts grace à l'instruction Public Const.

Exemple : Const Pi As Single = 3,14

4. Les tableaux

Un tableau est une variable particuliÈre, possédant plusieurs valeurs.

Il sagit d'un tableau comme celui qu'on pourrait écrire sur un papier : avec des titres de cases et une valeur à saisir pour chacune d'elles.

Exemple : On souhaite faire un tableau contenant les jours de chaque mois du premier trimestre.

La déclaration correspondante est :

Trimestre = Array('Janvier', 'Fevrier', 'Mars', 'Avril')

On dispose ainsi d'un tableau avec quatre entrées, que l'on peut remplir avec les valeurs que l'on souhaite.

Attention, un tableau commence à la case 0 !

La restitution des données se fait sous la forme suivante :

<nom du tableau>(<numéro de la case souhaitée>)

Exemple :

Avec l'exemple ci-dessus, Trimestre(2) renvois la valeur 'Mars')
QUELQUES INSTRUCTIONS DU LANGAGE VBA

1. Quelques instructions de base

Voici un petit lexique des instructions de notre macro en langage Visual Basique. Vous n'avez pas à les apprendre par coeur bien sur, il est plus sympathique de piocher dedans quand vous en aurez besoin. Leur utilisation vous fera les mémoriser au fur et à mesure.

Range('adresse de la plage').Select : permet de sélectionner une plage.

Exemples :

- Range('B10').Select

- Range('B10:B15').Select

ActiveCell.FormulaR1C1 = 'test' : permet de rentrer la valeur test dans une cellule.

Exemples :

- ActiveCell.FormulaR1C1 = 'coucou'

- ActiveCell.FormulaR1C1 = '=SOMME(A1:A8)'

Range('A4').Value = 'test' : est un équivalent.

Range('A4') = 'test' : également.

Selection.Font.Bold = True/False : permet d'affecter à la sélection actuelle une police d'écriture en gras.

Exemples :

- Selection.Font.Bold = True

- Selection.Font.Bold = False

Selection.Interior.ColorIndex : permet de changer la couleur de fond de la cellule sélectionnée.

Exemples :

- Selection.Interior.ColorIndex = 3 (change la couleur du fond en rouge)

La bonne traduction de ces instructions nous permettent de comprendre la démarche de notre bloc d'instructions pas à pas.

Donner plusieurs instruction à un seul objet (WITH)

Pour donner donner plusieurs instructions à un seul objet de code, il est possible de mettre toutes les instructions à l'intérieur d'un bloc comportant l'instruction With.

Étudions le bloc d'instructions suivant :

Sub Test_Titre ()

With Range ('A1')

.Font.Bold = True

.Interior.ColorIndex = 3

End With

End Sub

L'instruction With permet de traiter plusieurs caractéristiques d'un objet, sans avoir besoin de le nommer à chaque ligne. Son nom est sous entendu avant chaque commande. On aurait pu écrire :

Sub Test_Titre ()

Range ('A1').Font.Bold = True

Range ('A1').Interior.ColorIndex = 3

End Sub

Dans cet exemple, l'économie de lignes et la clarification du code n'est pas frappante, mais dans un bloc conséquent, cette syntaxe est pratique et évite bien des erreurs.

Oui mais et Si (IF)

L'instruction Si (If) permet d'exécuter des instructions en fonction du résultat d'une condition. Elle se termine par un End If.

On l'utilise en posant notre condition, suivi d'un bloc d'instruction qui sera effectué si la condition est réalisée.

On sépare la condition du bloc d'instruction à réaliser par le mot clé Then, qui va systématiquement de paire avec un If.

Nous aurons donc la syntaxe If Then End If.

Prenons un exemple de code l'utilisant. Ces instructions vérifie si la cellule A1 est vide. Si tel est le cas, le contenu de la cellule A1 est mis en gras et son fond est coloré en rouge.

Sub Test_Vide()

If IsEmpty(Range('A1')) Then

Range('A1').Interior.ColorIndex = 3

End If

End Sub

Si la cellule est vide, la couleur de fond est établie à Rouge (code 3).

Nous pouvons développer un peu avec la structure If Then Else End If. Cela permet de donner une condition et deux blocs d'instruction. L'un à exécuter si la condition est vérifiée, l'autre si ce n'est pas le cas. On aura donc obligatoirement l'un des deux blocs exécuté.

Reprenons notre exemple et complétons le.

Sub Test_Titre()

If Not IsEmpty(Range('A1')) Then

Range('A1').Interior.ColorIndex = 3

Else

Range('A1').Interior.ColorIndex = 4

End If

End Sub

Si la cellule est vide, la couleur de fond est établie à Rouge (code 3), sinon elle passe à Vert (code 4).

Et au cas oÙ (SELECT CASE)

Cette instruction permet d'effectuer un bloc d'instruction spécifié en fonction de la valeur d'une expression. Sa syntaxe utilise le mot clé Select Case, suivi de l'expression à tester. Plusieurs variantes des tests d'expressions sont possibles :

- Indiquer une valeur précise.

- Indiquer plusieurs valeurs.

- Indiquer une plage de valeurs à suivre.

- Indiquer une formule générale de supériorité ou infériorité.

- Indiquer un cas autre (Else).

Select Case Range('A1')

Case 1

Range('A2').Value = 'cas 1'

Case 2, 3

Range('A2'). Value = 'cas 2'

Case 4 to 10

Range('A2'). Value = 'cas 3'

Case Is >= 11

Range('A2'). Value = 'cas 4'

End Select

On aurait également pu mettre en dernier :

Case Else

Range('A2'). Value = 'cas 4'

Les structures de boucles

Les boucles permettent d'effectuer un traitement répétitif de plusieurs façons.

Il en existe plusieurs types, qui ont toutes leur intérÊt propre. Elles abordent toutes le mÊme problÈme par un biais différent afin de répondre aux différents cas rencontrés en programmation.

A) La boucle Do While :

Exécute un bloc d'instruction un nombre de fois indéterminé.

Il en existe deux variantes :

Do While <Condition>

<instructions>

Loop

Cette version ne commence à exécuter les instructions que si la condition renvoie True, et boucle sur elle mÊme le nombre de fois indiqué.

Do

<instructions>

Loop While <Condition>

Cette version exécute une premiÈre fois les instructions, puis teste si la condition renvoie True pour recommencer le nombre de fois indiqué.

Exemple d'une boucle Loop :

Sub Saisie_nombre()

Dim Reponse

Do

Reponse = InputBox('Entrez un nombre > 100')

Loop While (Reponse <= 100)

End Sub

Ce bloc de code demande à l'utilisateur de saisir un chiffre. Tant que celui ci est inférieur à 100, la boucle recommence.

On peut quitter la boucle en cours de traitement avec la commande Exit Do. Cela peut se révéler intéressant par exemple dans le cas d'une saisie par l'utilisateur d'une valeur impossible à traiter.

Exemple d'une boucle Loop interrompue :

Sub Saisie_nombre()

Dim Reponse

Do

Reponse = InputBox('Entrez un nombre > 100')

If Not IsNumeric(Reponse) Exit Do

Loop While ( Reponse <= 100)

End Sub

B) La boucle For Next

Exécute une boucle un nombre de fois déterminé par l'utilisateur. Pour cela, l'utilisateur doit indiquer une variable qui servira de compteur. Le compteur est par défaut augmenté automatiquement de 1 à chaque passage de la boucle (via l'instruction Next).

For <compteur> = <valeur de départ> To <valeur de fin>

<Instructions>

Next

Exemple d'une boucle For :

Sub Affiche_Couleurs()

Dim i As Integer

For i = 1 to 56

MsgBox 'voici la couleur correspondant au code '&i

Range('A1').Interior.ColorIndex = i

Next i

End Sub

La boucle est initialisée avec un entier comme compteur. Il commence à la valeur 1 et bouclera un certain nombre de fois avant de s'arrÊter à 56. Chaque passage le fait augmenter de 1 automatiquement.

Il est possible de préciser un changement de pas du compteur différent de 1 à chaque boucle. Pour cela il faut completer la syntaxe avec l'option Step.

Exemple d'une boucle For avec un pas différent de 1:

Sub Affiche_Couleurs()

Dim i As Integer

For i = 1 to 56 step 10

MsgBox 'voici la couleur correspondant au code '&i

Range('A1').Interior.ColorIndex = i

Next i

End Sub

On peut quitter la boucle en cours de traitement avec la commande Exit For.

C) La boucle For Each Next :

Il est possible de signaler qu'on souhaite parcourir une série d'objets du mÊme type, en effectuant pour chacun d'eux le mÊme traitement. Cela évite de traiter chaque objet l'un aprÈs l'autre en un travail répétitif. Pour cela, on utilise la commande For Each (pour chaque).

Sa syntaxe est la suivante :

For Each <élément> In <Groupe>

<Instructions>

Next <élément>

Exemple : Changeons la couleur de fond d'une plage de cellules en fonction de la valeur de chaque cellule la constituant.

Sub Couleurs_Cellule()

Dim ZoneAModifier As Range

Dim Cellule As Range

Set ZoneAModifier = Range ('A1:B10')

For Each Cellule In ZoneAModifier

Select Case Cellule

Case Is < 1000

Cellule. Interior.ColorIndex = 1

Case Is < 5000

Cellule. Interior.ColorIndex = 2

Case Is < 10000

Cellule. Interior.ColorIndex =

Case Is < 20000

Cellule. Interior.ColorIndex = 4

Case Else

Cellule. Interior.ColorIndex = 5

End Select

Next

End Sub

En changeant le contenu des cellules concernées et en relançant la macro, on observe un changement de couleurs en fonction de ces valeurs.

On peut quitter la boucle en cours de traitement avec la commande Exit For.

D) La boucle With End With

Cette boucle permet d'effectuer un mÊme traitement sur un lot d'objets de mÊme type.

Exemple :

Sub MiseEnPage()

With ActiveSheet

.PageSetup.Orientation = xlLandscape

.Columns('A:Q').EntireColumn.AutoFit

.PrintOut

End With

End Sub

Cette fonction définit la mise en page au format paysage, rétrécit les colonnes A à Q et imprime. Toutes ces instructions traitent de la page courante, mais l'instruction With nous a permis d'omettre de le préciser.

Les opérateurs

Les opérateurs permettent des opérations sur des variables ou des constantes, des comparaisons et des tests de conditions.

On distingue quatre types d'opérateurs :

- Arithmétiques, permettant d'effectuer des calculs à partir de variables.

- De Comparaison, permettant de comparer des valeurs ou des chaines de caractÈres.

- Logiques, permettant de tester des valeurs booléennes (conditions).

- De Concaténation, permettant d'assembler les chaines de caractÈre

Les opérateurs arithmétiques :

+ Addition

- Soustraction

/ Division avec résultat flottant

Mod Reste de la division entre deux nombres

Division avec résultat entier

* Multiplication

^ Élévation à la puissance

Les opérateurs de comparaison :

< Inférieur à

<= Inférieur ou égal à

> Supérieur à

>= Supérieur ou égal à

= Egal à

<> Différent de

Les opérateurs logiques :

AND Si le résultat de l'une des sous-conditions est faux la condition entiÈre sera fausse.

OR Si le résultat d'au moins une sous condition est vrai, la condition entiÈre est vraie.

XOR Si une et une seule des sous conditions est vraie, la condition entiÈre est vraie.

NOT Renvoie le contraire de l'expression.

Aqv Renvoie vrai si les deux sous-conditions sont identiques.

L'opérateur de concaténation :

& Permet de réunir des portions de chaines de caractÈre pour n'en former qu'une.

Les boites de dialogue

Excel permet une interaction avec l'utilisateur pendant le déroulement d'une macro à travers des boites de dialogue préétablies.

A) InputBox

Avec InputBox, l'utilisateur saisie une valeur qui est renvoyée dans le code par la boite de dialogue.

Elles servent lorsque on a besoin que l'utilisateur précise une valeur et que celle-ci soit utilisée ensuite dans le code. Ce peut Être une valeur chiffrée, du texte

La syntaxe est la suivante :

InputBox(Prompt [, Title, Default, Xpos, Ypos, Helpfile, Context])

Exemple :

Sub test_dialogue()

Dim texte As String

texte = InputBox('message à faire passer', 'titre général de la boite')

End Sub

On n'est tenus de renseigner que le Prompt. Les autres champs sont tous facultatifs.

Si Xpos et Ypos sont renseignés, ils permettent de placer le coin supérieur gauche de la boite de dialogue à l'intersection des deux positions.

Helpfile est un nom éventuel de fichier d'aide contextuelle. Context est un numéro de contexte dans l'aide.

B) MsgBox

Affiche un message à l'utilisateur. Éventuellement des boutons peuvent Être ajoutés pour demander une saisie limitées à quelques choix (trois maximum). On les utilise souvent pour demander une réponse type Oui/Non à l'utilisateur.

La Syntaxe est la suivante :

MsgBox (<message> [<boutons>, <titres>, <helpfile>, <context>])

Cet commande renvois une valeur en fonction de l'objet qui a été validé par l'utilisateur. Si il y a plusieurs boutons, cela permet de savoir lequel d'entre eux a été validé.

Les arguments <Boutons> peuvent Être des noms de constantes ou directement des chiffres, afin de simplifier le codage de la fonction.

Quelques valeurs que peuvent prendre les arguments <Boutons> avec le nom de leur constante, la valeur chiffrée et l'effet reproduit :

vbOKOnly 0 Affiche le bouton OK uniquement.

VbOKCancel 1 Affiche les boutons OK et Annuler.

VbYesNo 4 Affiche les boutons Oui et Non.

VbYesNoCancel 3 Affiche les boutons Oui, Non et Annuler.

Deux exemples pour un mÊme résultat :

Sub test_box()

Dim Reponse

Reponse = MsgBox('Voulez vous confirmer ?', vbYesNo, 'Confirmation')

End Sub

Sub test_box2()

Dim Reponse

Reponse = MsgBox('Voulez vous confirmer ?', 4, 'Confirmation')

End Sub

Dans cet exemple, la variable strRep peut Être réutilisée dans la suite du programme comme n'importe quelle variable.

LA METHODE DE PROGRAMMATION EN VBA

1. La procédure

Un ensemble de lignes de code comme ceux que donnent les macros enregistrées grace à l'enregistreur est appelé une procédure, c'est à dire est un ensembles d'instructions qui s'exécutent les unes à la suite des autres, tout simplement.

L’enregistreur de macro ne génÈre que des procédures. Les autres types de blocs de code doivent Être tapées à la main directement dans les modules du classeur. Les procédures peuvent Être elles aussi saisies directement par l'utilisateur, bien sur.

Une procédure commence par le mot clé Sub suivi du nom de la procédure et d’une liste d’arguments entre parenthÈses (qui peut Être vide). Elle se termine par le mot clé End Sub.

Une procédure a donc la syntaxe suivante :

Sub NomProcédure([argument_1,, argument_n])

Instruction 1

Instruction 2

Instruction n

End Sub

Par convention :

- On note les éléments facultatifs du code entre [].

- On insÈre une tabulation avant chaque élément d'un mÊme bloc d'instruction. On appelle cette notation une indentation (tabulation).

- Le code qui suit le caractÈre ' (apostrophe) est ignoré lors du traitement et sert donc de commentaire, uniquement destinés à faciliter la lecture du code.

Exemple : Les arguments ci dessus sont indiqués entre crochets. Les éléments de notre procédure sont tabulés afin de faire apparaitre plus facilement d'une part le début et la fin de notre procédure, et d'autre part le bloc d'instructions qui y sont liées.

2. La fonction

Une fonction est un ensembles d'instructions qui s'exécutent les unes à la suite des autres et qui renvoit une valeur.

Une fonction commence par le mot clé Function suivi du nom de la fonction et d’une liste d’arguments entre parenthÈses (qui peut Être vide). Elle doit comporter à un moment de son traitement le valeur de retour. Celle-ci s'indique par le nom de la fonction suivie du égal et de la valeur qu'on souhaite renvoyer. La fonction se termine par le mot clé End Function.

Function NomFonction([argument_1,, argument_n])

Instructions

NomFonction = Expression ' valeur de retour

End Function

Une fonction codée en VB sous Excel est considéré comme une fonction disponible à l'utilisation par Excel et peut-Être directement appelée dans une cellule d'Excel comme n'importe quelle fonction.

AUTO-CORRECTION AVEC L'EDITEUR VBA

1. Le mode création et le mode débugage

L'éditeur VBA fonctionne sous deux modes : le mode Création et le mode Débugage. Le mode normal n'est interrompu que lorsqu'un problÈme survient et que le VB Editor entre en mode débugage, par exemple à la suite de la validation de ce type de fenÊtre d'alerte.


L'entrée en mode débugage permet d'illuminer en jaune la ligne qui pose problÈme. Mais on ne peut simplement relancer le programme à ce stade. Pour repasser en mode création, un clic sur l'icône correspondant est nécessaire.


Le mode de débugage permet d'interrompre indéfiniment le programme et le conserver dans l'état dans lequel il se trouvait au moment ou le problÈme est survenu.

Les outils d'aide correction de problÈmes qui suivent restent actifs en mode débugage et permettent de faire le point le cas échéant avant de reprendre le mode normal et relancer le programme.

2. Les espions

L'éditeur VBA permet de placer des espions sur certains éléments du code. Le principe est de garder un oeil en permanence sur l'élément en question pendant toute la durée du déroulement du programme.

En cas d'arrÊt inopiné, le message d'erreur habituel s'affichera, mais vous ne serrez pas les mains vide pour tenter de comprendre ce qui a pu poser problÈme.

La fenÊtre d'espionnage vos ferra en effet un exposé rapide de l'état de votre programme au moment du crash.

A) OÙ placer des espions ?

On peut placer des espions sur une variable, une constante, un tableau, une procédure, une fonction

Afin de placer l'espion, le plus simple est de positionner le curseur sur l'élément de code qu'on souhaite surveiller et de faire un clic droit en sélectionnant Ajouter un espion.

La fenÊtre d'ajout d'un espion s'ouvre alors. Si l'utilisateur a accédé à cette fenÊtre par un clic droit et Ajouter un espion sur un élément, celui-ci est automatiquement proposé, ainsi que sa procédure et son module. Sinon les champs sont à blanc et l'utilisateur est invité à les remplir.

Trois options existent pour les espions :

- Expression espionne permet d'avoir la valeur de l'élément.

- ArrÊt si la valeur est vraie est utilisé avec les booléens.

- ArrÊt si la valeur change est utilisé avec une variable.


B) Exemple d'utilisation d'un espion

Voici une procédure qui contient une erreur classique :

La boucle For est censée parcourir la totalité d'un tableau contenant les 7 jours de la semaine. Le programmeur a donc prévu une procédure bouclant de 1 à 7. Mais un tableau commence par la case 0 et non 1. La boucle For va donc parcourir 6 cases du tableau en commençant par la seconde, puis crasher lors du dernier passage de la boucle For, quand i prendra la valeur 7, car il n'existe pas de case 7 dans le tableau.

Sub truc()

mon_tableau = Array(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)

For i = 1 To 7

MsgBox ('la case du tableau courante est celle du ' & mon_tableau(i))

Next i

End Sub

Plaçons ensuite deux espions, un sur la variable mon_tableau et un autre sur notre compteur i.


Si notre boucle se passe bien, rien n'est affiché.

Comme notre boucle va se bloquer au dernier passage de la boucle, nous allons avoir un message d'erreur demandant si l'utilisateur souhaite abandonner (Fin) ou bien avoir accÈs à la procédure de débugage.

Si nous demandons le lancement de la procédure d'étude du problÈme, l'éditeur VB nous indique la ligne oÙ l'erreur a eu lieu en la surlignant en jaune.


La fenÊtre d'espionnage nous donne plus d'informations.


Elle détaille rapidement la nature et l'état actuel des variables espionnées.

L'erreur ne saute pas forcément aux yeux, mais une lecture un peu minutieuse fera notamment apparaitre que la case 6 du tableau est bel et bien la derniÈre, alors que la variable i est égal à 7. L'erreur est simple à relever, ce qui n'aurait pas été forcément le cas sans la fenÊtre d'espionnage.

3. L'exécution pas à pas

L'éditeur VB permet d'exécuter du code ligne par ligne et mÊme instruction par instruction. Cela permet de suivre l'évolution du programme et, couplé avec les espions, de suivre l'évolution des variables et du traitement effectué par notre code.

Là aussi, le but est de traquer les erreurs éventuelles ou dépister une erreur signalée lors de l'exécution du programme.

L'option déroulement pas à pas s'exécute à partir du menu Débogage de VBA Editor. Il est également simplement appelable à tout moment grace à la touche F8.


Prenons un exemple simple de procédure. La proposition ci dessous est une procédure bouclant une dizaine de fois en incrémentant à chaque fois un compteur. A chaque tour, il écrit dans la cellule de colonne A et de ligne correspondante au compteur la valeur de celui-ci. Puis il écrit « terminé ! » aprÈs la derniÈre cellule concernée par la boucle.


Un simple appel de la touche F8 me permet de suivre à vitesse humaine le déroulement du programme dans son entier. Chaque ligne est résolue l'une aprÈs l'autre. La ligne courante est surlignée en jaune.


La ligne active changera à chaque appel de F8 et montrera le déroulement du programme et les éventuels sorties inopinées et autres problÈmes rencontrés.


4. Les curseurs de blocage

Des variantes du pas à pas sont proposés par Excel, notamment avec la pose de points d'arrÊts afin de limiter une exécution. Les curseurs ainsi créés sont principalement utilisés pour exécuter rapidement un programme jusqu'à un certain point souhaité par l'utilisateur.

Pour créer un curseur, cliquer simplement sur la bordure grise à gauche du code (au niveau du disque rouge sur l'image ci-dessous).Pour l'effacer, cliquer à nouveau au mÊme endroit.


Lors de l'exécution d'une macro, le curseur provoquera l'arrÊt de celle-ci au niveau de la ligne oÙ à été placé le curseur.

Lors d'un pas à pas, la présence d'un curseur permettra également de s'arrÊter automatiquement à son niveau.


5. L'éventail des moyens

Tous ces moyens de traquer un problÈme survenu dans une portion de code ne prennent tout leur intérÊt que couplés les uns aux autres en mÊme temps.

Un problÈme invisible au premier coup d'oeil sera en général rapidement débusqué grace à un pas à pas bien limité par un curseur, avec affichage de l'état des variables en temps réel.


VISION OBJET DE LA PROGRAMATION VBA

1. La programmation orientée objet

A) Le Principe

VBA est un langage orienté objet.

Le but de la programmation objet, plutôt que de taper du code en une longue liste pouvant dépasser les dizaines de milliers d'entrées, est d'épargner des lignes de codes en les réunissant en blocs distincts, d'une part, et de rendre le code le plus évolutif possible en organisant clés blocs de façon logique, d'autre part.

La programmation objet part du principe que beaucoup des éléments manipulés dans le code peuvent Être réunis en grands groupes.

Ou inversement, qu'on peut réfléchir, avant de commencer à taper du code, à une façon d'organiser notre démarche.

B) L'Objet

Un objet est un modÈle d'éléments retrouvés plusieurs fois dans le logiciel qui, à la demande d'une ligne de code convenue à l'avance,.renvoie un effet.

Dans Excel, ces objets sont par exemples des cellules, des images, etc.

Dans un langage orienté objet, tout est objet.

C) Un exemple concret plutôt qu'un long discours

Parler d'objet n'est qu'une façon d'organiser les choses. Dans notre vie quotidienne, tout peut également se classer grace à des objets. Prenons l'exemple du Chien. Le Chien répond à certains critÈres bien précis.

Il possÈde :

Une fourrure

Des pattes

Des oreilles

Un museau

Il peut :

Aboyer

Manger

Courir

Faire le mort

Gémir pitoyablement pour faire croire qu'il est affamé

Courir aprÈs un objet Chat

On distingue déjà deux types d'informations liées à notre objet Chien :

Ce qu'il possÈde obligatoirement, les propriétés qui le décrivent. En informatique, elles peuvent Être assimilé à une variable.

Exemples :

Dim Fourrure As String = 'marron'

Fourrure = 'marron'

Dim nbr_pattes As Byte

nbr_pattes = 4

Ce qu'il peut provoquer comme effet sur le code, qui peut Être assimilable à un bloc d'instructions. On appelle ces blocs des méthodes.

Exemples :

Sub Abboyer(aboiement.mp3)

<Instructions>

End Sub

Le principe de commencer à coder en pensant Objets revient à dire qu'on va énumérer autant de caractéristiques que possible et fabriquer un modÈle qui vaudra pour tous les chiens.

Quand on aura ensuite besoin de créer un chien, on demander à ce modÈle de se réaliser et de nous créer un chien en particulier.

On appelle le modÈle du chien sa CLASSE.

On appelle un chien créé à partir de cette classe un OBJET chien, ou une instance.

On pourrait comparer ce procédé à la réalisation d'un vÊtement grace à un patron. Que le vÊtement soit tiré à 1 ou 10 000 exemplaires ne change rien au patron. Qu'ils soient tous fait avec le mÊme tissu ou bien tous différents n'y change rien non plus.

Exemples avec une Cellule Excel :

Propriétés de la Cellule

- Une coordonne de ligne

- Une coordonne de colonne

- Une hauteur

- Un contenu

-

Méthodes de la Cellule

- Effacer le contenu

- Augmenter la hauteur

- Se détruire

- S'encadrer

- S'affecter une police de caractÈre

-

Quelques exemples d'Objets que nous rencontrerons avec Excel :

L'objet Range est une plage de cellules.

L'objet Workbook est un classeur.

L'objet Worksheet est un une feuille de classeur (onglet).

Quelques rÈgles liées aux objets :

Tout objet créé possÈde systématiquement les propriétés et les méthodes définies dans sa classe lorsqu'il est créé. On appelle ce processus naturel l'héritage.

La liste complÈte des objets crées à partir d'une mÊme classe est appelée Collection.

Un objet peut contenir d'autres objets : Un Workbook contient un ou plusieurs Worksheet qui contiennent eux-mÊme un ou plusieurs objets Range.

2. Manipulations des Objets

A) Les collections

Une collection est une liste d'objet de mÊme type.

Exemples :

- Workbooks est la collection des objets Workbook. Elle liste donc tous les
classeurs ouverts.

- Worsheets est la collection des Worksheet. Elle liste tous les onglets d'un classeur.

Quelques objets et leurs collections :

Workbook Un classeur Excel.

Workbooks Collection de tous les classeurs Excel ouverts.

WorkSheet Feuille de classeur.

Worksheets Collection des onglets d'un Classeur.

Range Plage de Cellules

ActiveWorkBook Objet Workbook représentant le classeur de la fenÊtre active.

ActiveCell Objet Range représentant la premiÈre cellule active de la fenÊtre
active ou spécifiée.

Selection Objet Range représentant la ou les cellules sélectionnées.

B) Un exemple complet d'Objet

Compte tenu du nombre important d'objets dans Excel, nous allons prendre un exemple via l'explorateur d'objets proposé par Visual Basique Editor. Commençons par ouvrir la fenÊtre de recherche des objets afin de rechercher des informations sur l'objet Range.



La fenÊtre de l'explorateur s'ouvre. Elle contient plusieurs zones que nous allons étudier.

La liste des bibliothÈques actuellement chargées.


Une bibliothÈque est une liste d'objets. Ces objets sont regroupés par logiciels ou groupes de logiciels. Par exemple nous pouvons avoir accÈs au objets spécifiques à Excel ou aux objets spécifiques à tout le Pack Office.

Le texte recherché.


Permet de saisir un texte à rechercher, par exemple une partie du nom d'un objet qu'on recherche, etc. Une fois le texte saisi, la validation se fait par la touche Envois, ou un clic sur l'icône des jumelles.

Saisissons le mot Range dans la zone de recherche. Nous obtenons la fenÊtre ci dessous.


La zone Résultat de la recherche nous donne une liste d'objets classés par bibliothÈques. Faisons défiler jusqu'à l'objet qui nous intéresse.


La zone Classes nous donne la liste des classes concernées par la BibliothÈque oÙ nous nous trouvons.


C'est à dire que nous avons ici un aperçu de l'ensemble des classes de la bibliothÈque Excel.

La portion de fenÊtre tout en bas permet d'avoir des détails sur l'objet sélectionné.


La portion de fenÊtre de droite est celle qui nous donne tout sur l'objet sélectionné : Méthodes, Propriétés, Événements, Constantes


Penchons-nous donc sur notre objet Range (plage de cellule).

Nous notons rapidement que les Méthodes sont appelées Function en anglais alors que les Propriétés sont appelées Properties.

Un icône différent est affiché pour les propriétés


Et pour les méthodes.


Nous constatons également qu'il existe beaucoup de méthodes et de propriétés ! Mais gardons à l'esprit qu'Excel est un logiciel trÈs complet avec de nombreuses années d'existences pour s'enrichir petit à petit.

Quelques exemples de propriétés facilement compréhensibles :

Font Police de caractÈre actuelle de la plage.

Column Colonne de la cellule active de la plage.

Offset Adresse de la plage.

RowHeight Hauteur de ligne de la cellule active de la plage.

Worksheet Onglet de la Plage.

D'autres objets intéressants à observer : Font, Sheets, Module1, Feuil1

C) La syntaxe hiérarchique

La manipulation des objets a été rendue intuitive par la méthode de syntaxe hiérarchique à l'aide de séparations par des points des divers objets concernés.

Selection.Font.Bold = True

Une lecture un peu intuitive nous permet de traduire cette phrase barbare en interprétant chacune de ses parties. Pour résumer on traduit grosso-modo par :

« On confirme activer le mode gras pour
la police de caractÈre de la selection actuelle »

On note trois niveaux dans l'instruction que nous étudions : Sélection, Font et Bold. Toutes ces précisions se réfÈrent à la Sélection actuelle.

On donne à Sélection le nom d'objet manipulé.

Selection : La sélection actuelle.

Font : La police de caractÈre.

Bold : En gras.

= True : est vrai/Validé/Sélectionné

On s'adresse à un objet en énumérant les objets successifs l'incluant, en séparant les précisions de niveau par des points.

Exemples :

- Workbooks('Classeur1.xls').Worksheets('Feuil1')

Cette instruction permet de faire référence à la feuille de calcul de nom Feuil1 du classeur ouvert de nom Classeur1. L'objet concerné est donc de type Worksheet.

- Workbooks('Classeur1.xls').Worksheets('Feuil1').Range('A1')

Cette instruction permet de faire référence à la cellule A1 de la feuille Feuil1 du classeur Classeur1 et concerne un objet Range.

3. L'intérÊt de programmer Objet

Maintenant que nous avons vu un peu ce que sont les classes, objets, instances, méthodes et autres propriétés, revenons à la question principale :

OUI MAIS POURQUOI ?

C) L'avantage de programmer Objet

Le langage objet est par définition hyper évolutif.

Tout nouveau besoin de travailler sur un sujet peut se traduire par la création d'un ou plusieurs nouveaux objets et leurs classes respectives.

Un objet publique peut voir sa méthode changée par l'utilisateur simplement en réécrivant cette méthode à l'intérieur du nouvel objet. On peut donc créer des exceptions avec des objets ne répondant plus vraiment à leur héritage de classe standard, pour peu qu'on écrase l'information normale en réécrivant tout ou partie du code.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1873
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved