INDIRECT synthaxe

pdrean

XLDnaute Nouveau
[Résolu]Problème de Syntaxe INDIRECT

Bonjour,

J'ai essayé de trouver un problème similaire au mien, sans réussite.

Quelqu'un peut il me dire quelle est la différence entre :

INDIRECT("'652'!A2:A75")

et

INDIRECT("'652'!B2:d2") ?

Le premier fonctionne et le deuxième m'affiche #VALEUR.

J'ai beau tourner le truc dans tous les sens, sans réussite.
 
Dernière édition:

pdrean

XLDnaute Nouveau
Re : INDIRECT synthaxe

A2:A75 est une zone avec exclusivement des cellules avec des caractères et B2:d2 sont des dates Dans aucun cas, il y'a des cellules vides. il s'agit en fait d'une matrice.

En fait, je bosse sur des tarifications de transporteurs. B2:d2 correspond à l'échéance des contrats et A2:A75 aux régions desservies.

Cela permet de faire une synthèse sur une année des prix de transport en fonction de la date de chargement et de la région.

Aussi, pour simplifier la lecture du topic, '652'!A2:A75 et '652'!B2:d2 sont, dans la formule, écrit avec Adresse(). j'ai testé en écrivant directement INDIRECT("''652'!B2:d2") et le resultat est le même alors que ca fonctionne bien avec ("'652!A2:A75")
 
Dernière édition:

Tibo

XLDnaute Barbatruc
Re : INDIRECT synthaxe

Bonjour,

Le problème semble provenir du fait que la première formule concerne une seule colonne alors que la deuxième concerne trois colonnes.

C'est l'origine de l'affichage du message, je ne saurais apporter davantage d'explication.

Par contre, pourquoi utiliser la fonction INDIRECT ?

Elle ne me paraît pas nécessaire.

Cela dit, pour t'aider plus en détail, il nous faudrait un extrait de ton fichier, ou un fichier exemple proche de ton vrai fichier

A te (re)lire

@+
 

pdrean

XLDnaute Nouveau
Re : INDIRECT synthaxe

Je vais traiter plus de 3000 lignes se référant par exemple à '652'!A2:A75 et '652'!B2:D2 en même temps.

Le problème est que '652'!A2:A75 et '652'!B2:D2 sont variables. Aussi bien le nom de la feuille (code transporteur) que le nombre de ligne (pour A2:a75) (Régions desservies) et le nombre de colonnes (B2:D2) (échéances du contrat).

Chaque feuille correspond à une matrice transporteur avec en ligne les échéances et en colonnes les régions.

Si vous avez une autre fonction qu'indirect pour traiter la variabilité des matrices transporteur, je suis preneur.
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : INDIRECT synthaxe

Re,
Bonjour Tibo ;)

Dans de nombreux cas DECALER peut remplacer INDIRECT, mais je ne pense pas que le problème vienne de là (bien que je puisse me tromper :))

sans un petit fichier exemple avec des tableaux à taille limitée, et le type de calcul réalisé sur les plages, je ne vois pas trop
Si le problème vient du fait des colonnes à la place des lignes comme Tibo le suggère, peut-être avec un

Code:
=TRANSPOSE(INDIRECT([COLOR=red]"[/COLOR]'652'!B2:D2[COLOR=red]"[/COLOR]))
 

pdrean

XLDnaute Nouveau
Re : INDIRECT synthaxe

Voici donc un exemple du fichier.

La feuille analyse comporte plus de 3000 lignes. Il existe plus de 30 feuilles transporteurs.

La cellule en rouge est la cellule qui comporte l'erreur. Celle du dessus la valeur à afficher avec "l'adressage" figé
 

Pièces jointes

  • Analyse.xls
    19 KB · Affichages: 61
  • Analyse.xls
    19 KB · Affichages: 53
  • Analyse.xls
    19 KB · Affichages: 55

tototiti2008

XLDnaute Barbatruc
Re : INDIRECT synthaxe

Re,

si tu valides ta formule en F5

Code:
=INDIRECT(CONCATENER("'";D2;"'!B2:";ADRESSE(2;NBVAL(INDIRECT(CONCATENER("'";D2;"'!2:2")));4)))

en matriciel (Ctrl+Maj+entrée), tu verras qu'elle renvoie bien une valeur

Tu ne peux pas l'insérer dans la formule en E3 parce que tu dépasses les 7 niveaux d'imbrication des fonctions (limite d'Excel 2003 et antérieurs)

A la place de la formule en E3, je propose :

Code:
=RECHERCHEV(C2;INDIRECT("'"&D2&"'!A2:Z5000");EQUIV(A2;INDIRECT("'"&D2&"'!A2:IV2");0);FAUX)
 

chris

XLDnaute Barbatruc
Re : INDIRECT synthaxe

Bonjour

Tototiti est plus rapide !

Je poste néanmoins ma formule :
Code:
=SOMMEPROD((DECALER(INDIRECT("'"&D2&"'!"&"$A$3");;;NBVAL(INDIRECT("'"&D2&"'!"&"A:A"))-2;1)=Analyse!C2)*DECALER(INDIRECT("'"&D2&"'!"&"$B$3");;EQUIV(Analyse!A2;INDIRECT("'"&D2&"'!"&"2:2");0)-2;NBVAL(INDIRECT("'"&D2&"'!"&"A:A"))-2;1))
Moins optimisée !!

EDit : et le pire c'est que j'ai expliqué il y a quelques jours comment valoriser le 3ème Argument de RECHERCHEV par EQUIV :rolleyes:
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 272
Membres
104 083
dernier inscrit
hecko