IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

Excel VBA - La parentalité d’un objet

Noter ce billet
par , 01/02/2021 à 10h51 (2580 Affichages)
PREAMBULE

Le VBA est un programme orienté objet (POO)
Un classeur, une feuille, une cellule, un tableau croisé dynamique, un graphique, etc. sont des objets.
Lorsque l’on applique une méthode à un objet ou que l’on modifie l’une de ses propriétés il est important de préciser sa parentalité au risque de se tromper d’objet.

La parentalité d’un objet mais quésaco ?
Tout objet a un parent.
Ainsi une cellule ou une plage de cellules a comme parent la feuille dans laquelle elle se trouve et cette feuille a comme parent le classeur où elle se trouve et lui-même a comme parent l’application Excel et ainsi de suite.

EXEMPLE

Dans le classeur où se trouve notre code VBA, nous avons trois feuilles nommées respectivement [Client], [Facturier d'entrée] et [Facturier sortie] et nous souhaiterions mettre en couleur jaune les cellules A16 et B16 de la feuille nommée [Facturier entrée]
Au moment où nous écrivons la ligne de code la feuille active est celle où se trouve les cellules que nous voulons mettre en évidence or suite à un appel téléphonique nous consultons la liste des factures clients présente dans la feuille [Facturier sortie].

Nous lançons la procédure VBA avec cette ligne de code
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
Range("A16:B16").Interior.Color = vbYellow
Alors que nous voulions mettre en évidence deux cellules dans la feuille [Facturier d'entrée], nous avons en réalité mis en jaune les cellules de la feuille [Facturier sortie].
Si nous pouvons considérer que cette erreur là n'a pas beaucoup de conséquence, elle aurait pu en revanche s'avérer catastrophique si nous avions écrit des valeurs dans ces cellules.

Nom : Parentalité Range.png
Affichages : 466
Taille : 60,9 Ko

Le risque de travailler avec un objet sans spécifier la parentalité complète de celui-ci est immense.

PRECISONS LA PARENTALITE

Reprenons notre exemple et rappelons nous que l'on souhaite mettre en évidence les cellules A16:B16 de la feuille nommée Facturier entrée présente dans le classeur où se trouve le code VBA.

Exemple 1 - L'objet est orphelin. Nous traiterons donc la plage A16:B16 de la feuille active
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
Range("A16:B16").Interior.Color = vbYellow
Exemple 2 - Le parent de la plage A16:B16 étant la feuille nommée Facturier entrée, nous allons donc le préciser dans notre code, ce qui nous permettra de traiter la bonne plage de cellules
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
Worksheets("Facturier entrée").Range("A16:B16").Interior.Color = vbYellow

Est-ce suffisant ?
Non évidemment, le fait de préciser la feuille ne nous met pas à l'abri des problèmes.
En effet, si par exemple plusieurs fichiers sont ouverts et que la feuille active, n'est pas l'une des feuilles du classeur dans lequel nous avons écrit le code VBA. Nous aurons une erreur 9 renvoyé par le code VBA.

Il est donc primordial de préciser l'objet classeur également (voir l'exemple 3, ci-dessous)

Exemple 3 - La parentalité totale de l'objet est précisé.
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
ThisWorkbook.Worksheets("Facturier entrée").Range("A16:B16").Interior.Color = vbYellow
Nous précisons bien dans cet exemple
  • le classeur soit l'objet Workbook (ThisWorkbook)
  • la feuille soit l'objet Worksheet (Worksheets("Facturier entrée")
  • la plage de cellules soit l'objet Range (Range("A16:B16"))

Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Viadeo Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Twitter Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Google Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Facebook Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Digg Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Delicious Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog MySpace Envoyer le billet « Excel VBA - La parentalité d’un objet » dans le blog Yahoo

Mis à jour 27/05/2022 à 15h49 par Philippe Tulliez

Catégories
VBA Excel

Commentaires

  1. Avatar de morobaboumar
    • |
    • permalink
    Bonsoir membres du forum,
    Bonsoir Philippe Tulliez,
    L'arbre de parentalité m'impressionne énormément:
    Excel VBA - La parentalité d’un objet
    Noter ce billet
    1 Commentaire
    par Philippe Tulliez, 01/02/2021 à 10h51 (1654 Affichages)
    PREAMBULE

    Le VBA est un programme orienté objet (POO)
    Un classeur, une feuille, une cellule, un tableau croisé dynamique, un graphique, etc. sont des objets.
    Lorsque l’on applique une méthode à un objet ou que l’on modifie l’une de ses propriétés il est important de préciser sa parentalité au risque de se tromper d’objet.

    La parentalité d’un objet mais quésaco ?
    Tout objet a un parent.
    Ainsi une cellule ou une plage de cellules a comme parent la feuille dans laquelle elle se trouve et cette feuille a comme parent le classeur où elle se trouve et lui-même a comme parent l’application Excel et ainsi de suite.
    Je suis enjaillé par votre œuvre fascinante.
    Merci beaucoup.
  2. Avatar de Philippe Tulliez
    • |
    • permalink
    Bonjour et merci pour votre commentaire (désolé de cette réponse tardive mais je viens seulement de le voir)

    Citation Envoyé par morobaboumar
    Bonsoir membres du forum,
    Bonsoir Philippe Tulliez,
    L'arbre de parentalité m'impressionne énormément:

    Je suis enjaillé par votre œuvre fascinante.
    Merci beaucoup.