Programmation et tableurs

Décembre 2016
Les tableurs évolués, parmi lesquels Excel et Calc, disposent d'un (et parfois de plusieurs) langage de programmation qui fournit les outils permettant de résoudre les scénarios qui ne peuvent pas être enregistrés.
Vous pourriez toutefois légitimement vous demander pourquoi donc devoir envisager de rédiger des macros vous-même, au lieu de vous contenter d'employer l'enregistreur de macros. La raison en tient à ce que les macros enregistrées connaissent quelques limitations, dont celles qui suivent :
  • Interaction. L'utilisateur doit lui-même procéder aux entrées qui commanderont la macro. Si un classeur possède des graphiques montrant les ventes de 20 produits, plutôt que d'obliger l'utilisateur à imprimer un graphique pour chacun de ces 20 produits, il serait préférable qu'il puisse sélectionner celui à imprimer.
  • Décisions. Vous voulez que la macro prenne des décisions lors de son exécution en fonction de certains événements ou données. Par exemple, supprimer certaines lignes si une certaine valeur est nulle ou égale à zéro.
  • Fonctions personnalisées. Vous exécutez régulièrement de longs calculs identiques dans vos feuilles de calcul. Créer une fonction personnalisée évite de devoir saisir à chaque fois une formule complexe.
  • L'enregistreur de macros peut être inefficace. Il est fréquent de ne pas avoir à sélectionner une plage de cellules pour effectuer une action. L'enregistreur ne pouvant mémoriser autre chose que des touches de clavier ou des clics de souris, vous n'avez aucun moyen de faire référence à la plage concernée. C'est en revanche possible en écrivant vous-même une macro.


L'écriture de macros dépend bien évidemment du langage de programmation employé. Ce chapitre présente leur mode de fonctionnement global. En raison de leur diversité et de leurs spécificités, il est exclu de dépasser le stade de l'aperçu des possibilités de programmation. Pour aller plus loin, vous devrez vous reporter à d'autres sources.
Nous commencerons par examiner certains termes et concepts propres aux langages de programmation orientés objet, puis verrons comment employer les outils d'édition proposés par Excel et Calc pour écrire des macros.

Bases de la programmation orientée objet


Un langage de programmation orienté objet, comme VBA, OpenOffice.org Basic, JavaScript ou Java, est un langage de programmation structuré. Il a recours à des phrases nommées instructions, construites à l'aide d'éléments : objets, méthodes et propriétés. Ces instructions sont regroupées en blocs appelés procédures. Une procédure est un ensemble d'instructions qui exécutent une tâche spécifique ou calculent un résultat. Pour apprendre à élaborer des instructions et des procédures, vous devez d'abord en savoir plus sur leurs éléments constitutifs.

OBJETS


Tout tableur se compose d'un ensemble d'objets, qui peuvent être manipulés par programmation. Regardez ce qui se trouve sur votre bureau physique : le bureau lui-même, le clavier, la souris, un stylo, le téléphone... Vous employez ces objets pour effectuer votre travail quotidien.
De la même façon, lors du travail avec un tableur, vous manipulez ses objets. Par exemple, quand vous mettez à jour un tableau, vous ouvrez le classeur contenant les feuilles concernées, vous y entrez les données, puis enregistrez le classeur. Le classeur, les feuilles de calcul et les lignes sont autant d'objets. La liste complète des objets est impressionnante : vous en découvrirez un certain nombre peu à peu dans ce chapitre. Un langage de programmation orienté objet est capable de manipuler ces objets.

COLLECTIONS


Certains objets appartiennent à une collection. Une collection est un ensemble d'objets similaires pouvant être manipulés simultanément : une collection est elle-même un objet. Un album photo physique est une collection de photos : lorsque vous le déplacez, vous déplacez simultanément toutes les photos qu'il renferme.
La collection des classeurs est un exemple de collection. Il est constitué de chacun des objets classeur que vous avez à votre disposition. Vous vous référez généralement à un élément d'une collection en mettant son nom entre parenthèses, comme dans l'exemple suivant :
Collection("Nom_élément")

METHODES


Une méthode est une action qui peut être effectuée par un objet. En reprenant l'exemple de l'album photo, il peut être ouvert ou fermé. Il possède donc une méthode d'ouverture et une méthode de fermeture. Quand vous l'ouvrez pour examiner, ajouter ou supprimer une photo, vous commencez par employer sa méthode d'ouverture.
Un objet de tableur possède aussi des méthodes. L'objet classeur (Workbook) d'Excel possède par exemple en VBA une méthode Open (ouvrir) et une méthode Close (fermer). Dans une instruction, vous employez la méthode d'un objet en faisant suivre son nom de celui de la méthode, séparés par un point :
Collection("Nom_élément").Méthode

PROPRIETES


Les propriétés décrivent un objet. Les photos de l'album peuvent être en noir et blanc, glacées, de différentes tailles. Ce sont autant de propriétés.
Certaines propriétés sont en lecture seule, d'autres en lecture/écriture. Une propriété en lecture seule ne peut pas être modifiée ; une photo en noir et blanc ne peut pas devenir une photo en couleur. En revanche, la propriété de taille est en lecture/écriture, car il est possible de retailler une photo.
Ainsi, un objet classeur a une propriété Path (chemin), qui décrit son chemin d'accès complet. Elle est en lecture seule, car vous ne pouvez pas modifier le chemin d'un classeur sans l'enregistrer dans un autre dossier.
Une propriété possède donc une valeur. Vous modifiez la valeur d'une propriété en lecture/écriture en lui affectant une nouvelle valeur. Vous spécifiez une propriété comme une méthode :
Collection("Nom_élément").Propriété = Valeur
Si vous n'affectez pas de valeur, l'instruction indique (ou renvoie) la valeur courante.

PROCEDURES


Une procédure est un ensemble d'instructions de programmation qui effectue une tâche spécifique ou renvoie un résultat. Il en existe de deux sortes :
  • Une sous-routine effectue une tâche spécifique. Les macros enregistrées directement sont des sous-routines.
  • Une fonction est conçue pour renvoyer un résultat.

Le terme fonction possède en programmation une signification identique à celle d'une fonction de classeur : elle effectue un calcul et retourne un résultat. Les fonctions fournissent une information qui peut vous aider à élaborer des procédures.
Vous pouvez créer des fonctions ou employer dans vos procédures des fonctions existantes. Les fonctions disponibles, si elles sont généralement très similaires, dépendent du langage de programmation considéré. Reportez-vous à la documentation de votre produit.

A voir également :

Ce document intitulé «  Programmation et tableurs  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.