Fonction sommeprod associé à indirect avec chaine de caractère

Bonjour à tous,

Vous trouverez ci-dessous la fonction testée qui me renvoie 0.

SOMMEPROD(INDIRECT(""""&DROITE(CELLULE("nomfichier";avct!$A$1);NBCAR(CELLULE("nomfichier";avct!$A$1))-TROUVE("]";CELLULE("nomfichier";avct!$A$1)))&"!"&"L6"&"C"&COLONNE(avct!$G$2)&":"&"L"&'Traitement données'!$J$21&"C"&COLONNE(avct!$G$2)&"""";FAUX);INDIRECT(""""&DROITE(CELLULE("nomfichier";avct!$A$1);NBCAR(CELLULE("nomfichier";avct!$A$1))-TROUVE("]";CELLULE("nomfichier";avct!$A$1)))&"!"&"L6"&"C"&COLONNE(avct!$G$2)&":"&"L"&'Traitement données'!$J$21&"C"&COLONNE(avct!$G$2)&"""";FAUX))

J'ai bien vérifié que les matrices ont mêmes tailles.

En regardant de plus près, j'ai compris que ma problématique venait de la fonction indirect car excel comprend que les guillemets ajoutés à l'intérieur de la fonction indirect comme partie intégrante de la chaine de caractère globale et du coup, il comprend cela indirect(...) et non indirect(".....") comme j'essaye de lui faire dire. Est ce quelqu'un connaitrait par hasard la bonne syntaxe Svp?

Merci,

Bonjour,

Dans ce cas, vous avez tout intérêt à passer par une cellule intermédiaire pour d'une part contourner ce problème et d'autre part rendre plus facile la lisibilité et la maintenance des formules (sachant qu'en plus il y a redondance).

Cdlt,

Bonjour,

merci pour votre réponse mais je voulais savoir s'il existe pas une syntaxe particulière pour résoudre ce problème et modifier la formule en conséquence plutôt que de passer par une cellule intermédiaire.

si quelqu'un sait, je suis preneur.

Merci

Bonjour Mama94, 3GB,

En premier, pourquoi passer par Indirect qui est surtout utilisé pour cibler des références du classeur actif.

En deuxième "nomfichier" dans la fonction Cellule ne retourne que le chemin du fichier.

Donc disque, utilisateur, dossier + sous-dossiers, nom du fichier excel ainsi que la feuille.

Alors que

CELLULE("contenu";[fichiercible.xlsx]Avct!$A$1)

retournera la donnée présente dans le fichier cible, qui lui gardera tous les références disque, utilisateur etc... lorsque le fichier ciblé sera fermé.

Enfin je rejoins 3GB,

rendre plus facile la lisibilité et la maintenance des formules

Si tu réalises des formules à rallonge. Quand un autre utilisateur ou toi-même plus tard reviendra sur le classeur.

Ce sera bien difficile de bien voir l'intérêt de la formule. Ou alors place un commentaire bien détaillé dans la case ou elle se trouve.

Bonjour X Cellus,

Merci pour tes réponses. Je passe par indirect car cette fonction me permet de faire référence à plusieurs cellules mais c'est de ma faute, il faut que je vous donne plus d'explications pour que vous compreniez un peu mieux.

Vous trouverez ci-dessous le fichier en pièce jointe.

Prenons un exemple pour tu comprennes ce que fait la formule:

Onglet "Nom fichier 1" cellule C8 ==> la formule est censée calculée la somme de produit dans l'onglet "Nom fichier" entre la colonne "G"et "D" à partir de la ligne 6 jusqu'à un nombre de ligne determinée dans l'onglet " traitement données" cellule j21 en fonction d'un critère. Ce critère est nommé en cellule A5 dans l'onglet "Nom fichier 1" et doit être identifié dans la colonne lot dans l'onglet "Nom fichier" sinon la somme de produit ne se fera pas.

Ne tient pas compte des cellules C11/C12/C13/C14 dans l'onglet "Nom fichier 1", c'est des tests que j'ai mené pour essayer de comprendre et trouver mon erreur.

D'un point de vue formule onglet fichier "Nom fichier 1" cellule C8:

SOMMEPROD(N(INDIRECT("'"&DROITE(CELLULE("nomfichier";'Nom fichier'!$A$1);NBCAR(CELLULE("nomfichier";'Nom fichier'!$A$1))-TROUVE("]";CELLULE("nomfichier";'Nom fichier'!$A$1)))&"'!$A6:$A"&'Traitement données'!$J$21)=$A5);INDIRECT("'"&DROITE(CELLULE("nomfichier";'Nom fichier'!$A$1);NBCAR(CELLULE("nomfichier";'Nom fichier'!$A$1))-TROUVE("]";CELLULE("nomfichier";'Nom fichier'!$A$1)))&"'!"&"L6"&"C"&COLONNE('Nom fichier'!DD2)&":"&"L"&'Traitement données'!$J$21&"C"&COLONNE('Nom fichier'!DD2);FAUX);INDIRECT("'"&DROITE(CELLULE("nomfichier";'Nom fichier'!$A$1);NBCAR(CELLULE("nomfichier";'Nom fichier'!$A$1))-TROUVE("]";CELLULE("nomfichier";'Nom fichier'!$A$1)))&"'!"&"L6"&"C"&COLONNE('Nom fichier'!$G$2)&":"&"L"&'Traitement données'!$J$21&"C"&COLONNE('Nom fichier'!$G$2);FAUX))

En rouge ==> Critère transformé en vecteur colonne avec des 1 ou 0 en fonction du critère si identifié dans les différentes lignes balayées( Nombre de ligne balayé jusqu'au critère spécifié dans l'onglet "traitement données" en cellules C6

En Bleu ==> Vecteur colonne repertoriant les valeurs allant de DD6 jusqu'au nombre de ligne spécifiée dans l'onglet "traitement données" en cellules C6 soit DD3000

En jaune ==> Vecteur colonne repertoriant les valeurs allant de 6 jusqu'au nombre de ligne spécifiée dans l'onglet "traitement données" en cellules C6 soit G3000.

Sur office 365, j'ai pas cette problématique, tout marche nickel et en passant sur excel 2016, la sommeprod renvoie #Valeur.

Ps: l'astuce de "3GB" fonctionne bien mais ne résout pas le problème. Elle le contourne.

15trame.zip (128.13 Ko)

En premier, pourquoi passer par Indirect qui est surtout utilisé pour cibler des références du classeur actif.

En deuxième "nomfichier" dans la fonction Cellule ne retourne que le chemin du fichier.

Donc disque, utilisateur, dossier + sous-dossiers, nom du fichier excel ainsi que la feuille.

Alors que

CELLULE("contenu";[fichiercible.xlsx]Avct!$A$1)

retournera la donnée présente dans le fichier cible, qui lui gardera tous les références disque, utilisateur etc... lorsque le fichier ciblé sera fermé.

Enfin je rejoins 3GB,

rendre plus facile la lisibilité et la maintenance des formules

Si tu réalises des formules à rallonge. Quand un autre utilisateur ou toi-même plus tard reviendra sur le classeur.

Ce sera bien difficile de bien voir l'intérêt de la formule. Ou alors place un commentaire bien détaillé dans la case ou elle se trouve.

Rechercher des sujets similaires à "fonction sommeprod associe indirect chaine caractere"