Calc : NBVAL problématique

Bonjour,

J'ai la toute dernière version de LibO (la 4.0.3.3) et j'ai le même souci qu'avec celle juste avant avec la fonction NBVAL.
Je l'utilise avec des plages de cellules nommées. L'assistant de fonctions trouve bien le nombre de valeurs 3) , mais ce qui est affiché c'est la formule et pas systématiquement.

Je peux avoir : =NB(dcheque) , même corrigé en : =NB('dcheque')

ou le résultat : 8 pour cette formule-ci =NBVAL('Affectation')

Dans les deux cas l'assistant formule ou la saisie directe de la formule donne les mêmes résultats.

La seule explication que j'imagine, que je dois vérifier, est que dans le premier cas, j'ai affaire à des nombres qui sont formatés comme des textes et que, dans le second, je n'ai affaire qu'à du texte. Le problème c'est que je ne vois pas quelle fonction utiliser à la place qui me permettent de trouver le nombre de chèques dans une colonne à partir de leur numéro.

Le classeur en question :http://cjoint.com/?0Ehl1IXYajG

Qui est d'ailleurs un test pas fini et dont la deuxième ligne (celles des totaux) me sert à contourner un peu l'inexistence de la fonction "Travail en tableau" de LibO.

Avez-vous d'autres idées ?

Je me réponds, mais en fait non d'une part parce que sur un autre classeur identique en terme de structure je n'ai pas ce problème, d'autre part parce que j'ai eu ces résultats aléatoires en formation.

Bonjour

Ysabeau wrote

J'ai la toute dernière version de LibO (la 4.0.3.3) et j'ai le même
souci qu'avec celle juste avant avec la fonction NBVAL.
Je l'utilise avec des plages de cellules nommées. L'assistant de
fonctions trouve bien le nombre de valeurs 3) , mais ce qui est affiché
c'est la formule et pas systématiquement.

Il me parait normal que le texte de la formule soit affiché car
la cellule est formattée "texte".

Remplacer par le format Standard puis resaisir la formule donne
bien le résultat:

0Ehl1IXYajG_budget_sans_plantage_essai.ods
<http://nabble.documentfoundation.org/file/n4054326/0Ehl1IXYajG_budget_sans_plantage_essai.ods>

Voir à ce sujet la FAQ:
https://wiki.documentfoundation.org/FR/FAQ/Calc/127

Cordialement
Pierre-Yves

Je pense avoir trouvé la cause et la solution. La cause : j'avais sélectionné toute la colonne pour paramétrer les cellules en texte.

La solution : *commencer* par remettre le format de cellule au format nombre standard *puis* refaire la fonction. Passer la cellule au format nombre après ne donne pas le résultat escompté.

ouaip je venais de trouver la solution :slight_smile:

merci.

Bonjour,

Si je retape la formule (en i2), en insérant le nom de plage (dcheque), cela fonctionne : 3 s'affiche. Si, au lieu d'insérer je tape le nom de plage cela ne fonctionne pas, c'est la formule qui s'affiche. Y aurait-il une erreur de frappe lors de la création du nom ? (par exemple un espace, devant ou après le nom !)

Libo 3.6.2.2

Cordialement.

Re-bonjour Ysabeau,

J'ai découvert l'erreur de la formule : c'est bien un espace (après le nom) qui est présent dans le nom enregistré.

Voir l'image à cette adresse : http://www.cjoint.com/?0EhmRzczDDX

Cordialement.

Michel

pas dans les noms des plages, de toute façon, LibO signale toujours le
problème et ne prend pas les noms avec des espaces (Excel non plus
d'ailleurs).

Le problème venait bien du format de cellule.

Re-bonjour Ysabeau,

J'ai découvert l'erreur de la formule : c'est bien un espace (après
le nom) qui est présent dans le nom enregistré.

pas dans les noms des plages, de toute façon, LibO signale toujours le
problème et ne prend pas les noms avec des espaces (Excel non plus
d'ailleurs).

Alors, comment se fait-il que avec le nom inséré (et son espace) la formule fonctionne et que avec le nom "tapé" mais sans espace cela ne fonctionne pas ?
Il y a quand même bien un espace dans le nom de la plage en question ; et il a été accepté lors de sa création !
Je m'interroge !

En dernier essai, j'ai testé en enlevant l'espace du nom, dans la formule et, oh surprise ! elle fonctionne ! J'y perd mon latin !

Bonjour

Michel ANDREU wrote

Il y a quand même bien un espace dans le nom de la plage en question ;
et il a été accepté lors de sa création !

Il n'y a aucun espace dans le nom pour le classeur que j'ai re-téléchargé
pour vérification.

Cordialement
Pierre-Yves

Eh bien si, Pierre-Yves !

En procédant de la manière suivante, un espace s'insère automatiquement :

    - on tape le commencement de la formule "=NBVAL("
    - on ouvre le menu "Insertion", puis "Noms" et "Insérer",
    - on choisit le nom désiré, puis "Coller",
    - on ferme la parenthèse et ... un espace s'est placé entre le nom
    et la fin de parenthèse.

Et, bizarrement, la formule fonctionne quand même, mais pas toujours ; étonnant, non ! Avec ou sans espace d'ailleurs.

Cordialement.

Michel

Suite...

Tu as bien fait de préciser comment tu opères...

Je maintiens ce que j'écrivais:

Il n'y a aucun espace dans le nom pour le classeur que j'ai re-téléchargé
pour vérification.

Le nom n'a été défini avec aucun espace "dans son nom", comme
tu peux le vérifier par Insertion> Nom> Gérer en le sélectionnant
et en amenant le curseur en fin de ligne.

C'est ta procédure...

Michel ANDREU-2 wrote

    - on tape le commencement de la formule "=NBVAL("
    - on ouvre le menu "Insertion", puis "Noms" et "Insérer",

...qui est incorrecte: le nom ne doit pas être entre guillemets
si on veut qu'il soit interprété comme un nom et non comme
une chaîne de caractère.

Maintenant il est exact que la fonction "coller" ajoute un
espace mais il ne fait pas partie du nom lui même.

La formule :
=NBVAL(dcheque )

Avec espace avant la parenthèse fermante fonctionne très bien...
si la cellule dans laquelle on la saisit n'est pas préformatée en
texte (autrement, c'est le texte de la formule qui s'affiche).

La formule :
=NBVAL("dcheque" )
doit renvoyer 1 comme par exemple:
=NBVAL("contrebasse")
Autre exemple:
=NBVAL("contrebasse";"dcheque")
renvoie 2 car il y a deux arguments "chaînes" qui lui sont passés.

Cordialement
Pierre-Yves

Suite...

Tu as bien fait de préciser comment tu opères...

Je maintiens ce que j'écrivais:

Il n'y a aucun espace dans le nom pour le classeur que j'ai re-téléchargé
pour vérification.

Le nom n'a été défini avec aucun espace "dans son nom", comme
tu peux le vérifier par Insertion> Nom> Gérer en le sélectionnant
et en amenant le curseur en fin de ligne.

C'est ta procédure...

Michel ANDREU-2 wrote

     - on tape le commencement de la formule "=NBVAL("
     - on ouvre le menu "Insertion", puis "Noms" et "Insérer",

...qui est incorrecte: le nom ne doit pas être entre guillemets
si on veut qu'il soit interprété comme un nom et non comme
une chaîne de caractère.

Les guillemets n'étaient là que pour le commentaire, pas dans la formule expérimentée.

Maintenant il est exact que la fonction "coller" ajoute un
espace mais il ne fait pas partie du nom lui même.

La formule :
=NBVAL(dcheque )

Avec espace avant la parenthèse fermante fonctionne très bien...
si la cellule dans laquelle on la saisit n'est pas préformatée en
texte (autrement, c'est le texte de la formule qui s'affiche).

La formule :
=NBVAL("dcheque" )
doit renvoyer 1 comme par exemple:
=NBVAL("contrebasse")
Autre exemple:
=NBVAL("contrebasse";"dcheque")
renvoie 2 car il y a deux arguments "chaînes" qui lui sont passés.

Cordialement
Pierre-Yves

Pour information, j'ai repris le même tableau que celui d'Ysabeau en y ajoutant les deux formules, avec ou sans espace, je te laisse découvrir le résultat :
http://www.cjoint.com/?0EilI4XLfxC

Cordialement.

Michel

Suite...

Michel ANDREU-2 wrote

Les guillemets n'étaient là que pour le commentaire, pas dans la formule
expérimentée.

Ok mais difficile à deviner :slight_smile:

Michel ANDREU-2 wrote

Pour information, j'ai repris le même tableau que celui d'Ysabeau en y
ajoutant les deux formules, avec ou sans espace, je te laisse découvrir
le résultat :

Ben justement...
<http://nabble.documentfoundation.org/file/n4054585/nbval.png>

Cordialement
Pierre-Yves

Suite...

Michel ANDREU-2 wrote

Les guillemets n'étaient là que pour le commentaire, pas dans la formule
expérimentée.

Ok mais difficile à deviner :slight_smile:

Je te l'accorde, excuses-moi, j'aurais dû être plus clair.

Michel ANDREU-2 wrote

Pour information, j'ai repris le même tableau que celui d'Ysabeau en y
ajoutant les deux formules, avec ou sans espace, je te laisse découvrir
le résultat :

Ben justement...
<http://nabble.documentfoundation.org/file/n4054585/nbval.png>

L'étonnant c'est que sur la version que j'ai téléchargé il y a bien un espace !

Cordialement
Pierre-Yves

Cordialement.
Michel

Suite...

Michel ANDREU-2 wrote

Les guillemets n'étaient là que pour le commentaire, pas dans la formule
expérimentée.

Ok mais difficile à deviner :slight_smile:

Michel ANDREU-2 wrote

Pour information, j'ai repris le même tableau que celui d'Ysabeau en y
ajoutant les deux formules, avec ou sans espace, je te laisse découvrir
le résultat :

Ben justement...
<http://nabble.documentfoundation.org/file/n4054585/nbval.png>

Pour éviter une confusion, j'avais modifié la formule en supprimant l'espace. Ceci explique cela. Mais la formule originale comportait bien un espace.

Cordialement

Michel

Calc rajoute des espaces de temps en temps.
Par exemple, si je tape 19,6%, Calcl peut ajouter un espace et transformer de fait le nombre en lettres, mais pas tout le temps. Et je trouve ça assez gênant d'ailleurs.

Il a rajouté l'espace dans la formule incriminée et aussi les espèces d'apostrophes dans cette formule-ci :

=NBVAL('Affectation') où les données sont issues d'une plage et ne sont que du texte. Précision, si je supprime les apostrophes, Calc les rajoute.

alors qu'ici : =NBVAL(dpaiement) il ne les rajoute pas bien que les données soient du texte et issues d'une plage...

Cela dit, ça fonctionne, sauf les espaces devant le %.

Mais on *ne peut absolument pas* définir un nom de plage avec des espaces dedans, le bouton <Ajouter> reste imperturbablement grisé et Calc affiche la bande bleue avec le message d'erreur. Je dois dire qu'Excel ne hurle qu'au moment où on enregistre le nom...

Bonjour,

Pour éviter une confusion, j'avais modifié la formule en supprimant
l'espace. Ceci explique cela. Mais la formule originale comportait bien
un espace.

Calc rajoute des espaces de temps en temps.
Par exemple, si je tape 19,6%, Calcl peut ajouter un espace et transformer de fait le nombre en lettres, mais pas tout le temps. Et je trouve ça assez gênant d'ailleurs.

Il s'agit ici de l'insertion automatique d'espace insécable devant les ponctuations double et les %. Ceci se paramètre dans Outils > Options d'AutoCorrection, onglet Options linguistiques, "Ajouter un espace insécable devant les signes de ponctuation spécifiques dans les textes français."
Cependant, cette insertion ne s'opère que dans les textes lors de la frappe. Dans Calc, LibO considère que c'est un texte en cours de frappe lorsque la cellule ne commence pas par un '='. Ainsi si l'on tape dans une cellule :
la variation est de 19,6%
ou
19,6%
un espace insécable est inséré automatiquement. Dans le second cas, c'est assez gênant. Pour contourner le problème, il faut taper
=19,6%
ou désactiver l'insertion automatique d'espace insécable. L'inconvénient c'est que cette insertion est désactivée alors pour tous les modules.

A+

Laurent BP

Bonjour,

un autre mode de contournement que j'utilise, pour éviter ponctuellement l'application de divers automatismes.

Taper 19,6%, aussitôt l'espace insécable s'insère,
taper ctrl+z qui annule l'insertion seulement,
valider la saisie.
On obtient 19,6% sans espace, la cellule contient bien un nombre. Ce que je vérifie avec la formule =CELLULE("type";A1)

19,6 % l
19,6% v
12,6% v
19,6% v
56,0% v

C_Lucien

Bonjour,

Exact, j'ai essayé. L'espace se place quand on écrit la formule.