J'ai un listView à plusieurs colonne. J'aimerais savoir s'il est possible de
récupérer une valeur dans mon liste View lorsque je clique dessus.
En fait mon gros problème, c'est que j'arrive à récupérer l'index de la
ligne mais pas celui de la colonne.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques93
Bonjour flavien, flavien a écrit :
Bonjour,
J'ai un listView à plusieurs colonne. J'aimerais savoir s'il est possible de récupérer une valeur dans mon liste View lorsque je clique dessus. En fait mon gros problème, c'est que j'arrive à récupérer l'index de la ligne mais pas celui de la colonne.
Peut être peut tu t'inspirer de ceci (qui suppose que tu es en mode lvwReport) et en sachant que l'événement MouseUp se produit après l'événement ItemClick :
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) Debug.Print "Ligne : " & Item.Index & " -"; End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim Gauche As Long, Droite As Long Dim i As Integer
Droite = 0 With Me.ListView1 ColNumber = -1 For i = 1 To .ColumnHeaders.Count Gauche = Droite Droite = Gauche + .ColumnHeaders(i).Width If x > Gauche And x < Droite Then ColNumber = i Exit For End If Next i End With If ColNumber <> -1 Then Debug.Print " Colonne : " & ColNumber End If End Sub
-- Cordialement,
Jacques.
Bonjour flavien,
flavien a écrit :
Bonjour,
J'ai un listView à plusieurs colonne. J'aimerais savoir s'il est possible de
récupérer une valeur dans mon liste View lorsque je clique dessus.
En fait mon gros problème, c'est que j'arrive à récupérer l'index de la
ligne mais pas celui de la colonne.
Peut être peut tu t'inspirer de ceci (qui suppose que tu es en mode
lvwReport) et en sachant que l'événement MouseUp se produit après
l'événement ItemClick :
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Debug.Print "Ligne : " & Item.Index & " -";
End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _
x As Single, y As Single)
Dim Gauche As Long, Droite As Long
Dim i As Integer
Droite = 0
With Me.ListView1
ColNumber = -1
For i = 1 To .ColumnHeaders.Count
Gauche = Droite
Droite = Gauche + .ColumnHeaders(i).Width
If x > Gauche And x < Droite Then
ColNumber = i
Exit For
End If
Next i
End With
If ColNumber <> -1 Then
Debug.Print " Colonne : " & ColNumber
End If
End Sub
J'ai un listView à plusieurs colonne. J'aimerais savoir s'il est possible de récupérer une valeur dans mon liste View lorsque je clique dessus. En fait mon gros problème, c'est que j'arrive à récupérer l'index de la ligne mais pas celui de la colonne.
Peut être peut tu t'inspirer de ceci (qui suppose que tu es en mode lvwReport) et en sachant que l'événement MouseUp se produit après l'événement ItemClick :
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) Debug.Print "Ligne : " & Item.Index & " -"; End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim Gauche As Long, Droite As Long Dim i As Integer
Droite = 0 With Me.ListView1 ColNumber = -1 For i = 1 To .ColumnHeaders.Count Gauche = Droite Droite = Gauche + .ColumnHeaders(i).Width If x > Gauche And x < Droite Then ColNumber = i Exit For End If Next i End With If ColNumber <> -1 Then Debug.Print " Colonne : " & ColNumber End If End Sub
-- Cordialement,
Jacques.
Jacques93
Jacques93 a écrit :
[...]
Pour être plus propre et plus complet c'est à dire récupérer la valeur de la "cellule" du ListView :
Option Explicit
Dim LigNumber As Integer
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) LigNumber = Item.Index End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim Gauche As Long, Droite As Long Dim ColNumber As Integer, s As String Dim i As Integer
Droite = 0 With Me.ListView1 ColNumber = -1 For i = 1 To .ColumnHeaders.Count Gauche = Droite Droite = Gauche + .ColumnHeaders(i).Width If x > Gauche And x < Droite Then ColNumber = i Exit For End If Next i
If ColNumber <> -1 Then If ColNumber = 1 Then s = .ListItems(LigNumber).Text Else s = .ListItems(LigNumber).SubItems(ColNumber - 1) End If Debug.Print "Ligne : " & LigNumber & _ " - Colonne : " & ColNumber & _ " - Valeur : " & s End If End With End Sub
-- Cordialement,
Jacques.
Jacques93 a écrit :
[...]
Pour être plus propre et plus complet c'est à dire récupérer la valeur
de la "cellule" du ListView :
Option Explicit
Dim LigNumber As Integer
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
LigNumber = Item.Index
End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _
x As Single, y As Single)
Dim Gauche As Long, Droite As Long
Dim ColNumber As Integer, s As String
Dim i As Integer
Droite = 0
With Me.ListView1
ColNumber = -1
For i = 1 To .ColumnHeaders.Count
Gauche = Droite
Droite = Gauche + .ColumnHeaders(i).Width
If x > Gauche And x < Droite Then
ColNumber = i
Exit For
End If
Next i
If ColNumber <> -1 Then
If ColNumber = 1 Then
s = .ListItems(LigNumber).Text
Else
s = .ListItems(LigNumber).SubItems(ColNumber - 1)
End If
Debug.Print "Ligne : " & LigNumber & _
" - Colonne : " & ColNumber & _
" - Valeur : " & s
End If
End With
End Sub
Pour être plus propre et plus complet c'est à dire récupérer la valeur de la "cellule" du ListView :
Option Explicit
Dim LigNumber As Integer
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) LigNumber = Item.Index End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim Gauche As Long, Droite As Long Dim ColNumber As Integer, s As String Dim i As Integer
Droite = 0 With Me.ListView1 ColNumber = -1 For i = 1 To .ColumnHeaders.Count Gauche = Droite Droite = Gauche + .ColumnHeaders(i).Width If x > Gauche And x < Droite Then ColNumber = i Exit For End If Next i
If ColNumber <> -1 Then If ColNumber = 1 Then s = .ListItems(LigNumber).Text Else s = .ListItems(LigNumber).SubItems(ColNumber - 1) End If Debug.Print "Ligne : " & LigNumber & _ " - Colonne : " & ColNumber & _ " - Valeur : " & s End If End With End Sub
-- Cordialement,
Jacques.
flavien
Je te remercie.
Pour palier à mon problème j'ai utiliser un flexGrid.
Merci.
"Jacques93" a écrit :
Jacques93 a écrit :
[...]
Pour être plus propre et plus complet c'est à dire récupérer la valeur de la "cellule" du ListView :
Option Explicit
Dim LigNumber As Integer
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) LigNumber = Item.Index End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim Gauche As Long, Droite As Long Dim ColNumber As Integer, s As String Dim i As Integer
Droite = 0 With Me.ListView1 ColNumber = -1 For i = 1 To .ColumnHeaders.Count Gauche = Droite Droite = Gauche + .ColumnHeaders(i).Width If x > Gauche And x < Droite Then ColNumber = i Exit For End If Next i
If ColNumber <> -1 Then If ColNumber = 1 Then s = .ListItems(LigNumber).Text Else s = .ListItems(LigNumber).SubItems(ColNumber - 1) End If Debug.Print "Ligne : " & LigNumber & _ " - Colonne : " & ColNumber & _ " - Valeur : " & s End If End With End Sub
-- Cordialement,
Jacques.
Je te remercie.
Pour palier à mon problème j'ai utiliser un flexGrid.
Merci.
"Jacques93" a écrit :
Jacques93 a écrit :
[...]
Pour être plus propre et plus complet c'est à dire récupérer la valeur
de la "cellule" du ListView :
Option Explicit
Dim LigNumber As Integer
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
LigNumber = Item.Index
End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _
x As Single, y As Single)
Dim Gauche As Long, Droite As Long
Dim ColNumber As Integer, s As String
Dim i As Integer
Droite = 0
With Me.ListView1
ColNumber = -1
For i = 1 To .ColumnHeaders.Count
Gauche = Droite
Droite = Gauche + .ColumnHeaders(i).Width
If x > Gauche And x < Droite Then
ColNumber = i
Exit For
End If
Next i
If ColNumber <> -1 Then
If ColNumber = 1 Then
s = .ListItems(LigNumber).Text
Else
s = .ListItems(LigNumber).SubItems(ColNumber - 1)
End If
Debug.Print "Ligne : " & LigNumber & _
" - Colonne : " & ColNumber & _
" - Valeur : " & s
End If
End With
End Sub
Pour palier à mon problème j'ai utiliser un flexGrid.
Merci.
"Jacques93" a écrit :
Jacques93 a écrit :
[...]
Pour être plus propre et plus complet c'est à dire récupérer la valeur de la "cellule" du ListView :
Option Explicit
Dim LigNumber As Integer
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) LigNumber = Item.Index End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, _ x As Single, y As Single) Dim Gauche As Long, Droite As Long Dim ColNumber As Integer, s As String Dim i As Integer
Droite = 0 With Me.ListView1 ColNumber = -1 For i = 1 To .ColumnHeaders.Count Gauche = Droite Droite = Gauche + .ColumnHeaders(i).Width If x > Gauche And x < Droite Then ColNumber = i Exit For End If Next i
If ColNumber <> -1 Then If ColNumber = 1 Then s = .ListItems(LigNumber).Text Else s = .ListItems(LigNumber).SubItems(ColNumber - 1) End If Debug.Print "Ligne : " & LigNumber & _ " - Colonne : " & ColNumber & _ " - Valeur : " & s End If End With End Sub