Variable dans formules de tableau structuré

Bonjour

J'ai des formules (166) du type :

=SommeProd((Indirect("'Chemin\NomFichier.xlsm'!Tableau1[Col1]")=$A$2)*(Indirect("'Chemin\NomFichier.xlsm'!Tableau1[Col2]")=TbJanvier[[#En-Têtes];[ColA]]))

Mon problème, c'est que chemin est toujours le même mais pas NomFichier ; donc quand je copie / colle ma formule dans tous le tableau, je récupère les données que du NomFichier collé.

je voudrais donc remplacé NomFichier par une cellule qui donne le nom du fichier concerné.

Aujourd'hui, je suis obligée de modifier tous les NomFichiers à la main, pour récupérer mes données.

Est-ce que quelqu'un peut m'aider, connait une solution ?

Bonjour,

A la lecture de ta question ... et de ta formule ... je suis quelque peu surpris ...

En effet, c'est justement la fonction Indirect() que tu sembles correctement maitriser ... qui permet d'avoir des cellules dont le contenu varie avec la copie ...

Peut-être qu'un petit extrait illustratif de ton fichier serait plus parlant ...

Bonjour James,

Merci pour ta réponse.

Non, je ne maîtrise pas du tout la fonction indirect, mais en cherchant en parallèle comment mettre des valeurs absolues avec des références structurées, j'ai vu qu'il fallait passer par la fonction Indirect.

je ne peux pas adresser d'exemple, il faudrait en envoyer plusieurs (ce que je ferai si nécessaire), mais je vous propose une copie d'écran.

Nota Bene :

Comme vous le constatez, j'ai des #REF! dans toutes mes formules sauf une ligne, car le fichiers de données est ouverts.

j'avais trouvé une macro qui rafraichi les liens hypertextes,

For x = 1 To UBound(TabLiaisons) Workbooks.Open Filename:=TabLiaisons(x) ActiveWorkbook.Close False

Ce code fonctionnait très bien avant que j'ajoute les fonctions indirect, mais maintenant cela ne fonctionne plus ?

z ddeaide

Bonjour

INDIRECT ne marche pas sur un autre classeur sauf s'il est ouvert.

On peut utiliser INDIRECT dans les formules de tableau mais surtout pour se référer au noms des colonnes pas pour celui de fichiers...

Bonsoir Chris,

Merci pour ta réponse un peu décevante, j'étais si contente d'avoir trouvé ça.

y a-t-il une autre solution ou dois-je impérativement sortir des références structurées ?

Bonjour

Le problème n'est pas la référence structurée mais INDIRECT non prévu pour un fichier externe fermé quel que soit le type de formule.

Bonjour,

une proposition qui vaut ce qu'elle vaut mais qui pourrait te dépanner.

Inscrit tes formules en utilisant un nom de fichier par défaut (qui sera existant pour contrôler la validité de tes formules).

Ici j'ai choisi original.* (l'extension importe peu. Mais le nom de fichier de ta première ligne peut convenir tant qu'on ne puisse pas le confondre avec une autre chaine dans tes formules.

C'est ce nom qu'on doit retrouver dans toutes les lignes.

Active la feuille concernée et lance cette macro :

Sub rempNomFichier()
    Const nomDefaut As String = "original" ' nom fichier par défaut, à adapter
    Dim pl As Range, c As Range
    Set pl = Cells.SpecialCells(xlCellTypeFormulas)
    If Not pl Is Nothing Then
        For Each c In pl
            If InStr(c.Formula, nomDefaut) > 0 Then c.Formula = Replace(c.Formula, nomDefaut, Cells(c.Row, 2)) 'recup nom fichier en B
        Next c
    End If
End Sub

La macro scrute toutes les formules de la feuille et remplace le nom par défaut par celui trouvé en colonne B même ligne.

Pour tes références structurées en absolu tu peux utiliser cette syntaxe à la place de Indirect():

une colonne : table1[[column1]:[column1]]

une cellule même ligne, colonne absolue : table1[@[column1]:[column1]]

Difficile à tester sans fichier, à toi de jouer et de dire

eric

Bonjour Éric,

J'essaie tout à l'heure et je te tiens au courant.

Merci de ton aide.

Bonjour Eric,

j'espère que les fêtes se déroulent bien.

Un très grand merci pour ton aide, cela fonctionne parfaitement, c'est un réel gain de temps.

Rechercher des sujets similaires à "variable formules tableau structure"