Documentation du module de classe clAgenda

Denis Hulo

Objectif : Présenter le module de classe pour Excel clAgenda, accompagné d'une application.

- Titre : Documentation du module de classe clAgenda

- Auteur : Denis Hulo

- Parution : 7 octobre 2016

- Licence : Copyright ® 2016 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Le module de classe clAgenda

- II-A. Les propriétés de paramétrage de l'apparence du planning

- II-A-1. Row

- II-A-2. Col

- II-A-3. Rows

- II-A-4. Cols

- II-A-5. RowsHeight

- II-A-6. ColsWidth

- II-A-7. BackColor

- II-A-8. GridColor

- II-A-9. FieldsRowsWidth

- II-A-10. FieldsRowsColor

- II-A-11. FieldsColsWidth

- II-A-12. FieldsColsColor

- II-B. Les propriétés de paramétrage temporel de l'agenda

- II-B-1. StartDate

- II-B-2. StartTime

- II-B-3. EndTime

- II-B-4. TimeLine

- II-B-5. CurrentDate

- II-B-6. CurrentTime

- II-C. Les propriétés pour relier l'agenda à une feuille Excel

- II-C-1. Sheet

- II-D. Les méthodes de création et d'initialisation de l'agenda

- II-D-1. Create

- II-D-2. Clear

- II-E. Les méthodes d'affichage du texte et des rendez-vous sur l'agenda

- II-E-1. ShowRdv

- II-E-2. ShowRectRdv

- II-E-3. WriteFieldRow

- II-E-4. WriteFieldCol

- II-F. Comment ajouter une méthode à la classe

- III. Exemple d'intégration du module de classe

- III-A. Agenda pour la gestion des rendez-vous

- IV. Le module de classe à télécharger

I - Introduction

Nous présenterons ici le module de classe clAgenda permettant de gérer un agenda dans un classeur Excel. Ce type d'agenda a l'avantage d'être très souple et peut être paramétré en VBA sur une période de 8, 10, 12 heures, etc..., avec des tranches horaires de 10, 15, 30, 60 minutes, et peut comporter jusqu'à environ 50 lignes pour 7 colonnes. Ce module permet donc la mise en place d'une gestion d'agenda sous Excel.

Comme illustration, nous proposerons à la fin de l'article un exemple d'intégration de ce module dans un classeur Excel.

II - Le module de classe clAgenda

La classe clAgenda permet de formater une feuille Excel en agenda avec les en-têtes de lignes et de colonnes, mais aussi de fusionner sur ce planning des cellules définissant les rendez-vous.

Vous pouvez bien sûr ajouter de nouvelles propriétés ou de nouvelles méthodes, ou encore modifier les propriétés existantes, si vous souhaitez inclure de nouvelles fonctionnalités à vos plannings. Nous donnerons à ce sujet un exemple simple d'ajout d'une méthode à la fin de cette section.

II-A - Les propriétés de paramétrage de l'apparence du planning

Ces propriétés vont permettre de paramétrer la mise en forme du planning au moment de sa création.

II-A-1 - Row

Vous pouvez utiliser la propriété Row pour définir ou connaître la ligne sélectionnée sur l'agenda. Entier long en lecture/écriture.

Exemple :

Le code suivant définit la ligne 3 comme ligne sélectionnée sur le planning.

obAgenda.Row=3

II-A-2 - Col

Vous pouvez utiliser la propriété Col pour définir ou connaître la colonne sélectionnée sur le planning. Entier long en lecture/écriture.

Exemple :

Le code suivant définit la colonne 4 comme colonne sélectionnée sur l'agenda.

obAgenda.Col=4

II-A-3 - Rows

Vous pouvez utiliser la propriété Rows pour définir ou connaître le nombre de lignes du planning. Entier long en lecture/écriture.

Exemple :

Le code suivant définit 30 lignes pour le planning.

obAgenda.Rows=30

II-A-4 - Cols

Vous pouvez utiliser la propriété Cols pour définir ou connaître le nombre de colonnes de l'agenda. Entier long en lecture/écriture.

Exemple :

Le code suivant définit 7 colonnes pour le planning.

obAgenda.Cols=7

II-A-5 - RowsHeight

Vous pouvez utiliser la propriété RowsHeight pour ajuster la hauteur des lignes du planning à des dimensions spécifiques. Entier en lecture/écriture.

Exemple :

Le code suivant ajuste la hauteur des lignes de l'agenda à 450 twips.

obAgenda.RowsHeight=450

II-A-6 - ColsWidth

Vous pouvez utiliser la propriété ColsWidth pour ajuster la largeur des colonnes du planning à des dimensions spécifiques. Entier long en lecture/écriture.

Exemple :

Le code suivant ajuste la largeur des colonnes du planning à 125 twips.

obAgenda.ColsWidth=125

II-A-7 - BackColor

Utiliser la propriété BackColor pour spécifier la couleur de fond du planning. Long en lecture/écriture.

Exemple :

Le code suivant colorie en blanc le fond de l'agenda.

obAgenda.BackColor=vbWhite

Le code suivant colorie en jaune clair le fond de l'agenda.

obAgenda.BackColor = RGB(255, 249, 139)

II-A-8 - GridColor

Vous pouvez utiliser la propriété GridColor pour spécifier la couleur du quadrillage du planning. Long en lecture/écriture.

Exemple :

Le code suivant colorie en noir la grille du planning.

obAgenda.GridColor=vbBlack

II-A-9 - FieldsRowsWidth

Utiliser la propriété FieldsRowsWidth pour ajuster la largeur des en-têtes de lignes à des dimensions spécifiques. Entier long en lecture/écriture.

Exemple :

Le code suivant ajuste la largeur des en-têtes de lignes à gauche du planning à 100.

obAgenda.FieldsRowsWidth=100

II-A-10 - FieldsRowsColor

Vous pouvez utiliser la propriété FieldsRowsColor pour définir la couleur de fond pour les en-têtes de lignes situés à gauche du planning. Entier long en lecture/écriture.

Exemple :

Le code suivant colorie en gris la colonne à gauche de l'agenda.

obAgenda.FieldsRowsColor=vbGrey

II-A-11 - FieldsColsWidth

Utiliser la propriété FieldsColsWidth pour ajuster la largeur des en-têtes de colonnes à des dimensions spécifiques. Entier long en lecture/écriture.

Exemple :

Le code suivant ajuste la largeur des en-têtes de colonnes en haut du planning à 100.

obAgenda.FieldsColsWidth=100

II-A-12 - FieldsColsColor

Vous pouvez utiliser la propriété FieldsColsColor pour définir la couleur de fond pour les en-têtes de colonnes situés en haut du planning. Entier long en lecture/écriture.

Exemple :

Le code suivant colorie en gris la ligne en haut (en-têtes de colonnes) de l'agenda.

obAgenda.FieldsColsColor=vbGrey

II-B - Les propriétés de paramétrage temporel de l'agenda

Ces propriétés vont permettre de définir la période et la tranche horaire sur le planning.

II-B-1 - StartDate

Vous pouvez utiliser la propriété StartDate pour définir ou connaître la date du 1er jour sur l'agenda. Date en lecture/écriture.

Exemple :

Le code suivant définit la date de début au 17 octobre 2016 sur le planning.

obAgenda.StartDate=#10/17/2016#

II-B-2 - StartTime

Vous pouvez utiliser la propriété StartTime pour définir ou connaître l'heure du début de la journée sur l'agenda. Date en lecture/écriture.

Exemple :

Le code suivant définit l'heure de début de la journée à 8 heures.

obAgenda.StartTime=#08:00 AM#

II-B-3 - EndTime

Vous pouvez utiliser la propriété EndTime pour définir ou connaître l'heure de fin de la journée sur l'agenda. Date en lecture/écriture.

Exemple :

Le code suivant définit l'heure de fin de la journée à 20 heures.

obAgenda.EndTime=#08:00 PM#

II-B-4 - TimeLine

Vous pouvez utiliser la propriété TimeLine pour définir ou connaître la durée en minutes de la tranche horaire sur l'agenda. Entier long en lecture/écriture.

Exemple :

Le code suivant définit la durée de la tranche horaire à 30 minutes.

obAgenda.TimeLine=30

II-B-5 - CurrentDate

Vous pouvez utiliser la propriété CurrentDate pour définir ou connaître la date choisie sur l'agenda. Date en lecture/écriture.

Exemple :

Le code suivant définit la date courante au 17 octobre 2016 sur le planning.

obAgenda.CurrentDate=#10/17/2016#

II-B-6 - CurrentTime

Vous pouvez utiliser la propriété CurrentTime pour définir ou connaître l'heure cliquée sur l'agenda. Date en lecture/écriture.

Exemple :

Le code suivant définit l'heure courante à 15 heures.

obAgenda.CurrentTime=#03:00 PM#

II-C - Les propriétés pour relier l'agenda à une feuille Excel

Elles permettent de définir la feuille sur laquelle on va créer et paramétrer l'agenda.

II-C-1 - Sheet

Utiliser la propriété Sheet pour spécifier la feuille sur laquelle on va créer le planning.

Exemple :

Le code suivant spécifie la feuille Agenda.

set obAgenda.sheet = Agenda

II-D - Les méthodes de création et d'initialisation de l'agenda

II-D-1 - Create

Cette méthode créée l'agenda d'origine (grille vide) avec les en-têtes de lignes et de colonnes.

Exécution du code :

obAgenda.Create

II-D-2 - Clear

Cette méthode efface les rdv de l'agenda pour revenir à la grille vide avec les en-têtes de lignes et de colonnes.

Exécution du code :

obAgenda.Clear

II-E - Les méthodes d'affichage du texte et des rendez-vous sur l'agenda

II-E-1 - ShowRdv

Cette méthode permet d'afficher un rendez-vous correspondant à sa date (DateRdv) et à son heure de début (StartTimeRdv) et de fin (EndTimeRdv).

Paramètre

Type

Explication

DateRdv

Date/Heure

Date du rendez-vous ou de l'événement

StartTimeRdv

Date/Heure

Heure de début du rendez-vous ou de l'événement

EndTimeRdv

Date/Heure

Heure de fin du rendez-vous ou de l'événement

Text

String

Texte à écrire. Peut contenir des retours à la ligne (vbCrLf).

BackColor

Long

Couleur de fond.

BorderColor

Long

Couleur de la bordure.

BorderWidth

Long

Epaisseur de la bordure.

Exemple :

Le code suivant affiche le rendez-vous de "Dupont" positionné entre 9 heures et 10 heures 30.

obAgenda.ShowRdv obAgenda.StartDate + 2, #9:00:00 AM#, #10:30:00 AM#, "DUPONT",  vbGreen, vbBlack, 1

II-E-2 - ShowRectRdv

Cette méthode permet d'afficher un rendez-vous dans un rectangle délimité par les coordonnées de début (Row1,Col1), correspondant à la région en haut à gauche, et les coordonnées de fin (Row2,Col2), correspondant à la région en bas à droite.

Paramètre

Type

Explication

Row1,Col1,Row2,Col2

Long

Coordonnées du rectangle

Text

String

Texte à écrire. Peut contenir des retours à la ligne (vbCrLf).

BackColor

Long

Couleur de fond.

BorderColor

Long

Couleur de la bordure.

BorderWidth

Long

Epaisseur de la bordure.

Exemple :

Le code suivant écrit le texte "Dupont" dans un rectangle vert de coordonnées (3, 3, 5, 3).

obAgenda.ShowRectRdv 1, 3, 3, 5, 3, 1, 1, "DUPONT", 9, 2, 1, True, vbGreen, vbBlack, 1

Aperçu du rectangle du rendez-vous sur l'agenda

II-E-3 - WriteFieldRow

Cette méthode permet d'écrire du texte dans l'en-tête de la ligne d'indice Row.

Paramètre

Type

Explication

Row

Integer

Indice de l'en-tête de colonne

Text

String

Texte à écrire. Peut contenir des retours à la ligne (vbCrLf).

TextSize

Long

Taille du texte en pixels.

AlignHoriz

Long

Alignement horizontal (1 : Gauche, 2 : Centre, 3 : Droite).

AlignVert

Long

Alignement vertical (1 : Haut, 2 : Centre, 3 : Bas).

FontBold

Boolean

Caractères en gras (oui, non).

Exemple :

Le code suivant écrit le texte "08:00" dans l'en-tête de la 1ère ligne.

obAgenda.WriteFieldRow 1, "08:00", 9, 2, 1, True

II-E-4 - WriteFieldCol

Cette méthode permet d'écrire du texte dans l'en-tête de la colonne d'indice Col.

Paramètre

Type

Explication

Col

Integer

Indice de l'en-tête de colonne

Text

String

Texte à écrire. Peut contenir des retours à la ligne (vbCrLf).

TextSize

Long

Taille du texte en pixels.

AlignHoriz

Long

Alignement horizontal (1 : Gauche, 2 : Centre, 3 : Droite).

AlignVert

Long

Alignement vertical (1 : Haut, 2 : Centre, 3 : Bas).

FontBold

Boolean

Caractères en gras (oui, non).

Exemple :

Le code suivant écrit le texte "Lundi" dans l'en-tête de la 1ère colonne.

obAgenda.WriteFieldCol 1, "Lundi", 9, 2, 1, True

II-F - Comment ajouter une méthode à la classe

Pour ceux qui souhaitent enrichir la classe de nouvelles propriétés ou de nouvelles méthodes pour ajouter des fonctionnalités au planning, je vous propose un exemple simple : ajouter une méthode pour colorier la case située à l'intersection d'une ligne et d'une colonne.

Pour ce faire, il nous faut ajouter la procédure ColorSquare qui devient automatiquement une méthode pour la classe. Le code devrait donc ressembler à celà :

'----------------------------------------------------------------------------------------
' Colorie la case d'indices (Row, Col) sur le planning
'----------------------------------------------------------------------------------------
Public Sub ColorSquare(Row As Integer, Col As Integer, BackColor As Long)

With sheet.Cells(Row, Col)
.BackColor = BackColor
End With

End Sub

Ajouter le code à la suite des propriétés et méthodes, dans le module de classe clAgenda.

Exemple d'utilisation :

Le code suivant colorie en vert la cellule située à l'intersection de la ligne 3 et de la colonne 4 du planning.

obAgenda.ColorSquare 3, 4, vbGreen

III - Exemple d'intégration du module de classe

III-A - Agenda pour la gestion des rendez-vous

Intégration d'un agenda dans un classeur pour gérer des rendez-vous :

Aperçu de l'agenda hebdomadaire

Le fichier Excel pour la gestion des rendez-vous avec prise en charge des macros VBA.

IV - Le module de classe à télécharger

La classe clAgenda au format cls.