Médiaforma

VBA Excel – Agir sur les propriétés d’un classeur

Partagez cet article sur vos réseaux

Tous les classeurs possèdent des propriétés qui donnent des informations complémentaires sur son contenu, son auteur ou sa catégorie.

Pour accéder aux propriétés d’un classeur Excel 2016, basculez sur l’onglet Fichier dans le ruban puis cliquez sur Informations. Dans la vue backstage, cliquez sur Propriétés puis sur Propriétés avancées :

La boîte de dialogue des propriétés s’affiche et donne accès aux principales propriétés du classeur sous l’onglet Résumé :

Toutes ces propriétés peuvent être lues et modifiées en VBA. Pour cela, vous préciserez la propriété à laquelle vous voulez accéder dans la fonction ActiveWorkbook.BuiltinDocumentProperties(« p ») (où p est la propriété concernée). Voici quelques-unes des propriétés utilisables :

Nom de la propriété Equivalent dans la boîte de dialogue des propriétés
Title Titre
Subject Sujet
Author Auteur
Manager Responsable
Company Société
Keywords Mots clés
Comments Commentaires

 

Ainsi par exemple, cette instruction affichera le nom de l’auteur du classeur dans une boîte de dialogue :

MsgBox ActiveWorkbook.BuiltinDocumentProperties("Author")

Où encore, cette instruction affectera la chaîne « Cette propriété a été définie en VBA » à la propriété Subject du classeur :

ActiveWorkbook.BuiltinDocumentProperties("Subject") = "Cette propriété a été définie en VBA"

Pour accéder à toutes les propriétés du classeur, il n’est pas nécessaire de connaitre leur nom : vous pouvez parcourir la collection BuiltinDocumentsProperties avec une boucle For Each. Ici par exemple, nous affichons le nom des propriétés dans la colonne 1 et les valeurs correspondantes dans la colonne 2 :

On Error Resume Next

i = 1

Worksheets(1).Activate

For Each p In ActiveWorkbook.BuiltinDocumentProperties

    Cells(i, 1) = p.Name

    Cells(i, 2) = p.Value

    i = i + 1

Next

Remarque

L’instruction On Error Resume Next évite l’arrêt du code et l’affichage d’un message d’erreur lorsqu’une propriété n’est pas définie.

Voici le résultat :