For i = 1 To UBound
Bonjour
Dans un tableau de données, j'essaye de récupérer tous les id projets étant attaché à une personne donnée (Prénom et Nom)
Aussi j'applique bien la condition
If TblBD(i, 3) = FirstName And TblBD(i, 4) = Name ThenMon problème réside dans le fait que seul l'id projet (le dernier) remonte, normal me direz vous sachant que j'ai indiqué
idproject = TblBD(i, 2)seulement voila comment procéder afin que tous les id projets puissent remonter
je tente certaines choses sans succès car erreur générée
idproject(i) = TblBD(i, 2)
ReDim idproject(i)
Voici la macro concernée:
Dim FirstName, Name As String
Dim P_Inv As Worksheet
Dim idproject
Set P_Inv = Sheets("Investigators")
'trouver tous les id projets (colonne B) ayant pour firstname (colonne C) et name (colonne D)
FirstName = List_PInvest.Column(0)
Name = List_PInvest.Column(1)
'
NomTableau = "Links14"
TblBD = Sheets("Investigators").ListObjects(NomTableau).DataBodyRange.Value
For i = 1 To UBound(TblBD)
If TblBD(i, 3) = FirstName And TblBD(i, 4) = Name Then
idproject = TblBD(i, 2)
End If
Next i
Debug.Print (idproject)
<br>merci à vous par avanceBonjour,
Le titre n'a pas beaucoup de rapport avec le soucis !?
Attention avec l'usage de nom réservé VBA comme nom de variable (Name)
A chaque itération on colle dans la variable idproject une donnée, écrasant la précédente. Il faut donc utiliser un tableau pour pouvoir stocker plusieurs informations.
Selon ce qu'on veut obtenir exactement , il y a plusieurs solutions.
Par exemple :
...
Dim idproject()
.../...
For i = 1 To UBound(TblBD)
If TblBD(i, 3) = FirstName And TblBD(i, 4) = Name Then
x = x + 1
ReDim Preserve idproject(1 To x)
idproject(x) = TblBD(i, 2)
End If
Next iA+
Bonjour AlgoPlus
Désolé pour l'erreur de titrage et merci pour votre retour
je me retrouve désormais avec la macro suivante
mais celle -ci génère une incompatibilité de type (13) à la ligne
ReDim Preserve idproject(1 To X)meme si je met dim idproject as integer cela ne règle pas les choses...
Private Sub List_PInvest_DblClick(ByVal lstncel As MSForms.ReturnBoolean)
Dim FirstName, Name As String
Dim P_Inv As Worksheet
Dim idproject
Set P_Inv = Sheets("Investigators")
'trouver tous les id projets (colonne B) ayant pour firstname (colonne C) et name (colonne D)
FirstName = List_PInvest.Column(0)
Name = List_PInvest.Column(1)
'
NomTableau = "Links14"
TblBD = Sheets("Investigators").ListObjects(NomTableau).DataBodyRange.Value
For i = 1 To UBound(TblBD)
If TblBD(i, 3) = FirstName And TblBD(i, 4) = Name Then
X = X + 1
ReDim Preserve idproject(1 To X)
idproject(X) = TblBD(i, 2)
End If
Next i
'qui ensuite permettra de récupérer les informations projet et les renvoyer
For j = 0 To UBound(idproject)
MsgBox idproject(j)
Next j
' ConsultandUpdate.Show
'Listing_PI.ListIndex = 0
End SubDim idproject()et non
Dim idprojectoui j'avais trouvé entre temps et c'était pourquoi j'ai classé mon post
mais merci à vous pour votre aide