Les macros étaient très utilisées dans les tableurs qui ont été le vecteur principal de leur développement et de celui du langage VBA. Pour créer de la synergie entre ses logiciels, Microsoft a voulu homogénéiser les langages de macro-commandes entre les différentes applications.

Ils ont fort opportunément utilisé les bases de Visual Basic (un langage de programmation à part entière de Microsoft) pour créer le VBA, sigle de Visual Basic for Application. Maintenant vous ne ferez plus de confusion entre les deux, même s’il y a de nombreuses similitudes (orientation objet et filiation de VBA), les différences dans leur emploi sont conséquentes.

Le VBA est basé sur la manipulation d’objets qui représentent les éléments principaux de l’application employée et d’interfaces de pilotage et ne peut exister qu’au sein d’une application hôte. On ne peut accéder à son éditeur de façon séparée et celui-ci n’est accessible qu’au travers de l’application qui l’héberge.

Comme vous l’aurez compris, nous allons travailler avec du VBA à partir d’Excel. Un petit Alt + F11 sur votre clavier et vous serez rendu dans Microsoft Visual Basic pour Applications.

C’est parti. Nous allons réaliser notre premier projet. Chaque macro doit être codée entre les mots-clés Sub et End Sub.

Tapez ceci :

Sub nom_de_la_macro ()
End Sub

Essayez de remplacer nom_de_la_macro par quelque chose d’autre, vous verrez que le nom de votre macro est tout de suite reconnue. Par exemple Violetta

Vous pouvez placer des lignes de commentaires pour vous repérer dans le code à l’aide d’apostrophes. Elles n’auront aucune influence lors de l’exécution du code et servent simplement à vous repérer.

Définitions pour le VBA

Le VBA considère des objets, des méthodes et des classes.

Nous essayons de reproduire le schéma suivant : dans un appartement, un sujet regarde la télévision (c’est une méthode). Il faut donc d’abord mettre le sujet dans le salon. Et avant cela, on doit d’abord trouver la ville dans laquelle se trouve la maison, puis l’adresse précise et enfin trouver le salon.

Puisque toutes les villes se ressemblent, nous pouvons considérer la classe Villes. De là, vous trouvez la ville du sujet, qui est une instance de Villes, ou un objet issu de Villes. Il en est de même pour la classe Maisons.

L’itinéraire à suivre est donc le suivant : Ville > Maison > Salon > Télévision

Les lieux et objets sont séparés par un point. Le code serait donc ceci :

Villes(“Paris”).Maisons(“La_Maison”).Salon(“Télévision”)

Dans la classe Villes, la ville se distingue des autres par son nom : Paris.

Paris est un objet créé à partir de la classe Villes, qui contient aussi bien Marseille que Bordeaux.

L’accès aux objets se fait comme suit :

nom_de_la_classe(“Nom de l’instance de cette classe”)

Mon premier Code en VBA

Prenez un nouveau classeur Excel. Enregistrez votre classeur en le nommant “Essai”. Renommez une première feuille “Départ” et l’autre “Arrivée”.

Placez-vous sur la feuille Départ, ouvrez la fenêtre de VBA, créez un nouveau module.

Maintenant, réfléchissons à l’itinéraire. On part de l’application, pour aller vers le classeur “Essai” et vers la feuille “Arrivée”.

Le code serait donc :

Sub trajet()

Application.Workbooks(“Essai”).Worksheets(“Arrivée”).Activate

On part de l’application vers l’instance Essai de la classe Workbooks

ensuite, on va à l’objet Arrivée de la classe Worksheets

End Sub

Toutefois, on peut le raccourcir : c’est comme avec les pièces de la maison, si vous êtes dans la maison, il est inutile de préciser qu’il faut aller dans cette ville et à l’adresse de la maison, puisque vous y êtes déjà.

Ici, vous êtes bien sur l’application Microsoft Excel (logique) et vous êtes aussi sur le classeur “Essai”.

Le bon code est donc :

Sub trajet()

Worksheets(“Arrivée”).Activate

End Sub

Il ne vous reste plus qu’à aller sur la feuille “Départ”, y dessiner un rectangle, faire un clic droit, y affecter votre macro et de cliquer dessus, vous serez “téléporté” vers la feuille “Arrivée”

La classe Workbooks désigne tous les classeurs ouverts.

La classe Worksheets désigne toutes les feuilles du classeur actif.

Et voilà ! Vous avez codé votre premier module en VBA !

Par Publié le : 30 octobre 2017Catégories : Cours, fiches et informations1 CommentaireMots-clés : ,