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 VariantJ'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 Functionmais 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 SubMais 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")