Formules, concatènation et variables

0

Bonjour

J'ai une formule dans une cellule avec "Page" le nom d'un onglet :

=NB.SI.ENS('Page'!$AA$5:$AA$379;">="&G$4;'Page'!$AA$5:$AA$379;"<"&H$4)

Cette Formule me renvoit la valeur 3.

Cependant le nombre de ligne dans mon onglet page peut varier. J'ai donc fait une macro VBA qui me renvoit le nombre de ligne est la met dans une cellule G2.

Je concatène ensuite manuellement sous forme de Chaine dans une autre cellule I2:

="'Page'!$AA$5:$AA$"&$G$2

Jusque là, tout semble fonctionner. La cellule affiche: 'Page'!$AA$5:$AA$393

393 étant le nombre de lignes correct. Cependant, lorsque je remplace dans ma formule comme ceci:

=NB.SI.ENS(I2;">="&G$4;I2;"<"&H$4)

Dans le but d'obtenir un résultat similaire mais qui s'adapterait aux changements de nombre de lignes si j'utilise ma macro, le résultat obtenu est 0 et pas 3.

Pourquoi le nombre obtenu n'est-il pas le même ? Qu'est-ce qu'Excel comprend par rapport à ce que j'essaye de lui dire ? Y-a-t-il une manière plus simple de faire ceci ?

Cordialement

    Posté le 9 janvier 2019, 16:08
    par ApprentiFr
    Répondre
    0

    Bonjour,

    D'abord un petit rectificatif : dans la cellule I2 le résultat à obtenir doit être Page!$AA$5:$AA$393 càd SANS les '

    Ensuite, pour pouvoir utiliser le contenu de la cellule (ou de la plage de cellule) qu'indique une adresse contenue dans une cellule (ici I2), il faut utiliser la fonction INDIRECT sinon Excel lit et c'est logique, l'adresse contenue dans la cellule et non le contenu de la cellule que l'adresse désigne.

    Si tu modifies ta formule comme ceci :

    =NB.SI.ENS(INDIRECT(I2);">="&G$4;INDIRECT(I2);"<"&H$4)

    cela devrait fonctionner.

    Bon courage

    Chris

    CHRIS Posté le 26 janvier 2019, 10:14
    par CHRIS

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :