I. Préparation du contrôle▲
Pour un formulaire qui contient un sous-formulaire ou cadre subFormGrid.
Option Explicit
Private WithEvents oGrid As CtrlGrid
Private Sub Form_Load() ' UserForm_Initialize pour Excel
Set oGrid = CreateTGLControl(CtrlGrid, Me.subFormGrid)
End SubII. Propriétés▲
La colonne Get indique si la propriété est disponible en lecture.
La colonne Set indique si la propriété est disponible en écriture.
| Propriété | Get | Let | Type | Explication |
|---|---|---|---|---|
| FontName | X | X | String | Nom de la police de caractères. |
| FontColor | X | X | Long | Couleur de la police de caractères. |
| FontColorSelected | X | X | Long | Couleur de la police de caractères d’une ligne sélectionnée. |
| FontSize | X | X | Long | Couleur de la police de caractères, en points. |
| BackColor | X | X | Long | Couleur de fond du contrôle. |
| MultipleSelection | X | X | Boolean | Définit si la sélection multiple est possible. |
| MultiSelectWithoutCtrl | X | X | Boolean | Définit si la sélection multiple se fait avec ou sans appui sur la touche Control. |
| SelectionColor | X | X | Long | Couleur de surlignage des éléments sélectionnés. |
| AntialisingLevel | X | X | ETGLAntialiase | Niveau de lissage des images. LibTGLplus propose plus de niveaux de lissage que LibTGL32. |
| FirstVisibleRow | X | X | Long | Numéro de la première ligne visible. Utilisez ensuite Refresh pour mettre à jour l'affichage. |
| LastVisibleRow | X | Long | Numéro de la dernière ligne visible. | |
| ActiveRow | X | CtrlGridRow | Ligne active. La ligne active n'est pas forcément sélectionnée. |
|
| ActiveColumn | X | CtrlGridColumn | Colonne active. | |
| CountVisible | X | Long | Nombre d'éléments affichables sur le contrôle. Dépend de la taille du contrôle et de la taille des éléments. |
|
| Rows | X | Collection d'objets CtrlGridRow | Collection de lignes contenues dans la grille. | |
| Columns | X | Collection d'objets CtrlGridColumn | Collection de colonnes contenues dans la grille. | |
| SelectedRow | X | CtrlGridRow | Ligne sélectionnée. Renvoie la première ligne trouvée. |
|
| MultipleSelectedRows | X | Collection d'objets CtrlGridRow | Collection de lignes sélectionnées. | |
| RowByPos | X | CtrlGridRow | Recherche une ligne par sa position. | |
| ColumnByName | X | CtrlGridColumn | Recherche une colonne par son nom. | |
| FixedColumns | X | X | Long | Nombre de colonnes figées. |
| ColumnHeader | X | X | Boolean | Définit si les en-têtes de colonnes sont affichés. |
| HeaderHeight | X | X | Long | Hauteur des en-têtes de colonnes, en pixels. |
| DisplayHorizontalLine | X | X | Long | Définit l'affichage des lignes horizontales de séparation. |
| RowHeight | X | X | Long | Hauteur d'un élément, en pixels. |
| RowSource | X | X | String |
Source de données de la grille. (Access uniquement) |
| MouseScrollStep | X | X | Long |
Pas de défilement de la molette de la souris. (Access uniquement) |
| Gdi | X | clGdiplus ou clGdi32 | Objet de gestion du graphisme du contrôle. | |
| ContainerControl | X | Access.SubForm ou MSForms.Frame |
Contrôle Container. Cadre ou Sous-Formulaire. |
|
| Container | Access.Form ou MSForms.Frame |
Container. Cadre ou Formulaire. |
III. Méthodes▲
III-A. ColumnAdd▲
Ajoute une colonne à la grille.
| Paramètre | Type | Explication |
|---|---|---|
| pName | String | Nom identifiant la colonne. |
| pType | ECtrlGridColumnType | Type de colonne. |
| pBefore | String | Nom de la colonne avant laquelle insérer la nouvelle colonne. |
| pAfter | String | Nom de la colonne après laquelle insérer la nouvelle colonne. |
| Valeur renvoyée | CtrlGridColumn | Colonne ajoutée. |
III-B. ColumnRemove▲
Retire une colonne.
| Paramètre | Type | Explication |
|---|---|---|
| pName | String | Nom identifiant la colonne. |
III-C. RowAdd▲
Ajoute une ligne à la grille.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de la ligne. Laisser vide pour générer automatiquement un identifiant unique. |
| Valeur renvoyée | CtrlGridRow | Ligne ajoutée. |
III-D. RowRemove▲
Retire une ligne de la grille.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant la ligne. |
III-E. Refresh▲
III-F. RefreshCell▲
Redessine une cellule.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne contenant la cellule à redessiner. |
| pColumn | String | Identifiant de la colonne à redessiner. |
III-G. Clear▲
III-H. AutoSize▲
Définit le redimensionnement automatique de toutes les colonnes.
III-I. HeaderAutoSize▲
Définit le redimensionnement automatique des colonnes en fonction des libellés de colonnes.
III-J. SortRowsByValue▲
Trie les lignes par valeur.
| Paramètre | Type | Explication |
|---|---|---|
| pValueName | String | Identifiant de la valeur sur laquelle s'effectue le tri. |
| pDescending | Boolean | Si Vrai, le tri est descendant, sinon il est ascendant par défaut. |
III-K. GetRowByValue▲
Recherche une ligne par une valeur.
| Paramètre | Type | Explication |
|---|---|---|
| pValueName | String | Identifiant de la valeur sur laquelle s'effectue la recherche. |
| pValue | Variant | Valeur à rechercher. |
| Valeur renvoyée | CtrlImageListElement | Le premier élément trouvé est renvoyé. Si aucun élément n'est trouvé, la fonction renvoie Nothing |
III-L. Requery▲
Pour Access.
Recharge la grille avec les données de la requête SQL définie par la propriété RowSource.
III-M. ImageListAdd▲
Ajoute une image à la liste d'images du contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
| pFile | String | Chemin du fichier de l'image. |
| pThumbNail | Boolean | Si Vrai, utilise la miniature Exif pour un affichage plus rapide. Ne fonctionne qu'avec Gdi+. |
| pIcon | ETGLIconType | Type d'icône à charger. |
| pPersistent | String | Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
| Valeur renvoyée | Boolean | Vrai si l'image a été ajoutée avec succès. |
III-N. ImageListAddFromArray▲
Ajoute une image à la liste d'images du contrôle.
L'image est définie par le contenu d'un tableau de byte.
Pour Gdi32, le tableau contient un bitmap tel que défini dans la propriété PictureData d'un contrôle image.
Pour Gdi+, le tableau contient une image telle qu'on peut la trouver dans un fichier (jpeg, png, ...).
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
| pArray | Tableau de Byte | Contenu de l'image. |
| pPersistent | String | Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
| Valeur renvoyée | Boolean | Vrai si l'image a été ajoutée avec succès. |
III-O. ImageListAddFromPicture▲
Ajoute une image à la liste d'images du contrôle.
L'image est définie par une image et un masque gdi32.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
| pPicture | Long | Bitmap gdi32 contenant l'image. |
| pMask | Long | Bitmap gdi32 contenant le masque. |
| pDelete | Boolean | Si Vrai, les bitmaps utilisés sont ensuite supprimés. |
| pPersistent | Boolean | Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
| Valeur renvoyée | Boolean | Vrai si l'image a été ajoutée avec succès. |
Exemple :
With Application.CommandBars("Database").Controls(1)
oList.ImageListAddFromPicture "monbouton", .Picture, .Mask
End WithIII-P. ImageListAddFromControl▲
Ajoute une image à la liste d'images du contrôle.
L'image est définie par le contenu d'un contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
| pControl | Control | Contrôle contenant l’image |
| pPersistent | String | Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
| Valeur renvoyée | Boolean | Vrai si l'image a été ajoutée avec succès. |
III-Q. ImageListAddFromAttachment▲
A partir d’Access 2007.
Ajoute une image à la liste d'images du contrôle.
L'image est définie par le contenu d’un champ pièce-jointe.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
| pTable | String | Nom de la table |
| pField | String | Nom de la colonne |
| pWhere | String | Clause where |
| pPersistent | String | Si Vrai, l'image est persistante et ne sera pas supprimée par la fonction Clear. |
| Valeur renvoyée | Boolean | Vrai si l'image a été ajoutée avec succès. |
III-R. ImageListExists▲
Teste si une image existe dans la liste d'images du contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
| Valeur renvoyée | Boolean | Vrai si l'image existe. |
III-S. ImageListRemove▲
Retire une image de la liste d'images du contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pKey | String | Identifiant de l'image. |
Une erreur est levée si l'identifiant n'est pas valide (image inexistante).
III-T. ImageListRemoveAll▲
Retire toutes les images de la liste d'images du contrôle.
Les images qui ont été ajoutées avec le paramètre pPersistent = Vrai ne sont pas retirées.
IV. Evénements▲
IV-A. SelectionChanged▲
S’exécute lorsque la sélection des lignes est modifiée.
IV-B. ActiveRowChanged▲
S'exécute sur changement de la ligne active.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne active. Nothing si aucune ligne n'est active. |
IV-C. BeforeDrawCell▲
S'exécute avant dessin d'une cellule de la grille.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRowBeforeDraw | Ligne. |
| pColumn | CtrlGridColumnBeforeDraw | Colonne. |
Les modifications apportées à la ligne ou à la colonne ne sont pas définitives.
Elles ne sont valables que le temps du dessin de cette cellule.
IV-D. MouseMove▲
S'exécute sur déplacement de la souris sur le contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne survolée par la souris. |
| pColumn | CtrlGridColumn | Colonne survolée par la souris. |
| Button | Integer | Bouton de la souris appuyé. |
| Shift | Integer | Etat des touches Shift, Alt et Ctrl. |
| X | Single | Position de la souris sur le contrôle, en twips. |
| Y | Single | Position de la souris sur le contrôle, en twips. |
IV-E. MouseDown▲
S'exécute sur souris appuyée sur le contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne survolée par la souris. |
| pColumn | CtrlGridColumn | Colonne survolée par la souris. |
| Button | Integer | Bouton de la souris appuyé. |
| Shift | Integer | Etat des touches Shift, Alt et Ctrl. |
| X | Single | Position de la souris sur le contrôle, en twips. |
| Y | Single | Position de la souris sur le contrôle, en twips. |
IV-F. MouseUp▲
S'exécute sur souris relâchée sur le contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne survolée par la souris. |
| pColumn | CtrlGridColumn | Colonne survolée par la souris. |
| Button | Integer | Bouton de la souris relâché. |
| Shift | Integer | Etat des touches Shift, Alt et Ctrl. |
| X | Single | Position de la souris sur le contrôle, en twips. |
| Y | Single | Position de la souris sur le contrôle, en twips. |
IV-G. MouseDblClick▲
S'exécute sur double-clic de la souris sur le contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne survolée par la souris. |
| pColumn | CtrlGridColumn | Colonne survolée par la souris. |
| Button | Integer | Bouton de la souris appuyé. |
| Shift | Integer | Etat des touches Shift, Alt et Ctrl. |
| X | Single | Position de la souris sur le contrôle, en twips. |
| Y | Single | Position de la souris sur le contrôle, en twips. |
IV-H. KeyDown▲
S'exécute sur touche appuyée sur le contrôle.
| Paramètre | Type | Explication |
|---|---|---|
| pRow | CtrlGridRow | Ligne survolée par la souris. |
| pColumn | CtrlGridColumn | Colonne survolée par la souris. |
| KeyCode | Integer | Code de la touche appuyée. |
| Shift | Integer | Etat des touches Shift, Alt et Ctrl. |
V. Exemple▲
Pour ACCESS :
Pour un formulaire qui contient un sous-formulaire subFormGrid.
Avec une table TGridTable :

Option Compare Database
Option Explicit
' Objet Grille
Private WithEvents oGrid As CtrlGrid
Private Sub Form_Load()
' Initialise l'objet
Set oGrid = CreateTGLControl(CtrlGrid, Me.subFormGrid)
' Affiche les en-têtes
oGrid.ColumnHeader = True
' Source de données
oGrid.RowSource = "select false as sel,* from TGridTable"
' Ajout d'une colonne de sélection (checkbox) avec le champ sel en source
With oGrid.ColumnByName("sel")
.TypeColumn = TGLColumnTypeCheckBox
.AllowResize = False
.Caption = ""
.DisplayVertLine = False
End With
' Champ notation
oGrid.ColumnByName("note").TypeColumn = TGLColumnTypeRating
' Champ progression
oGrid.ColumnByName("progression").TypeColumn = TGLColumnTypeProgress
oGrid.ColumnByName("progression").DisplayProgressPercent = True
' Champ Valide (case à cocher)
oGrid.ColumnByName("valide").Width = -1
oGrid.ColumnByName("valide").HorzAlign = TGLAlignHorzCenter
' Date validité en gras
oGrid.ColumnByName("datevalid").Bold = True
' Nom en italique
oGrid.ColumnByName("nom").Italic = True
' Exécute la requête et rempli la grille
oGrid.Requery
' Colonnes auto-redimensionnées
oGrid.AutoSize
' En-têtes auto-redimensionnés
oGrid.HeaderAutoSize
' Redimensionne la colonne de notation
oGrid.ColumnByName("note").Width = 80
' Ajout d'un bouton dans la dernière colonne
With oGrid.ColumnAdd("Button", TGLColumnTypeImage)
.Width = 60
.AllowResize = False
.MouseCursor = IDC_HAND
.ConstantValue = "monbouton"
End With
' Couleur de fond
oGrid.BackColor = RGB(230, 230, 255)
' Couleur de sélection (aucune couleur)
oGrid.SelectionColor = -1
' Sélection multiple acceptée (touche CTRL)
oGrid.MultipleSelection = True
' Les deux premières colonnes sont fixes
oGrid.FixedColumns = 2
' Ajout de l'image du bouton à partir d'une image de menu
' Référence "Microsoft Office XX Object Library" requise
Dim o As CommandBarControl
oGrid.ImageListAddFromPicture "monbouton", CommandBars("Database").Controls(1).Picture, _
CommandBars("Database").Controls(1).Mask
' Hauteur des lignes
oGrid.RowHeight = 40
' Dessine la grille
oGrid.Refresh
End Sub
'Avant affichage d'un cellule
Private Sub oGrid_BeforeDrawCell(pRow As CtrlGridRowBeforeDraw, pColonne As CtrlGridColumnBeforeDraw)
Select Case pColonne.Name
Case "nb" ' Nombre à afficher en rouge ou vert
If pRow.Value(pColonne.Name) < 300 Then pColonne.FillColor = vbRed Else pColonne.FillColor = vbGreen
Case "sel" ' Case coché si ligne sélectionnée
pRow.Value("sel") = pRow.Selected
End Select
End Sub
' Sur click souris
Private Sub oGrid_MouseDown(pRow As CtrlGridRow, pCol As CtrlGridColumn, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not pCol Is Nothing Then
If pCol.Name = "Button" Then
' Si click sur bouton => affiche un message avec le nom de la ligne cliquée
MsgBox pRow.Value("Nom")
End If
End If
End SubRésultat obtenu :





