Aller au contenu principal

Qu'est-ce que la fonction NBJEUCUBE ?

Définition
La fonction NBJEUCUBE renvoie le nombre d'éléments dans un jeu OLAP. Elle prend une seule référence de cellule contenant un jeu créé par JEUCUBE et retourne un entier.

Tu sors NBJEUCUBE (CUBESETCOUNT en anglais) avant de lancer un calcul sur un jeu OLAP, parce qu'un jeu vide se comporte comme un jeu normal dans la feuille et ne lève aucune alerte de lui-même. Elle sert de garde-fou silencieux : elle repère une connexion tombée ou une requête MDX trop filtrante avant que ça ne se traduise par des totaux à zéro qu'on prendrait pour argent comptant.

Si tu travailles avec Analysis Services, Power BI ou tout autre source OLAP, NBJEUCUBE te permet de contrôler la dimension de tes jeux dynamiquement : afficher un titre de rapport adapté ("Analyse de 24 produits"), bloquer un calcul si le jeu est vide, ou détecter des problèmes de connexion avant qu'ils ne se propagent dans tout ton tableau de bord.

Syntaxe

=NBJEUCUBE(ensemble)

Clique sur un argument pour aller à son explication.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction NBJEUCUBE

1

ensemble

: la référence à une cellule contenant un jeu OLAP créé par JEUCUBE ou retourné par une autre fonction cube

Ce paramètre est le seul argument de la fonction et doit pointer vers un jeu valide.

Par exemple, si A1 contient =JEUCUBE("Ventes"; "[Produit].[Catégorie].Members"), alors =NBJEUCUBE(A1) retourne le nombre de catégories dans ce jeu.

Attention : Si tu passes une cellule contenant du texte, un nombre ou une formule non-OLAP, NBJEUCUBE retourne #VALEUR!. Vérifie toujours que la cellule source contient bien un jeu créé par JEUCUBE.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment compter le nombre de membres d'un jeu avec la fonction NBJEUCUBE

Le jeu créé par la fonction JEUCUBE n'affiche qu'une étiquette, et rien dans la cellule ne dit combien de membres se cachent derrière. Ton rapport doit pourtant annoncer « 3 produits analysés » en titre, et rester juste le jour où le catalogue s'agrandit. La fonction NBJEUCUBE rend la taille du jeu.

Les étapes
  1. 1
    Dans une cellule, écris =NBJEUCUBE(.
  2. 2
    En 1er argument : clique sur la cellule qui contient le jeu, F4. Elle n'affiche que l'étiquette Produits, car la fonction JEUCUBE qui l'occupe range le jeu OLAP derrière ce simple libellé. NBJEUCUBE attend une cellule de ce genre et non une plage de la feuille. Pointée sur du texte ordinaire ou sur une cellule vide, elle renvoie l'erreur #VALEUR!.
  3. 3
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=NBJEUCUBE(F4)
Explication
La fonction rend 3 : le modèle ne connaît que trois produits (Clavier, Souris et Moniteur), même si la table compte six lignes de ventes. Le suffixe .Children du jeu liste les membres distincts de la dimension, donc le compte porte sur les produits et jamais sur les ventes.
Exemple 2

Comment compter le nombre de membres retenus par un filtre en combinant la fonction NBJEUCUBE et la fonction JEUCUBE

Ton tableau de bord ne suit que les produits dont le chiffre d'affaires dépasse un seuil, et le nombre de produits concernés est justement l'indicateur qui intéresse ton comité. Ce nombre bouge à chaque actualisation du modèle, donc l'écrire à la main n'a aucun sens. La fonction NBJEUCUBE compte les membres qui ont survécu au filtre.

Les étapes
  1. 1
    Dans une cellule, écris =NBJEUCUBE(.
  2. 2
    En 1er argument : clique sur la cellule qui porte le jeu filtré, F4. La fonction JEUCUBE y affiche l'étiquette Gros vendeurs et cache derrière elle la condition MDX qui ne retient que les produits au-delà du seuil. La formule de comptage ne change pas d'un caractère par rapport au jeu complet, car c'est le jeu visé qui porte le filtre et NBJEUCUBE se contente de compter ce qu'on lui donne.
  3. 3
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=NBJEUCUBE(F4)
Explication
La fonction rend 2 là où elle rendait 3 sur le jeu complet : le moniteur (8000) et le clavier (4000) passent le seuil, la souris (2000) reste dehors. Compter le jeu filtré est le seul moyen de savoir ce que la condition a réellement retenu, puisque la cellule du jeu, elle, affiche toujours la même étiquette.
Exemple 3

Comment bloquer un rapport sur un jeu vide en combinant la fonction NBJEUCUBE et la fonction SI

Un jeu peut revenir vide sans que rien ne le signale, parce que la connexion au modèle est tombée ou parce que la requête filtre tout. Les chiffres qui en découlent tombent alors à zéro et se lisent comme un mauvais mois plutôt que comme une panne, ce qui est la pire des situations en réunion. La fonction NBJEUCUBE sert ici de garde-fou avant l'affichage.

Les étapes
  1. 1
    Dans une cellule, écris =SI(.
  2. 2
    En 1er argument : écris le test qui compte les membres du jeu et les compare à zéro, NBJEUCUBE(F4)>0. Tout se joue sur ce 0, car un jeu vide y répond par 0 sans lever la moindre erreur. C'est cette valeur silencieuse que la condition doit intercepter.
  3. 3
    En 2ᵉ argument : saisis le texte affiché quand le jeu contient au moins un membre, "Rapport disponible". C'est là que tu brancherais le vrai calcul du rapport. Les guillemets sont obligatoires pour qu'Excel affiche ce texte tel quel.
  4. 4
    En 3ᵉ argument : saisis le texte de repli affiché quand le comptage tombe à 0, "Jeu vide". Ce message remplace le zéro trompeur par un constat lisible, qui prévient ton lecteur qu'il n'y a rien à analyser plutôt que de lui montrer un total faux.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :=SI(NBJEUCUBE(F4)>0; "Rapport disponible"; "Jeu vide")
Explication
Sur un jeu qui ne ramène rien, la fonction NBJEUCUBE rend 0 sans lever la moindre erreur, et la fonction SI bascule sur son message de repli. C'est ce 0 silencieux qu'il faut intercepter : un jeu vide ressemble à un jeu normal dans la feuille, et les calculs qui en dépendent afficheraient des totaux à zéro comme s'ils étaient vrais.
Le conseil du pro
Avant de lancer un calcul sur un jeu OLAP, protège-le avec NBJEUCUBE : un jeu vide renvoie 0, souvent le signe d'une connexion coupée ou d'une requête MDX qui filtre tout. Un simple test « si le nombre d'éléments dépasse 0 » t'évite de propager l'erreur dans tout le tableau de bord.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction NBJEUCUBE

Avec NBJEUCUBE, le souci ne vient presque jamais de la fonction elle-même mais de ce que tu lui donnes à compter. Le cas que tu croiseras le plus souvent, c'est le #VALEUR! : tu as pointé une cellule qui contient du texte, un nombre ou une formule classique au lieu d'un vrai jeu créé par JEUCUBE.

Les deux autres pièges sont plus sournois : un 0 qui tombe sans prévenir (jeu vide, cube pas actualisé ou MDX qui filtre tout) et un classeur qui rame dès que tu répètes NBJEUCUBE sur le même jeu, chaque appel relançant une requête vers le cube.

Erreur #VALEUR! : la cellule ne contient pas un jeu OLAP

NBJEUCUBE ne fonctionne qu'avec des jeux OLAP créés par JEUCUBE ou retournés par d'autres fonctions cube. Si tu passes une cellule contenant du texte, un nombre ou une formule standard, tu obtiens #VALEUR!.

Solution : Vérifie que la cellule référencée contient bien un jeu créé par JEUCUBE. Utilise =ESTREF(A1) pour vérifier que la référence est valide, et assure-toi que la formule JEUCUBE dans A1 ne retourne pas elle-même une erreur.

NBJEUCUBE retourne 0 de manière inattendue

Le jeu OLAP ne contient aucun élément, soit parce que la connexion n'a pas de données correspondantes, soit parce que l'expression MDX dans JEUCUBE filtre tous les membres, soit parce que le cube n'est pas actualisé.

Solution : Actualise ta connexion OLAP via Données → Actualiser tout. Vérifie l'expression MDX dans ton JEUCUBE pour t'assurer qu'elle retourne bien des membres. Utilise un outil MDX (SSMS) pour tester l'expression hors d'Excel.

Performances lentes quand NBJEUCUBE est répété sur le même jeu

Chaque appel à NBJEUCUBE déclenche une requête vers le cube OLAP. Si plusieurs formules appellent NBJEUCUBE sur le même jeu, tu multiplies les requêtes inutilement, ce qui ralentit le classeur.

Solution : Calcule NBJEUCUBE une seule fois dans une cellule dédiée (par exemple B1 = =NBJEUCUBE(A1)) et référence B1 dans les autres formules. Active aussi le calcul manuel (Formules → Options de calcul → Manuel) pour les classeurs avec beaucoup de fonctions cube.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

NBJEUCUBE vs NB vs JEUCUBE vs VALEURCUBE

Tu prends NBJEUCUBE quand tu veux savoir combien d'éléments contient un jeu OLAP, pas pour compter des cellules d'une feuille : pour ça c'est NB, qui ne sait pas lire un cube. JEUCUBE est l'étape d'avant, celle qui fabrique le jeu à partir d'une expression MDX, et NBJEUCUBE vient ensuite le mesurer.

Dès que tu cherches une valeur agrégée plutôt qu'un décompte (un chiffre d'affaires, un KPI), c'est VALEURCUBE qu'il te faut. En pratique, les trois fonctions cube s'enchaînent : JEUCUBE crée, NBJEUCUBE dimensionne, VALEURCUBE lit.

CritèreNBJEUCUBENBJEUCUBEVALEURCUBE
RôleCompter les éléments d'un jeu OLAPCompter les cellules numériquesCréer un jeu OLAPLire une valeur agrégée du cube
Type de donnéesJeux OLAP uniquementPlages Excel classiquesExpressions MDXMembres et mesures OLAP
RésultatEntier (nombre d'éléments)Entier (nombre de cellules)Jeu (objet cube)Valeur numérique
Cas d'usage typiqueValider la taille d'un jeuCompter dans une plage standardDéfinir les dimensions à analyserLire un KPI ou une mesure
FAQ

Questions fréquentes

Oui, NBJEUCUBE compte les éléments de n'importe quel jeu créé avec JEUCUBE ou retourné par d'autres fonctions cube. Elle est compatible avec tous les cubes de données connectés à Excel (Analysis Services, Power BI, etc.).

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction NBJEUCUBE : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir