Type d'argument ByRef incompatible

Bonjour à tous,

pourriez vous m'expliquer ce qui ne va pas dans le code suivant:

j'ai déclaré globalement une variable qui va contenir un tableau de String :

Public listCodeMétasStandard() As Variant

J'alimente cette variable dans une Sub :

listCodeMétasStandard = Array("STD_TOTO", "STD_TATA", "STD_TITI", "STD_PLOUF", "STD_YES", "STD_YOOO")

j'ai une fonction qui prend en paramètre que des strings. Cette fonction me permet de récupérer la valeur contenu dans une colonne en fonction d'une valeur recherchée dans une autre colonne (y a peut être plus simple?):

Private Function GetUniqueValueFromTable(tableName As String, FromColName As String, Elt As String, TargetColName As String)
    Dim table As ListObject
    Dim targetLine As Integer

    Set table = Range(tableName).ListObject
    targetLine = table.ListColumns(FromColName).DataBodyRange.Find(Elt).row
    GetUniqueValueFromTable = table.ListColumns(TargetColName).DataBodyRange.Rows(targetLine - table.Range.row)
    Set table = Nothing
End Function

mais visiblement qd j'appelle cette fonction, avec comme 3 ème paramètre :

listCodeMétasStandard(i)

ca plante avec le message Type d'argument ByRef incompatible :

Private Sub AddMétaStandard()
    Dim line As ListRow
    Dim i As Integer

    For i = 0 To UBound(listCodeMétasStandard)
        Set line = Range("t_Indexation").ListObject.ListRows.Add
        line.Range.Cells(Range("t_Indexation").ListObject.ListColumns("Métadonnée").Index).Value = GetUniqueValueFromTable("t_métadonnées", "Code", listCodeMétasStandard(i), "Libellé")
    Next i
    Set line = Nothing
End Sub

Mais si je crée une variable string qui récupère le contenu de listCodeMétasStandard(i), et que je met cette variable string dans l'appel de la fonction ca fonctionne.

Comment s'y prendre pour éviter de déclarer cette variable String ? Ai-je mal déclaré ma variable Tableau de string?

bonjour,

tu as déclaré ta variable comme un tableau de variant pas de string , hors ton paramètres attention un string !

GetUniqueValueFromTable("t_métadonnées", "Code", Cstr(listCodeMétasStandard(i)), "Libellé")

Cstr veut dire Cast STRing ou convertir en string !

Merci pour ta réponse, le Cstr fonctionne bien.

mais pour l'histoire du Variant, je suis visiblement obligé de le déclarer en Variant, car en String, ca plante en disant incompatibilité de type lorsque je je fais :

listCodeMétasStandard = Array("STD_TOTO", "STD_TATA", "STD_TITI", "STD_PLOUF", "STD_YES", "STD_YOOO")

Je sais, array retourne un variant, d'ou le Cstr!

Rechercher des sujets similaires à "type argument byref incompatible"