Macro pour modifier un nom de fichier dans une formule

Bonjour à tous,

Je vais essayer d'être le plus clair possible, mais ce n'est pas gagné.

Voici une formule que j'utilise:

=IFERROR(-SUMPRODUCT(-(Data!G:G<>"DEREF"),Data!AI:AI,Data!$AF:$AF)/SUMIF(Data!G:G,"<>DEREF",Data!$AF:$AF),"")

Maintenant, je dois utiliser cette formule depuis un autre classeur, ce qui donne :

=IFERROR(-SUMPRODUCT(-([AFFINITY.xlsx]Data!G:G<>"DEREF"),[AFFINITY.xlsx]Data!AI:AI,[AFFINITY.xlsx]Data!$AF:$AF)/SUMIF([AFFINITY.xlsx]Data!G:G,"<>DEREF",[AFFINITY.xlsx]Data!$AF:$AF),"")

Mon problème est le suivant : je dois utiliser cette formule sur environ 250 lignes, chaque ligne représente un différent fournisseur (dont le nom est écrit en colonne D). Je n'ai pas envie de changer manuellement le nom du fichier source pour chaque ligne, l'idéal serait qu'une macro ou une formule me récupère le nom en colonne D afin de me remplacer le nom du fichier dans la formule en colonne AS et en CA.

Je pourrais utiliser l'outil remplacer et le faire pour chaque ligne mais ça va être looooooooong. Et c'est du bricolage.

Quelq'un aurait il une solution ?

Merci,

Edouard

Bonjour,

mets-nous un fichier exemple représentatif de ce qu'ilfaut faire. indique-nous aussi comment faire le lien entre le nom du fournisseur et le nom du fichier à mettre dans la formule.

Bonjour,

J'ai oublié de préciser, je suis sur un Excel en Anglais.

Ci-joint deux fichiers :

Le premier (Recap) avec dans la colonne A des noms de fichier. Dans la colonne B, cette formule à appliquer (pour l'exemple je l'ai modifié en comparaison de celle de mon premier message): =IFERROR(-SUMPRODUCT(-(Data!A:A<>"DEREF"),Data!D:D,Data!$E:$E)/SUMIF(Data!A:A,"<>DEREF",Data!$D:$D),"")

Sauf que les données que cette formule va chercher se trouvent dans d'autres fichiers, un exemple ci-joint (Affinity). Le nom du fichier va donc se retrouver dans la formule. Mais si j'étend la formule dans la colonne B du fichier Recap, Il va toujours aller chercher le résultat dans le même fichier. J'aimerais lui faire comprendre que le fichier en question porte le nom qui se trouve sur la même ligne en colonne A.

Existe il une solution ?

31recap.xlsx (29.17 Ko)
17affinity.xlsx (10.77 Ko)

bonjour

une proposition

Sub aargh()
    With Sheets("sheet1")
        dl = Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 1 To dl
            f = "=IFERROR(-SUMPRODUCT(-(data!$A:$A<>""DEREF""),data!D:D,data!$E:$E)/SUMIF(data!A:A,""<>DEREF"",data!$D:$D),"""")"
            f = Replace(f, "data!", "'[" & .Cells(i, 1) & ".xlsx]data'!")
            .Cells(i, 2).Formula = f
        Next i
    End With
End Sub

Bonjour,

Merci beaucoup ça à l'air de bien fonctionner. Par contre dans la ligne qui sert à remplacer j'ai ajouter l'emplacement du fichier de sorte à ce que ce que je puisse utiliser cette macro sans que tous les fichiers fournisseurs soient ouverts. Et ça ne fonctionne qu'à moitié. En fait ça marche, la Macro va au bout, mais le résultat de ma formule n'apparait que si j'ouvre le fichier source... Une idée de comment faire pour que je résultat s'affiche sans que j'ai à ouvrir les fichiers sources?

Bonjour,

apparemment la formule (sumproduct) ne tolère pas qu'on utilise des liens externes

Bonjour,

C'est pas grave, merci quand même pour ton aide, je suis déjà plus avancé

Rechercher des sujets similaires à "macro modifier nom fichier formule"