Utiliser le contrôle ListView en VBA Excel
Date de publication : 07/10/2006 , Date de mise à jour : 16/11/2007
Par
SilkyRoad (silkyroad.developpez.com)
Ce document décrit l'utilisation du contrôle ListView dans un UserForm, en VBA Excel.
Le contrôle ListView fait partie des Common Controls Visual Basic 6.0 (mscomctl.ocx).
Toutes les procédures ont été testées à partir d'Excel2002.
I. Description
II. Exemples d'utilisation
II-A. Alimenter une ListView
II-B. Lire et Modifier le contenu des lignes
II-C. Utiliser les clés (Key)
II-D. Supprimer des lignes
II-E. La mise en forme des données
II-F. Trier les colonnes
II-G. La multi sélection
II-H. Affichage dans la zone visible
II-I. Images et icônes
II-J. Identifier l'utilisation du clic droit
III. Téléchargement
I. Description
Le contrôle ListView permet d'afficher des informations sous différentes présentations. Les données visualisées peuvent
être issues de sources très diverses: La saisie d'un formulaire, le contenu de fichiers, le résultat de requêtes
SQL...
Quatre modes d'affichage sont disponibles:
Icone (Constante lvwIcon)
Petit Icone (Constante lvwSmallIcon)
Liste (Constante lvwList)
Détails (Constante lvwReport)
Une fois stockées dans la ListView, les données sont facilement manipulables.
Il est possible de changer le mode d'affichage, trier les colonnes, supprimer
ou ajouter des lignes, appliquer une mise en forme, réexporter le contenu
de la ListView...
Des images et icônes peuvent être associées aux items d'une ListView.
Les chapitres suivants présentent principalement des exemples en mode "Détails".
II. Exemples d'utilisation
II-A. Alimenter une ListView
Chaque ligne d'une ListView peut être définie en 2 parties:
ListView1.ListItems(x) spécifie la ligne x et la 1ere colonne de cette ligne.
ListView1.ListItems(x).ListSubItems(y) permet de spécifier les
colonnes adjacentes. Par exemple
ListView1.ListItems(5).ListSubItems(1) indique la 2eme colonne dans la 5eme ligne de la
ListView.
La syntaxe pour ajouter une ligne:
ListView1.ListItems.Add [Index], [Key], [Text], [Icon], [SmallIcon]
[Index]: Facultatif.
Indique le numéro de ligne ou doit être
ajouté la nouvel élément. Les données sont ajoutées à la suite de la dernière ligne si
l'argument n'est pas spécifié.
[Key]: Facultatif.
Attribue une clé unique qui fiabilise
l'identification des lignes.
[Text]: Facultatif.
Indique le texte qui va s'afficher dans la première
colonne de la ListView.
[Icon]: Facultatif.
Spécifie l'image qui doit s'afficher quand
la ListView est en mode lvwIcon.
[SmallIcon]: Facultatif.
Spécifie l'image qui doit s'afficher
quand la ListView est en mode lvwSmallIcon, lvwList ou lvwReport.
La syntaxe pour ajouter un sous élément (Les colonnes de droite dans la ligne spécifiée):
ListView1.ListItems(1).ListSubItems.Add [Index], [Key], [Text], [ReportIcon], [TooltipText]
1:
Spécifie le numéro de ligne dans la ListView.
[Index]: Facultatif.
Indique le numéro de colonne pour l'ajout
d'une donnée. La valeur 1 correspond à la 2eme colonne d'une ListView.
[Key]: Facultatif.
Attribue une clé unique qui fiabilise l'identification des lignes.
[Text]: Facultatif.
Indique le texte qui va s'afficher dans la ListView.
[ReportIcon]: Facultatif.
Permet d'afficher un icône ou une image dans le sous élément spécifié.
[TooltipText]: Facultatif.
Permet d'ajouter une infobulle dans le
sous élément spécifié.
La syntaxe pour définir les colonnes:
Pour ajouter des éléments dans les colonnes, vous devez préalablement définir leur nombre,
dimensions et textes d'entête:
ListView1.ColumnHeaders.Add [Index], [Key], [Text], [Width], [Alignment], [Icon]
[Index]: Facultatif
[Key] Facultatif.
Attribue une clé unique qui fiabilise l'identification des entêtes.
[Text]: Facultatif.
Spécifie le texte qui va s'afficher dans l'entête.
[Width]: Facultatif.
Spécifie la largeur de la colonne. La valeur par défaut est de 72 points.
[Alignment]: Facultatif.
Spécifie l'alignement dans la colonne. Les constantes disponibles:
lvwColumnLeft(Valeur par défaut), lvwColumnCenter, lvwColumnRight.
[Icon]: Facultatif.
Spécifie l'image qui doit s'afficher dans l'entête.
Ce premier exemple montre le principe de remplissage d'une Listview.
| Vba |
Private Sub UserForm_Initialize()
With ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom", 80
.Add , , "Ville", 50
.Add , , "Age", 50
End With
With .ListItems
.Add , , "Riri"
.Add , , "Fifi"
.Add , , "Loulou"
End With
.ListItems(1).ListSubItems.Add , , "Ville01"
.ListItems(1).ListSubItems.Add , , 30
.ListItems(2).ListSubItems.Add , , "Ville02"
.ListItems(2).ListSubItems.Add , , 27
.ListItems(3).ListSubItems.Add , , "Ville03"
.ListItems(3).ListSubItems.Add , , 41
End With
ListView1.View = lvwReport
End Sub
|
Cette macro est un exemple simplifié et il est bien entendu possible de créer des boucles
afin d'optimiser le remplissage.
II-B. Lire et Modifier le contenu des lignes
Une fois affichées dans le contrôle ListView, les données peuvent être lues et modifiées par
macro.
Cette procédure boucle sur l'ensemble de la ListView et transfére les
informations dans une feuille de calcul.
| Vba |
Private Sub CommandButton2_Click()
Dim i As Integer, j As Integer
For i = 1 To ListView1.ListItems.Count
Cells(i, 1) = ListView1.ListItems(i).Text
For j = 1 To ListView1.ColumnHeaders.Count - 1
Cells(i, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
Next j
Next i
End Sub
|
Les informations contenues dans la ListView peuvent facilement être modifiées:
Par exemple, changer le texte dans la 3eme colonne de la première ligne.
| Vba |
ListView1.listItems(1).listSubItems(2).Text = "Test"
|
Un autre exemple pour modifier le texte dans la 1ere colonne de la 4eme ligne.
| Vba |
ListView1.ListItems(4).Text = "Les données"
|
Les données de la 1ere colonne peuvent être modifiées manuellement dans le contrôle ListView.
Vous pouvez empêcher la modification manuelle des données en spécifiant la
valeur 1 (lvwManual) dans la propriété LabelEdit.
II-C. Utiliser les clés (Key)
Vous avez vu dans le chapitre II-A qu'il est possible d'attribuer des clés uniques aux éléments
d'une ListView (Items, SubItems, Entêtes de colonnes). Quelques soient les déplacements effectués
(suite à un tri par exemple), vos données peuvent être retrouvées à partir de cette clé d'identification.
Cet exemple récupère le contenu de l'Item auquel est attribué la clé "K20".
Nota:
La procédure renvoie une erreur si la clé n'existe pas dans la ListView.
| Vba |
MsgBox ListView1.ListItems("K20").Text
|
Et pour récupérer un sous élément spécifique "K21" dans l'élément "K20":
| Vba |
MsgBox ListView1.ListItems("K20").ListSubItems("K21").Text
|
Vous pouvez aussi récupérer la clé d'une ligne.
La procédure renvoie une chaine vide si aucune clé n'est attribuée.
| Vba |
MsgBox ListView1.ListItems(2).Key
|
Cette macro permet d'attribuer une clé au ListItem de la 2eme ligne. Si une clé existait
dèja pour cet élément, celle ci sera écrasée. Par contre si vous essayez d'attribuer une clé
déja associée à un autre élément, la procédure renvoie un message d'erreur: Ce qui est logique
puisque la clé doit être unique.
| Vba |
Private Sub CommandButton2_Click()
MsgBox ListView1.ListItems(2).Key
ListView1.ListItems(2).Key = "MaNouvelleClé"
MsgBox ListView1.ListItems(2).Key
End Sub
|
II-D. Supprimer des lignes
Vous avez la possibilité de supprimer des lignes précises dans la ListView.
| Vba |
ListView1.ListItems.Remove 3
|
| Vba |
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
|
Vous pouvez aussi effacer toutes les données d'une ListView.
| Vba |
ListView1.ListItems.Clear
|
II-E. La mise en forme des données
Il est possible de modifier la mise en forme de la ListView afin de
personnaliser la visualisation des informations:
Cet exemple modifie la couleur du texte dans le 2eme sous élément de la 1ere ligne.
| Vba |
ListView1.listitems(1).ListSubItems(2).ForeColor = RGB(100, 0, 100)
|
Appliquer un format dans une "cellule de la listview
| Vba |
ListView1.ListItems(2).ListSubItems.Add , , Format(1234567.89, "##,##0.00")
|
Vous pouvez utiliser la propriété FullRowSelect pour surligner la ligne entière
lors d'une sélection.
| Vba |
ListView1.FullRowSelect = True
|
Le propriété Gridlines permet d'afficher un quadrillage dans la ListView.
Cette propriété est très utile pour améliorer la lisibilité des données.
| Vba |
ListView1.Gridlines = True
|
Une option du contrôle permet d'afficher des cases à cocher dans la colonne de gauche.
| Vba |
Me.ListView1.CheckBoxes = True
|
Vous pouvez ensuite indiquer le statut par défaut de la CheckBox. Si vous ne spécifiez
pas ce paramètre, la case ne sera pas visible tout de suite: Vous devrez cliquer sur le
bord gauche de la Ligne pour faire apparaitre la CheckBox.
| Vba |
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).Checked = False
Next i
|
Ensuite cet exemple utilise l'évènement ItemCheck pour identifier quand une checkBox
est cochée ou décochée. La mise en forme est modifiée (couleur bleue et en gras).
| Vba |
Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
Dim j As Integer
If Item.Checked = True Then
Item.ForeColor = RGB(0, 0, 255)
Item.Bold = True
For j = 1 To Item.ListSubItems.Count
Item.ListSubItems(j).ForeColor = RGB(0, 0, 255)
Item.ListSubItems(j).Bold = True
Next j
Else
Item.ForeColor = RGB(1, 0, 0)
Item.Bold = False
For j = 1 To Item.ListSubItems.Count
Item.ListSubItems(j).ForeColor = RGB(1, 0, 0)
Item.ListSubItems(j).Bold = False
Next j
End If
End Sub
|
Vous pouvez choisir de masquer les en-têtes de colonnes en utilisant la propriété HideColumnHeaders.
| Vba |
ListView1.HideColumnHeaders = True
|
La macro suivante spécifie que les données doivent être centrées dans la colonne créée.
| Vba |
ListView1.ColumnHeaders.Add , , "Ville", 50, lvwColumnCenter
|
La propriété AllowColumnReorder autorise le déplacement des colonnes les unes par rapport aux
autres, par un glisser/déposer.
| Vba |
ListView1.AllowColumnReorder = True
|
II-F. Trier les colonnes
Les ListView possèdent une propriété Sorted.
Si vous placez cette propriété à True, les Items de la première colonne seront triés
par défaut. Vous pouvez spécifier la colonne de tri en indiquant une valeur dans la
propriété SortKey. L'index de la première colonne est 0.
La propriété SortOrder définit le sens du tri: lvwAscending
(Croissant) ou lvwDescending (Décroissant).
Cet exemple utilise l'évènement ColumnClick. Le premier clic effectue un tri décroissant
de la colonne cliquée. Le deuxième clic effectue un tri croissant.
| Vba |
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
ListView1.Sorted = False
ListView1.SortKey = ColumnHeader.Index - 1
If ListView1.SortOrder = lvwAscending Then
ListView1.SortOrder = lvwDescending
Else
ListView1.SortOrder = lvwAscending
End If
ListView1.Sorted = True
End Sub
|
Cet autre exemple permet de trier une colonne contenant des dates.
La procédure est adaptée
d'une solution donnée par
Jacques Malatier sur le site developpez.com.
La macro transforme les dates au format décimal, effectue le
tri puis repasse au format DD/MM/YYYY.
| Vba |
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim i As Integer, j As Integer
ListView1.Sorted = False
ListView1.SortKey = ColumnHeader.Index - 1
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
CDec(CDate(ListView1.ListItems(i). _
ListSubItems(ColumnHeader.Index - 1).Text))
Next i
If ListView1.SortOrder = lvwAscending Then
ListView1.SortOrder = lvwDescending
Else
ListView1.SortOrder = lvwAscending
End If
ListView1.Sorted = True
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).ListSubItems(ColumnHeader.Index - 1).Text = _
Format(CDate(ListView1.ListItems(i).ListSubItems _
(ColumnHeader.Index - 1).Text), "DD/MM/YYYY")
Next i
End Sub
|
II-G. La multi sélection
Pour autoriser la multi sélection, vous devez tout d'abord passer la
propriété Multiselect à True.
Ensuite sélectionnez les lignes en gardant enfoncée la touche Ctrl.
Cet exemple permet de boucler sur les lignes sélectionnées.
| Vba |
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).Selected = True Then _
MsgBox ListView1.ListItems(i).Text
Next
|
Remarque:
La première ligne est toujours sélectionnée par défaut lors de l'initialisation.
Si vous avez besoin de la déselectionner, utilisez:
| Vba |
ListView1.ListItems(1).Selected = False
Set ListView1.SelectedItem = Nothing
|
Cet autre exemple permet de désélectionner toutes les lignes.
| Vba |
Private Sub CommandButton2_Click()
Dim X As Integer
For X = 1 To ListView1.ListItems.Count
ListView1.ListItems(X).Selected = False
Next
Set ListView1.SelectedItem = Nothing
End Sub
|
Pour vérifier si au moins une ligne est sélectionnée dans la listview,
utilisez:
| Vba |
Private Sub CommandButton1_Click()
Dim LstItem As ListItem
On Error Resume Next
Set LstItem = ListView1.SelectedItem
On Error GoTo 0
If LstItem Is Nothing Then
MsgBox "Aucune ligne n'est sélectionnée."
Else
MsgBox "Il y a au moins une ligne de sélectionnée."
End If
End Sub
|
II-H. Affichage dans la zone visible
La méthode EnsureVisible fait apparaître la ligne spécifiée dans la fenêtre de la ListView.
La macro suivante déplace le 50eme item dans la partie visible de la Listview.
| Vba |
Listview1.ListItems(50).EnsureVisible
|
Si vous souhaitez afficher le 50eme item de la listView dans la première ligne de la
partie visible (l'équivalent de TopIndex dans une ListBox), utilisez.
| Vba |
Private Sub CommandButton2_Click()
Dim i As Integer
For i = 1 To ListView1.ListItems.Count
ListView1.ListItems(i).EnsureVisible
If 50 = ListView1.GetFirstVisible.Index Then Exit For
Next i
End Sub
|
Un autre exemple pour sélectionner et visualiser la dernière ligne d'une ListView.
| Vba |
Private Sub CommandButton2_Click()
ListView1.ListItems(ListView1.ListItems.Count).EnsureVisible
ListView1.ListItems(ListView1.ListItems.Count).Selected = True
ListView1.SetFocus
End Sub
|
II-I. Images et icônes
Des images ou îcones peuvent être associés aux lignes du contrôle. Les arguments Icon et SmallIcon
indiquent les images qui doivent être affichées en fonction du mode de présentation défini:
SmallIcon pour les modes lvwSmallIcon, lvwList, lvwReport.
Icon pour le mode lvwIcon.
Les images sont stockées dans une imageList.
Consultez l'exemple dans le tutoriel consacré au contrôle ImageList
Les entêtes de colonne peuvent aussi contenir des îcones.
Pour cet exemple, ajoutez des contrôles ListView et ImageList dans l'UserForm.
| Vba |
Private Sub UserForm_Initialize()
Dim X As Integer
Me.ImageList1.ListImages.Clear
Me.ImageList1.ImageHeight = 16
Me.ImageList1.ImageWidth = 16
Me.ImageList1.ListImages.Add , "Im2", LoadPicture("C:\fourmiz.JPG")
Me.ImageList1.ListImages.Add , "Im3", LoadPicture("C:\slcplappl.ico")
Set Me.ListView1.ColumnHeaderIcons = Me.ImageList1
With ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom", 80, , "Im2"
.Add , , "Ville", 50, , "Im3"
.Add , , "Age", 50
End With
With .ListItems
.Add , , "Riri"
.Add , , "Fifi"
.Add , , "Loulou"
End With
.ListItems(1).ListSubItems.Add , , "Ville01"
.ListItems(1).ListSubItems.Add , , "30"
.ListItems(2).ListSubItems.Add , , "Ville02"
.ListItems(2).ListSubItems.Add , , "27"
.ListItems(3).ListSubItems.Add , , "Ville03"
.ListItems(3).ListSubItems.Add , , "41"
End With
ListView1.View = lvwReport
End Sub
|
De la même manière, il est aussi possible d'associer une image aux SubItems.
| Vba |
Private Sub UserForm_Initialize()
Dim X As Integer
Me.ImageList1.ListImages.Clear
Me.ImageList1.ImageHeight = 16
Me.ImageList1.ImageWidth = 16
Me.ImageList1.ListImages.Add , "Im2", LoadPicture("C:\fourmiz.JPG")
Me.ImageList1.ListImages.Add , "Im3", LoadPicture("C:\slcplappl.ico")
Set Me.ListView1.SmallIcons = Me.ImageList1
Set Me.ListView1.Icons = Me.ImageList1
With ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom", 80
.Add , , "Ville", 50
.Add , , "Age", 50
End With
With .ListItems
.Add , , "Riri"
.Add , , "Fifi"
.Add , , "Loulou"
End With
.ListItems(1).ListSubItems.Add , , "Ville01", "Im2"
.ListItems(1).ListSubItems.Add , , "30", "Im3"
.ListItems(2).ListSubItems.Add , , "Ville02", "Im2"
.ListItems(2).ListSubItems.Add , , "27", "Im3"
.ListItems(3).ListSubItems.Add , , "Ville03", "Im2"
.ListItems(3).ListSubItems.Add , , "41", "Im3"
End With
ListView1.View = lvwReport
End Sub
|
Ce dernier exemple liste les fichiers d'un répertoire ainsi que certaines de leurs
propriétés. L'îcone de l'executable qui ouvre ces fichiers s'affiche aussi,
dans le style du volet droit de l'explorateur Windows.
| Vba |
Option Explicit
Private Sub UserForm_Initialize()
With ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom fichier", 200
.Add , , "Taille", 40, lvwColumnRight
.Add , , "Créé le", 60, lvwColumnCenter
.Add , , "Modifié le", 60, lvwColumnCenter
.Add , , "Commentaires", 200, lvwColumnLeft
End With
.View = lvwReport
.Gridlines = True
.FullRowSelect = True
End With
End Sub
Private Sub CommandButton1_Click()
ElementsRepertoire "C:\Documents and Settings\michel\Repertoire"
End Sub
Private Sub ElementsRepertoire(Chemin As String)
Dim objShell As Object, strFileName As Object
Dim objFolder As Object
Dim i As Integer
Dim Executable As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(CStr(Chemin))
Label1 = Chemin
ListView1.ListItems.Clear
With ImageList1
.ListImages.Clear
.ImageWidth = 16
.ImageHeight = 16
End With
For Each strFileName In objFolder.Items
If strFileName.IsFolder = False Then
i = i + 1
Executable = FindExecutable(Chemin & "\" & objFolder.GetDetailsOf(strFileName, 0))
ImageList1.ListImages.Add , "cle" & i, GetIconFromFile(Executable, 0, False)
ListView1.SmallIcons = ImageList1
With ListView1
.ListItems.Add , , objFolder.GetDetailsOf(strFileName, 0)
.ListItems(i).Tag = Chemin & "\" & strFileName
.ListItems(i).TooltipText = "Type: " & objFolder.GetDetailsOf(strFileName, 2) & _
" , Auteur: " & objFolder.GetDetailsOf(strFileName, 9)
.ListItems(i).ListSubItems.Add , , _
objFolder.GetDetailsOf(strFileName, 1)
.ListItems(i).ListSubItems.Add , , _
Format(objFolder.GetDetailsOf(strFileName, 4), "DD/MM/YYYY")
.ListItems(i).ListSubItems.Add , , _
Format(objFolder.GetDetailsOf(strFileName, 3), "DD/MM/YYYY")
.ListItems(i).ListSubItems.Add , , _
objFolder.GetDetailsOf(strFileName, 14)
.ListItems(i).SmallIcon = "cle" & i
End With
End If
Next strFileName
End Sub
Private Sub ListView1_DblClick()
Dim leFichier As String
leFichier = ListView1.ListItems.Item(ListView1.SelectedItem.Index).Tag
Unload Me
If Right(leFichier, 4) = ".xls" Then
ThisWorkbook.FollowHyperlink leFichier
Else
ShellExecute 0, "open", leFichier, "", "", vbNormalFocus
End If
End Sub
|
| Vba |
Option Explicit
Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
(ByVal pszPath As Any, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, _
ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
Public Declare Function FindExecutableA Lib "shell32.dll" _
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Public Const MAX_FILENAME_LEN = 256
Public Declare Function OleCreatePictureIndirect _
Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Type PicBmp
Size As Long
tType As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type
Public Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Public Type SHFILEINFO
hicon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * 260
szTypeName As String * 80
End Type
Public Function GetIconFromFile(FileName As String, IconIndex As Long, _
UseLargeIcon As Boolean) As IPicture
Dim b As SHFILEINFO
Dim retval As Long
Dim pic As PicBmp
Dim IPic As IPicture
Dim IID_IDispatch As GUID
retval = SHGetFileInfo(FileName, 0, b, Len(b), &H100)
With IID_IDispatch
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
With pic
.Size = Len(b)
.tType = 3
.hBmp = b.hicon
End With
Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic)
Set GetIconFromFile = IPic
End Function
Public Function FindExecutable(S As String) As String
Dim i As Integer
Dim S2 As String
S2 = String(MAX_FILENAME_LEN, 32) & Chr$(0)
i = FindExecutableA(S & Chr$(0), vbNullString, S2)
If i > 32 Then
FindExecutable = Left$(S2, InStr(S2, Chr$(0)) - 1)
Else
FindExecutable = ""
End If
End Function
Sub LancerUserForm()
UserForm1.Show
End Sub
|
II-J. Identifier l'utilisation du clic droit
Il n'existe pas d'évènement spécifique BeforeRightClick, mais vous pouvez détourner
l'action MouseDown pour identifier l'utilisation du clic droit de la souris sur une ListView.
| Vba |
Private Sub ListView1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
If Button = 2 Then MsgBox "Vous avez effectué un clic droit."
End Sub
|
III. Téléchargement


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.