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

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 :
Le fichier ExcelAgenda Rdv pour la gestion des rendez-vous avec prise en charge des macros VBA.
IV. Le module de classe à télécharger▲
La classeclAgenda clAgenda au format cls.