Nommer une Plage Dynamique
Nommer une Plage Dynamique
Selon les cas, la taille d'une plage n'est pas forcément connue à l'avance, et est susceptible d'évoluer.
La taille des plages nommées peut être ainsi variable et nous allons voir comment gérer ce type de références.
Pour illustrer cette situation, prenons un exemple :
Les ouvrages d'une collection se répartissent sur plusieurs gammes de A à D, chaque gamme correspond à un prix, indiqué dans le tableau Tarif.
Dans le tableau Chiffre d'Affaires, nous voulons calculer le CA généré par chaque ouvrage, en fonction de son prix indiqué dans le tableau Tarif :
Pour les calculs du CA, nous avons donc besoin de nommer les plages :
- Gamme (actuellement de C19 à C22)
- Prix_Tarif (actuellement de D19 à D22)
Cependant, nous savons que le tarif va s'enrichir d'autres gammes, mais nous ne savons pas dans quelles proportions.
Nommer directement les plages Gamme sur C19:C22 et Prix_Tarif sur D19:D22 n'est donc pas une solution idéale.
Dans le doute, nous pouvons décider d'étendre les plages jusqu'aux lignes 25, ou 30 ou 40 pour laisser de la marge, mais cette solution n'est pas très élégante ni optimisée.
Pour faire en sorte que nos plages soient « dynamiques », c'est à dire tiennent compte automatiquement du nombre de lignes ou colonnes renseignées, nous allons utiliser deux fonctions : la fonction NBVAL() et la fonction DECALER().
La fonction NBVAL() va permettre de compter le nombre de cellules non vides
La formule =NBVAL($C:$C) renvoie 5
En effet il y a bien 5 cellules non vides dans cette colonne, entête de colonne comprise, de C18 à C22 pour l'instant.
La fonction DECALER() va permettre de déterminer la plage
Syntaxe de cette fonction :
DECALER( Réf; Nombre de lignes; Nombre de colonnes; Hauteur; Largeur )
Réf | Cellule de départ à partir de laquelle le décalage doit être opéré. Ici, nous partons de la cellule $C$19 pour déterminer la plage Gamme |
Nombre de lignes | Nombre de lignes vers le haut (chiffre négatif) ou vers le bas (chiffre positif) dont la cellule supérieure gauche de la référence renvoyée doit être décalée. Ici, nous n'avons pas besoin de ce décalage, cet argument restera donc à zéro. |
Nombre de colonnes | Idem que pour les lignes. Ici, nous n'avons pas besoin de ce décalage, cet argument restera donc à zéro. |
Hauteur | Indique la hauteur de la plage, en nombre de lignes (elle doit être impérativement supérieure à 0). Nous savons grâce à NBVAL() combien nous avons de lignes renseignées. Hauteur sera donc égale au résultat de NBVAL() -1 compte tenu du titre de la colonne du tableau. |
Largeur | Indique la largeur de la plage, en nombre de colonnes (la largeur doit également être supérieure à 0). Ici, nous travaillons sur un seule colonne, la Largeur sera donc égale à 1 |
La plage nommée « Gamme » fera donc référence à :
Formule Excel :
=DECALER($C$19;;;NBVAL($C:$C)-1;1)
Tandis que la plage nommée « Prix_Tarif » fera référence à :
Formule Excel :
=DECALER($D$19;;;NBVAL($D:$D)-1;1)
Notez toutefois que le nom de l'onglet sera ajouté à la vraie fonction.
Pour tester, dans notre tableau Tarif nous pouvons rentrer juste sur la ligne du dessous une gamme E et une gamme F, respectivement à 6 € et 7 €, puis éventuellement, saisir d'autres données dans le tableau Chiffre d'affaires.
La formule du tableau Chiffre d'Affaires fonctionnera avec les plages qui seront automatiquement adaptées !
ATTENTION!
|