Bonsoir
j'ai testé et cela ne fonctionne pas meme si cela ne genere pas d'erreur
cela continu de chercher dans la colonne prenom et donc la premiere
Voila à tout hasard la macro qui renseigne cette listbox
Public Sub Listing_PI()
Dim MaCollection As New Collection
NomTableau = "Links14"
TblBd = Sheets("Investigators").ListObjects(NomTableau).DataBodyRange.Value
ID = Val("1"): N = 0
ColVisu = Array(3, 4)
LargeurCol = Array(50, 45)
PInvest_List.ColumnCount = Sheets("Investigators").Range(NomTableau).Columns.Count - 5
PInvest_List.ColumnWidths = Join(LargeurCol, ";")
Dim tb_tri()
Dim clé1_tri As Variant, clé2_tri As Variant
Dim i1 As Integer, i2 As Integer, j As Integer, C As Integer
Dim Tbl()
' En cas d'erreur
On Error Resume Next
' Boucle
For i = 1 To UBound(TblBd)
MaCollection.Add TblBd(i, 4), TblBd(i, 4)
' Vérifier si erreur = doublon
If Err.Number = 0 Then
' Sinon on ajoute
If TblBd(i, 1) = ID Then
N = N + 1: ReDim Preserve Tbl(1 To UBound(TblBd, 2), 1 To N)
C = 0
For Each k In ColVisu
C = C + 1: Tbl(C, N) = TblBd(i, k)
Next k
End If
Else
Err.Clear
End If
Next i
If N > 0 Then Me.PInvest_List.Column = Tbl Else Me.PInvest_List.Clear
' Tri le contenu du ComboBox par ordre alphabétique
With Sheets("DashBoard").PInvest_List
'Création d'un tableau dynamique trié par Nom/Prénom
ReDim tb_tri(.ListCount, .ColumnCount)
For i1 = 0 To .ListCount - 1
clé1_tri = .List(i1, 1) & .List(i1, 0)
j = 0
For i2 = 0 To .ListCount - 1
clé2_tri = .List(i2, 1) & .List(i2, 0)
If clé1_tri > clé2_tri Then j = j + 1
Next i2
For C = 0 To .ColumnCount - 1
tb_tri(j, C) = .List(i1, C)
Next C
Next i1
'Rechargement Listbox triée
.ListFillRange = Empty
.List = tb_tri
End With
End Sub
et la gestion du double clic qui lance un userform
Public Sub PInvest_List_DblClick(ByVal lstncel As MSForms.ReturnBoolean)
Dim FirstName, Name As String
FirstName = PInvest_List.Column(0)
Name = PInvest_List.Column(1)
PI_Projects_List.PI_FirstName = FirstName
PI_Projects_List.PI_Name = Name
PI_Projects_List.Show
PInvest_List.ListIndex = 0
End Sub
aussi j'ai tenté une autre approche avec votre méthode:
Private Sub PInvest_List_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim strCharacter As String
'Convert ANSI value to character string.
strCharacter = Chr(KeyAscii)
For i = 0 To PInvest_List.ListCount - 1
' If PInvest_List.List(i, 1) Like "*" & strCharacter & "*" Then
' PInvest_List.Selected(i) = True
If PInvest_List.Column(1) Like "*" & strCharacter & "*" Then
PInvest_List.Selected(i) = True
Exit Sub
End If
Next i
End Sub
mais cela ne change rien pour autant.
une piste avec toutes ces informations?
merci à vous par avance