Cours ⇒ Visual Basic facebook twitter youtube

La programmation   Excel ⇒ & Comprendre le concept d’objet



Comme  pour  tous  les  langages  de  programmation  objet,  les  objets  sont  le  fondement  de Visual Basic. Quelle que soit la fonction d’un programme VBA, presque toutes les actions  qu’il exécute s’apparentent à la modification d’objets.

Objets et collections d’objets

Dans la vie, un objet peut être tout et n’importe quoi. Ce qui caractérise un objet, c’est son existence  physique,  ses  propriétés  spécifiques,  son  comportement  et  les  actions  que  l’on peut exécuter sur celui-ci.

Une voiture est un objet. Lorsque vous parlez de l’objet Voiture, vous pouvez faire référence à un objet abstrait ("Je vais acheter une voiture") comme à une voiture bien concrète ("Mate un peu ma  Passat – Volkswagen gris ").

Les objets que vous utiliserez dans vos programmes VBA répondent à une même définition.

L’objet ici c’est une voiture, possède un certain nombre de propriétés  (une carrosserie, des roues, un moteur, etc.) et autorise un certain nombre de méthodes (démarrer, freiner, tourner, etc.) qui permettent d’en maîtriser le comportement.

Ce  sont  ces  propriétés  et  ces  méthodes,  communes  à  toutes  les  voitures,  qui  définissent l’objet  Voiture.

En POO, cet objet abstrait est appelé la classe Voitures.

La classe Voitures est la définition formelle des objets Voiture (leurs propriétés et leurs méthodes).

Il s’agit du modèle à partir duquel vous pouvez imaginer et créer des milliers de voitures différentes. L’ensemble des véhicules appartenant à la classe Voitures (parce qu’ils possèdent les propriétés et les méthodes définies dans cette classe) est appelé la collection d’objets Voitures

Note important

Définition

Une collection porte le nom pluriel des objets qu’elle rassemble

Le terme Classe désigne la définition commune d’un ensemble d’objets (qu’est-ce  qu’une voiture  ?),  tandis  qu’une  Collection  désigne  l’ensemble  des  objets appartenant à une classe (toutes les voitures en circulation).

Le  grand  intérêt  de  la  programmation  orientée  objet  est  qu’il  n’est  pas  utile  de  savoir comment fonctionne un objet pour l’utiliser.

Lorsque vous achetez une voiture, vous n’avez pas  besoin  de  savoir  comment  la  carrosserie  et  le  moteur  ont  été  fabriqués,  ni  comment les différents composants sont assemblés, vous vous contentez de choisir un modèle, une couleur, etc. Il vous suffit de connaître les méthodes propres à la classe Voitures pour l’utiliser.

Avec VBA, lorsque vous créez une instance d’un objet, vous en définissez les propriétés sans vous préoccuper de la façon dont celles-ci seront appliquées.

VBA  permet,  par  exemple,  de  créer  des  interfaces  graphiques  pour  vos  programmes,  en déposant  simplement  les  objets  dont  vous  avez  besoin  (cases  à  cocher,  zones  de  texte, boutons  de  commandes,  etc.),  sur  une  feuille. 

Ces  objets  ont  des  comportements  spécifiques que votre programme exploitera, sans que vous ayez besoin de vous soucier de leur mécanisme interne.

  • Application hôte et modèles d’objets

Lorsque vous développerez des programmes VBA, vous agirez sur des objets qui varieront en fonction des actions que vous souhaitez que votre programme exécute. Vous définirez et associerez ces objets de façon à créer une application complète.

Les objets que nous utilisons sont généralement ordonnés  selon  leur  fonction. 

Lorsque  vous  souhaitez  vous  laver,  vous  vous  dirigez  vers la salle de Bains ; il s’agit du lieu consacré à la toilette. Vous y trouvez un certain nombre d’objets  tels  que  Savon,  Gant  de  toilette,  Dentifrice,  Brosse  à  dents,  etc. Vous  utilisez  le savon avec le gant de toilette, le dentifrice avec la brosse à dents, et vous pouvez faire une toilette complète.

Si vous souhaitez manger, c’est dans la cuisine que vous vous orienterez. Vous y trouverez quelques objets communs à ceux de la salle de bains (Lavabo, Robinet, Placard, etc.). Vous ne devriez cependant pas y trouver de brosse à dents, ni aucun des objets spécifiques à la toilette.

  Par  contre,  vous  pourrez  utiliser  le  four,  ouvrir  le  frigo  et  utiliser  tous  les  objets spécifiques de la cuisine.

Les applications du Pack Office sont comparables aux pièces de votre maison. Lorsque vous choisissez de développer un projet VBA, vous choisissez une application hôte.

 Il s’agit de l’application  Office  qui  contient  les  objets  sur  lesquels  vous  souhaitez  agir.  C’est  dans cette application que vous développerez vos programmes, et c’est uniquement à partir de cette application qu’ils pourront être exécutés.

Si vous souhaitez travailler sur des textes, vous choisirez d’entrer dans Word ; pour faire des calculs, vous savez que c’est dans Excel que vous trouverez les objets dont vous avez besoin ; Access sert au développement et au maniement des bases de données et PowerPoint, à la création de présentations.

  • Votre programme sera plus performant et plus simple à développer si l’application hôte  est celle dans laquelle s’exécute l’essentiel des instructions du programme.
  • La présence du programme dans l’application hôte doit être logique, et l’utilisateur final doit y avoir un accès facile puisque le programme ne pourra être exécuté qu’à partir de celle-ci.

L’application  est  donc  la  pièce  dans  laquelle  votre  programme  s’exécutera. 

Celle-ci  est  composée  d’un  certain  nombre  d’objets  –  constituant  une  bibliothèque  d’objets  –  dont  les  rapports  sont  précisément  définis.  Les  objets  d’une  application  et  les  rapports  qu’ils entretiennent  sont  représentés  sous  la  forme  d’un  organigramme.  Tout  en  haut  de  l’organigramme  se  trouve  l’application  (la  pièce  dans  laquelle  sont  rangés  tous  les  objets).

viennent  ensuite  les  classes  d’objets  de  premier  niveau  de  l’application,  auxquelles  sont liés d’autres objets ou classes, et ainsi de suite. On appelle cette structure le modèle d’objets ou la hiérarchie de classes de l’application. La Figure représente ce qui pourrait être un modèle d’objets sommaire de l’application Salle de bains.

objet

Au  sommet  du  modèle  se  trouve  la  pièce  –  l’application.  Tous  les  objets  auxquels  vous pouvez  accéder  y  sont  contenus.  Si  l’on  établit  un  modèle  d’objets  pour  l’ensemble  des

pièces  de  la  maison,  on  retrouvera  toujours  l’objet Pièce  au  sommet  du  modèle.  De  la

même  façon,  au  sommet  des  modèles  d’objets  des  applications  Office,  se  trouve  l’objet

Application.

Viennent ensuite les classes situées immédiatement sous l’objet Pièce. Plus on progresse dans le modèle d’objets, plus les objets sont précis et donc spécifiques de la pièce ou de l’application.  Par  exemple,  dans  Excel,  sous  l’objet Application  se  trouve  la  collection (ou classe) Workbooks qui englobe tous les objets Workbook, c’est-à-dire tous les classeurs

Excel ouverts. Sous l’objet Workbook se trouve la classe Worksheets qui englobe tous les objets Worksheet (toutes les feuilles de calcul) de l’objet Workbook désigné.

Note important

Notez que le fait que des objets appartiennent à des branches distinctes du modèle d’objets ne signifie pas qu’ils ne peuvent pas interagir. L’objet Savon de Marseille peut se trouver sur l’étagère, et vous pouvez utiliser la méthode Déplacer pour le mettre dans l’objet

Baignoire, comme dans l’objet Lavabo.

Un  objet  peut  englober  d’autres  objets.  Un  objet  intégrant  d’autres  objets  est  qualifié de  conteneur.  C’est  le  cas  de  l’objet Application,  mais  c’est  aussi  vrai  pour  beaucoup d’autres objets du modèle d’objets d’Excel. Par exemple, un objet Workbook contient des objets Worksheet  (feuilles  de  calcul),  contenant  eux-mêmes  des  objets Range  (cellules  et plages de cellules).

Le modèle d’objets d’Excel.

Accéder aux objets

Le modèle d’objets détermine le chemin à emprunter pour accéder à un objet. Pour vous laver les dents, vous devez d’abord accéder à votre brosse à dents. Même si le processus est inconscient, vous identifiez l’objet Brosse à dents par son emplacement : il est situé dans la salle de bains, parmi les objets et produits de toilette. De la même façon, en Visual Basic, vous devez identifier un objet avant de pouvoir agir dessus (appliquer l’une de ses méthodes ou modifier la valeur de l’une de ses propriétés). Lorsque vous souhaitez vous laver les dents, vous pensez et suivez inconsciemment les étapes suivantes :

  1. Aller à la Salle de bains.
  2. Se diriger vers les Produits de toilette.
  3. Choisir parmi ceux-ci le dentifrice et s’en saisir.

Pour accéder à un objet Excel, vous opérerez selon le même mode, c’est-à-dire en partant de l’objet situé le plus haut dans la hiérarchie d’objets et en progressant dans celle-ci jusqu’à atteindre l’objet voulu.

Le  point  est  utilisé  comme  séparateur  entre  les  différentes  collections  et  objets  que  l’on rencontre avant d’atteindre l’objet voulu. La référence à un objet précis d’une collection se fait selon la syntaxe suivante :

Nom_Collection("Nom_Objet")

Ou

Le code VBA permettant d’accéder à l’objet Dentifrice serait :

Piece.ProduitsNettoyants("Dentifrice").

Prendre La première partie du code permet d’accéder à l’objet Dentifrice ; l’expression identifiant un  objet  est  appelée  référentiel  d’objet.  La  méthode Prendre  est  ensuite  appliquée  à  cet objet ain de s’en saisir.

Le code Visual Basic permettant d’appeler la feuille de classeur Excel nommée "MaFeuille", et située dans le classeur "MonClasseur.xlsm" (à condition que celui-ci soit ouvert), serait :

Application.Workbooks("MonClasseur.xlsm").Sheets("MaFeuille").Activate

On accède à l’objet Workbook MonClasseur de la collection Workbooks (tous les classeurs

ouverts), puis à la feuille nommée "MaFeuille" de la collection Sheets (toutes les feuilles de l’objet MonClasseur). Une fois le chemin d’accès à l’objet indiqué, on lui applique la méthode Activate pour l’activer

Info

Outre  leur  nom,  les  objets  d’une  collection  sont  identifiés  au  sein  de  la  collection  par  une  valeur  d’indice  représentant  leur  position  dans  la collection.
Cette valeur peut être utilisée pour renvoyer un objet d’une collection, selon la syntaxe suivante :
Nom_Collection(IndexObjet)
où
IndexObjet représente la position de l’objet dans la collection.
L’instruction suivante :
Workbooks(2).Activate
active le classeur Excel apparaissant en deuxième position dans le menu Fenêtre.

 

Poursuivons l’analogie. Si vous vous trouvez déjà dans la salle de bains au moment où vous décidez de vous laver les dents, vous n’avez pas besoin d’y accéder. Si vous avez déjà le nez De façon semblable, dans le code VBA, les objets de niveau hiérarchique supérieur à celui de l’objet que vous souhaitez atteindre peuvent parfois être ignorés. C’est toujours le cas pour l’objet Application. En effet, votre projet VBA étant stocké et donc exécuté à partir d’une application hôte, il est inutile de rappeler que vous êtes dans cette application.

L’expression :

Workbooks("MonClasseur.xlsm").Sheets("MaFeuille").Activate

Sufit  donc  à  activer  la  feuille  intitulée  "MaFeuille"  du  classeur  nommé  "MonClasseur.xlsm".

Selon  le  même  principe,  en  cas  d’absence  de  référentiel  d’objets,  la  collection  Sheets  concerne le classeur actif. Si MonClasseur est le classeur actif, on peut donc se dispenser de toute référence à cet objet. On obtient alors l’instruction suivante :

Sheets("MaFeuille").Activate


Objets de niveau Application

 

Add­ins (Add­in)                

 

L’ensemble des macros complémentaires, chargées ou non. Accessibles dans la boîte de dialogue Macro complémentaires (Outils > Macros complémentaires).

Dialogs (Dialog)                

Les boîtes de dialogue prédéfinies d’Excel

anguageSettings

 

Renvoie des informations sur les paramètres de langue utilisés dans

l’application.

Names (Name)                     

 

L’ensemble des objets Name de niveau Application. Un objet Name représente un nom défini pour une plage de cellules nommée

Windows (Window)

L’ensemble des fenêtres disponibles (accessibles via le menu Fenêtre).

Workbooks (Workbook)          

L’ensemble des classeurs ouverts.

Worksheetfunction

 

On utilise l’objet Worksheetfunction pour accéder aux fonctions de feuilles de calcul à partir de VBA. Faites suivre la propriété Worksheet­function d’un point, puis du nom de la fonction et de ses arguments entre parenthèses.


Objets de l’objet Workbook

Charts (Chart)                   

L’ensemble des feuilles graphiques de l’objet Workbook.

Names (Names)                     

L’ensemble des objets Name pour le classeur spécifié.

Styles (Style)                   

L’ensemble des styles disponibles dans un classeur. Il peut s’agir d’un style défini par l’utilisateur ou d’un style prédéfini, tel que les styles Millier, Monétaire ou Pourcentage (Format > Styles).

Worksheets (Worksheet)       

L’ensemble des feuilles de calcul de l’objet Workbook désigné.

Windows (Window)                

L’ensemble des fenêtres pour le classeur spécifié

 

Objets de l’objet Worksheet

 

Names (Name)                      

L’ensemble des objets Name pour la feuille de calcul spécifiée.

Range

 

Une cellule, une ligne, une colonne ou une plage de cellules, contiguës ou non, une plage de cellules 3D.

Comments (Comment)             

L’ensemble des commentaires pour l’objet Worksheet désigné

HPageBreaks (HPageBreak)    

Les sauts de page horizontaux de la feuille de calcul.

VPageBreaks (VPageBreaks)   

Les sauts de page verticaux de la feuille de calcul

Hyperlinks (Hyperlink)  

L’ensemble des liens hypertexte de la feuille de calcul.

Scenarios (Scenario)          

Les scénarios de la feuille de calcul.

OLEObjects (OLEObject)       

Les objets incorporés ou liés et les contrôles ActiveX de la feuille.

Outline              

Le plan de la feuille de calcul

PageSetup            

Les options de mise en page de la feuille

QueryTables (QueryTable)    

Les tables de requête de la feuille

PivotTables (PivotTable)    

Les tableaux et les graphiques croisés dynamiques.

ChartObjects (ChartObject) 

Les graphiques incorporés de la feuille de calcul spécifiée.


Objets de l’objet Range

 

Areas

Les plages de cellules contiguës à l’intérieur d’une sélection.

Borders (Border)                

 

Les bordures d’un objet Range. La collection Borders regroupe toujours quatre objets Border, représentant les quatre bordures de l’objet Range désigné.

Font                

Les attributs de police de caractères de l’objet Range spécifié.

Interior             

L’intérieur de l’objet Range

Characters

L’ensemble des caractères contenus par l’objet Range.

Name

Le premier nom dans la liste des noms de la plage de cellules précisée.

Style               

Le style de l’objet Range désigné.

FormatConditions 

 

L’ensemble des mises en forme conditionnelles de l’objet Range.(FormatCondition)

Hyperlinks (Hyperlink)       

L’ensemble des liens hypertexte de l’objet Range.

Validation

La validation des données pour la plage de cellules précisée

Comment

Le commentaire de cellule pour l’objet Range désigné.

 


Exemples d’utilisation des objets Excel

‘activation du classeur Classeur1
Windows("Classeur1").Activate
‘­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
‘sauvegarde du classeur actif
ActiveWorkbook.Save
‘nouveau classeur
Workbooks.Add
‘nouveau classeur fondé sur le modèle MonModele.xlt
‘­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
‘affectation du nom MaPlage à la palge de cellule A1:C20 de la feuille MaFeuille
ActiveWorkbook.Names.Add Name:=”hop”, RefersToR1C1:=”=Feuil1!R5C2:R12C3”
Names.Add Name:=”MaPlage”, RefersTo:=”=MaFeuille!$a$1:$c$20”
‘ajout d’un graphique
Charts.Add
‘affectation du type Histogramme empilé au graphique actif
ActiveChart.ChartType = xlColumnStacked
‘déinition de la source de données du graphique actif
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("C6:E10"), 
„ PlotBy :=xlColumns
‘déinition de l’emplacement du graphique actif
ActiveChart.Location Where:=xlLocationAsObject, Name:=”Feuil1”
‘déinition des titres du graphique actif
With ActiveChart
 .HasTitle = False
 .Axes(xlCategory, xlPrimary).HasTitle = False
 .Axes(xlValue, xlPrimary).HasTitle = False
End With
‘­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
‘sélection de la feuille Feuil1 du classeur actif
Sheets("Feuil1").Select
‘affectation du nom Graphique à la feuille Feuil1
Sheets("Feuil1").Name = "Graphique"
‘suppression des feuilles sélectionnées
ActiveWindow.SelectedSheets.Delete
‘­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
‘ajout d’un commentaire à la cellule D2 de la feuille active
Range("D2").AddComment
‘le commentaire n’est pas rendu visible
Range("D2").Comment.Visible = False
‘déinition du texte du commentaire de la cellule D2
Range("D2").Comment.Text Text:="Excellent !"
‘­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
‘ajout du contrôle ActiveX Calendar à la feuille active
ActiveSheet.OLEObjects.Add(ClassType:=”MSCAL.Calendar”, Link:=False, _
 DisplayAsIcon:=False).Select
‘­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
‘affectation du format monétaire US à la plage sélectionnée
Selection.NumberFormat = "#,##0.00 $"
‘déinition des attributs de police de la plage sélectionnée
With Selection.Font
 .Name = “Arial”
.FontStyle = “Gras”
 .Size = 8
 .ColorIndex = 46
End With
‘coloriage de l’intérieur de la plage sélectionnée
With Selection.Interior
 .ColorIndex = 6
 .Pattern = xlSolid
End With

Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces