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 Then

Mon 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 avance

Bonjour,

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 i

A+

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 Sub
Dim idproject()

et non

Dim idproject

oui j'avais trouvé entre temps et c'était pourquoi j'ai classé mon post

mais merci à vous pour votre aide

Rechercher des sujets similaires à "ubound"