A votre place, j'essaierais sans les parenthèses à l'intérieur du INDIRECT. Et ce N30:0 m'étonne un peu mais comme je ne sais pas de quoi il s'agit, j'imagine que c'est normal.
Je suis désolé mais malheureusement, je n'y connais rien... J'ai pensé, à l'apparence de la formule, que l'utilisation de la fonction INDIRECT permettrait de variabiliser l'import.
En attendant que vous obteniez meilleure réponse, je vous propose un essai avec une macro adaptée de cette vidéo :
Sub Block_Red()
lCanal = DDEInitiate("RSLinx", "SHW401")
tdata = DDERequest(lCanal, "N30:0")
activesheet.range("C6").resize(ubound(tdata) + 1).value = application.transpose(tdata)
DDETerminate(lCanal)
end sub
Si cette macro fonctionnait, cela signifierait qu'il serait peut-être possible de créer une fonction personnalisée :
function RSLinx(sTopic as string, sVariable as string)
lCanal = DDEInitiate("RSLinx", sTopic)
tdata = DDERequest(lCanal, sVariable)
RSLinx = tdata
DDETerminate(lCanal)
end function
Celle-ci, renvoyant un tableau, s'utiliserait ainsi sur Excel (combinée à INDEX) :
=INDEX(RSLinx("SHW401","N30:0");1)
pour obtenir le premier élément du tableau (il faudrait ensuite remplacer 1 par 2, 3, ...).
Bien sûr, les valeurs "SHW401" et "N30:0" pourraient alors être rendues variables, par exemple :
=INDEX(RSLinx($C$3,"N30:0");1)
Je n'ai vraiment aucune certitude ni moyen de tester donc c'est à voir...