Je suis en train d'extraire des valeurs d'une feuille Excel à une autre. J'utilise la formule suivante:Formule personnalisée Excel avec les instructions IF et INDEX, MATCH renvoie une erreur #VALUE
= IF(ISBLANK(IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1));Error2;IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1))
Depuis que je dois faire des calculs avec les données extraites, je voulais créer une fonction personnalisée qui simplifierait le processus d'extraction en éliminant la nécessité de saisir les paramètres qui restent les mêmes à chaque fois . J'ai donc construit la fonction suivante:
Function DataCap(Dates As Variant, Row As Variant) As Variant
Dim Range1 As Range 'Define the whole lookup table
Set Range1 = Range("Data!A1:P151")
Dim Range2 As Range 'Define the date lookup table
Set Range2 = Range("Data!A3:P3")
Dim Error1 As Range 'Define the error 1; if no value
Set Error1 = Range("X16")
Dim Error2 As Range 'Define the error 2; if blank
Set Error2 = Range("Y16")
DataCap.Formula "= IF(ISBLANK(IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1));Error2;IFNA(INDEX(Range1;Row;MATCH(Dates;Range2;0));Error1))"
End Function
Lorsque je l'exécute, j'obtiens l'erreur #VALUE. Si je colle l'équation (avec les mêmes arguments) directement dans la cellule, cela fonctionne comme prévu. Donc, je pense que le problème est que VBA n'est pas capable de faire le calcul. Des suggestions pour résoudre ce problème?
Nous vous remercions de l'aide à l'avance
Avez-vous défini 'Range',' Range2', 'Error1' et' Error2' comme plages nommées? –
Vous ne pouvez pas utiliser de noms de variables VBA dans une formule et vous devez utiliser des virgules et non des points-virgules dans la chaîne de formule. – Rory
@RobinMackenzie, non la plage, Range2, etc. sont définis uniquement dans le code, pas dans la feuille Excel. – Mark