Excel: plage déterminé par valeur de cellule.

Résolu
Bonjour,

Alors ma demande va paraitre particulière mais je souhaiterais adapter une formule excel comme ceci :

passer de :

=NB.SI($AB$2:$BD$10;B15)

à :

=NB.SI(valeurdecellulev2:valeurdecelluleV3;B15)

en gros qu'en V2 j'ai l'adresse de début de plage et en V3 l'adresse de fin de plage.




je pense donc je suis !

4 réponses

  1. Modérateur
    Bonjour,
    La fonction qui t'intéresse ici est : INDIRECT

    Essaye comme ceci :
    =NB.SI(INDIRECT(V2&":"&V3);B15)

    Attention à la saisie dans les cellules V2 et V3... Bien saisir, par exemple :
    en V2 : A1
    en V3 : A152
    1
    1. Cool Merci beaucoup pour cette formule par contre j'esaye à l'adapter :

      En B565 : $AG
      En B566 : $BD

      j'ai essayé :
      =NB.SI(INDIRECT($B$565)&"$364:" & INDIRECT($C$565)&"$373";E566)

      mais ca lui plais pas beaucoup ... ;)
      0
    2. j'ai aussi fait :

      En B565 : AG
      En B566 : BD

      j'ai essayé :
      =NB.SI("$" & INDIRECT($B$565)&"$364:$" & INDIRECT($C$565)&"$373";E566)
      0
    3. Contributeur
      Bonjour
      en attendant Pijaku et sans lui piquer sa bonne proposition, restons y mais écrite correctement avec les parenthèses aux bons endroits:

      Et que faite vous de B566 dans votre exemple??????

      =NB.SI(INDIRECT($B$565&"364:"&$B$566&"373");E566)

      les $ sont inutiles entre guillemets puisque Excel ne pourra pas incrémenter les textes, de même que les $ dans les textes de AG et BD qui resteront toujours AG et BD si vous tirez la formule.
      Les seuls $ utiles sont ceux de B565 et B5666 dans la formule

      Petit tuyau
      pour vérifier un code INDIRECT composé, écrivez l'égalité dans une cellule et vérifier qu'elle renvoie bien l'adresse cherchée
      par exemple ici:
      =$B$565"&364:"&$B$566&"373"
      doit vous renvoyer avec B565 =AG et B566=BD, en texte
      =AG364:BD373

      crdlmnt
      0
  2. Modérateur
    Pourquoi as tu écris 2 fois INDIRECT...
    Dans ma formule, j'écris :
    INDIRECT(PremièreCellule":"DeuxièmeCellule)
    dans ton cas :
    En B565 : $AG$364
    En B566 : $BD$373
    =NB.SI(INDIRECT(B565&":"&B566);E566)
    0
    1. parce que dans mon cas : B565 ne peux contenir que la valeur colonne : AG et idem pour B566 qui ne peux contenir que BD...
      0
    2. Modérateur
      Ou alors, avec les numéros de lignes "en dur" dans ta formule :
      En B565 : $AG
      En B566 : $BD
      =NB.SI(INDIRECT(B565&"$364:"&B566&"$373");E566)
      0
    3. Yes ! Merci bcp pijaku ! :)
      0
  3. Modérateur
    Salut Vaucluse, ViriisXP,

    La réponse complète est maintenant apportée. Cependant, sur le site Commentçamarche, les commentaires et réponses se croisent et donc il est difficile de retrouver quoique ce soit.
    J'invite donc viriis à relire les propositions, notamment celle de vaucluse ICI et la mienne ICI
    0
    1. Pour ma part j'ai pris la réponse de pijaku, je n'avais pas vu ta réponse Vaucluse .

      J'ai une question par contre :
      sachant que mon tableau de stats est sur la feuille "stats" et que mon tableau source est dans la feuille "prog." comment je peux faire pour récupérer les valeurs dans cette autre feuille ?

      =NB.SI(INDIRECT($A$12&"$351:"&$B$12&"$363");C$13)

      je sais pas trop comment placer le "prog.!"

      A12 = dans "stats"
      B12 = dans "stats"

      Le résultats de INDIRECT($A$12&"$351:"&$B$12&"$363") est la plage dans "Prog."

      C13 = dans "stats"
      0
    2. @Vaucluse : je viens de lire ton sujet, j'ai besoin des $ du fait de ma copie des valeurs dans plusieurs cellules et j'ai des fois des colonnes qui change en donné source et des fois non et j'ai des fois des lignes qui changent en données source et d'autre fois non. Donc pour les $ je les ai là ou j'en ai besoin. ;)
      0
  4. Modérateur
    Extrait de la réponse de Vaucluse :
    Petit tuyau
    pour vérifier un code INDIRECT composé, écrivez l'égalité dans une cellule et vérifier qu'elle renvoie bien l'adresse cherchée
    par exemple ici:
    =$B$565"&364:"&$B$566&"373"
    doit vous renvoyer avec B565 =AG et B566=BD, en texte
    =AG364:BD373

    Ici ta plage doit être :
    =Prog.!AG364:BD373
    Donc essaye :
    ="Prog.!"&$B$565"&364:"&$B$566&"373"
    0
    1. Donc ca devrais donner :
      =NB.SI(INDIRECT("Prog.!"&$B$565"&364:"&$B$566&"373");C13) ???
      0
    2. Modérateur
      Presque!!!!!
      pas :
      =NB.SI(INDIRECT("Prog.!"&$B$565"&364:"&$B$566&"373");C13)
      mais :
      =NB.SI(INDIRECT("Prog.!"&$B$565&"364:"&$B$566&"373");C13)
      l'erreur en gras ci dessous :
      =NB.SI(INDIRECT("Prog.!"&$B$565"&364:"&$B$566&"373");C13)
      0
    3. Yes ! Merci beaucoup ! :)
      0