possible limitation d'Excel concernant les plages nommées

luigiF

XLDnaute Junior
Salut à vous,

J'ai une petite question concernant une possible limitation d'Excel, que j'avais déjà rencontrée auparavant sans pouvoir la résoudre ...
Cette question concerne l'utilisation un champ nommé dans un autre fichier : il semble que les possibilités d'utilisation de ce champ ne soient pas les mêmes selon la façon dont le nom a été défini. Comme j'ai bien conscience du caractère confus de mes explications, je joins un exemple :

le fichier "params" contient deux plages nommées :
Code:
PlageA  =DECALER(LabelA;1;;NBVAL(Feuil1!$B:$B)-1;) 
PlageB  =Feuil1!$C$3:$C$5

Le fichier "principal" utilise ces plages pour en faire la somme et comme liste de validation.
Mais ... les formules qui fonctionnent pour le nom "PlageB" (dans lequel l'adresse de la plage est écrite "en dur") ne fonctionnent pas pour le nom "PlageB" (dans lequel l'adresse de la plage est déterminée par une formule).

Quelqu'un saurait-il si ce comportement correspond à une limitation connue d'Excel et s'il est possible de la contourner (sans VBA).

Merci pour vos réponses et bonne journée,

Luigi
 

Pièces jointes

  • testnom.zip
    18.7 KB · Affichages: 31

Misange

XLDnaute Barbatruc
Re : possible limitation d'Excel concernant les plages nommées

Bonjour
la réponse est OUI. La fonction decaler est géniale mais elle comporte des limitations.
Avec excel 2007 et + on peut aussi créer des plages dynamiques avec les tableaux (listes dans 2003) mais certaines limitations des noms définis sont liées au fait que les plages sont dynamiques. Une limitation bien connue est qu'on ne peut pas combiner Decaler et indirect.
En fait c'est d'ailleurs plus une limitation de indirect que de decaler : quand tu passes un paramètre à indirect celui-ci ne peut pas être évalué, il est pris comme du texte. Donc dans indirect si tu fais référence à une plage nommée qui doit être évaluée, calculée au moment du calcul (decaler, index, nbval... peu importe) ça ne fonctionne pas.
Un exemple :
définis un nom "test" et dans zone de formule écris = 2+3
dans la feuille =somme(test) renvoies bien 5
mais somme(indirect("test")) renvoie une erreur
que tu écrives test dans la cellule A1 et que tu écrives = somme(indirect(A1)) n'y changera rien.
 

luigiF

XLDnaute Junior
Re : possible limitation d'Excel concernant les plages nommées

Bonjour Misange et merci pour cette réponse détaillée. J'avais déjà rencontré le problème mais jamais pris le temps de l'analyser correctement.

Ta réponse me guide vers une possible solution (VBA) consistant à programmer une fonction personnalisée en remplacement de "indirect", qui force l'évaluation de l'expression passée en paramètre :

Code:
Function MyIndirect(s As String)
Application.Volatile
Dim tmp As Range
Set tmp = Evaluate(s)
MyIndirect = tmp
End Function

Cela permet d'appliquer une fonction à une plage externe nommée via decaler :
Code:
=SOMME(MyIndirect(F1&"!"&B2))

mais cela ne permet malheureusement pas d'utiliser cette plage comme liste de validation (du moins avec l'interface standard de paramétrage des validations). Si quelqu'un a une astuce ...

Bonne journée,

Luigi
 

Pièces jointes

  • principal.xlsm
    14.2 KB · Affichages: 30

Statistiques des forums

Discussions
312 331
Messages
2 087 354
Membres
103 528
dernier inscrit
hplus