Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

possible limitation d'Excel concernant les plages nommées

  • Initiateur de la discussion Initiateur de la discussion luigiF
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
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

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

Tant qu'à passer par VBA, définis tes plages en VBA ! comme ça tu pourras utiliser directement le nom de tes plages dans tes listes de validation.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…