OVH Cloud OVH Cloud

Pb d'argument

20 réponses
Avatar
Chadenet
Quelle différence y a-t-il entre "" et le 0 . Ex: AB5<>"" ou bien AB5<>0 ?

Que se passe-t-il si la cellule à laquelle on fait référence est vide ?
Merci de m'aider car je suis un peu paumée!!
Véronique


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.737 / Virus Database: 491 - Release Date: 11/08/2004

10 réponses

1 2
Avatar
Chadenet
1.. Merci pour ta réponse, mais, je n'ai, quand même, pas compris la
différence entre 0 et "" !


Pour m'aider à comprendre, je vais prendre l'exemple particulier qui suit.
Quelle différence précise y a-t-il dans la fonction ET suivante entre
ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5) ?



2. Qu'est-ce qu'une « chaîne de caractères » ?



Merci de tes réponses.




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.737 / Virus Database: 491 - Release Date: 11/08/2004
Avatar
Michel Gaboly
Bonsoir,

1 - Pour la différence entre 0 et "", imagine 2 voitures.

La plaque d'immatriculation de l'une n'affiche aucun caractère ; c'est
l'équivalent de "", c'est-à-dire un texte vide. Pour Excel même vide,
il s'agit de texte.

La plaque d'immatriculation de l'autre n'affiche 0 (zéro). Pour Excel,
il s'agit d'un nombre.


Visuellement, si on a choisi dans les préférences de ne pas afficher les
zéros cela semble équivalent, mais si tu as quelque part une formule
contenant

= A1 * B1

avec 2 en B1, le résultat sera 0 si A1 contient 0 et #VALEUR! si A1
contient "", car multiplier un texte (même vide) par un nombre n'a
aucun sens.

De même la comparaison entre A1 et un nombre en A2, par exemple
A2 > A1 a un sens si A1 contient 0, pas si A1 contient ""

Quant à ton exemple, ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5),
outre le fait que dans un cas tu as AV5 inférieur à G5 et dans l'autre
AV5 supérieur à G5 (faute de frappe), AV5 <> 0 sera VRAI si AV5
contient "", pas si AV5 contient 0

...


2 - Une chaîne de caractères est une suite quelconque de caractères (let-
tres, chiffres, symboles, éléments de ponctuation, ...) qu'Excel ou VBA
traite comme un morceau de texte, qu'il ne cherche pas à interpréter.

Si tu définis dans un classeur Excel le nom TxTVA comme se référant
à la cellule A2 de la feuille 1, la formule

=TxTVA

affiichera la valeur de la cellule A2 de la feuille 1. TxTVA n'est pas une
chaîne de caractère mais un nom défini.

Par contre la formule

="TxTVA"

avec des guillemets en + affichera le texte "TxTVA" dans la cellule. Il
s'agit ici d'une chaîne de caractères.

Un complément ici :

http://www.gaboly.com/Excel/Chaine.html



1.. Merci pour ta réponse, mais, je n'ai, quand même, pas compris la
différence entre 0 et "" !

Pour m'aider à comprendre, je vais prendre l'exemple particulier qui suit.
Quelle différence précise y a-t-il dans la fonction ET suivante entre
ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5) ?

2. Qu'est-ce qu'une « chaîne de caractères » ?

Merci de tes réponses.

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.737 / Virus Database: 491 - Release Date: 11/08/2004


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
michdenis
Bonjour Véronique,

Réponse à la question 2

Une chaîne de caractère, c'est un ou une suite de plusieurs caractères. Ces derniers peuvent être numériques ou
alphanumériques. La chaîne de caractères est considérée comme étant du texte. Que tu sois dans une cellule ou dans une
feuille de macro ou dans une formule de la feuille, tu dois toujours entourer une chaîne de caractère par des guillemets.

"A" est une chaîne de caractère
"a125é" est une chaîne de caractère


Réponse à la question 1

ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5) ?

Ce qui suit est vrai pour les 2 formules que tu présentes ....bien que j'ai choisi la première pour les fins de
l'explication.

A ) les formules avec un Et(.....), Tous les arguments de la fonction Et() doivent être "VRAI" pour que la fonction retourne
VRAI et ce, quel que soit le nombre d'arguments de la fonction ET(). Si un seul argument est Faux, alors la fonction Et()
renvoie Faux.

=ET(AV5<>0 ;AV5<G5)
Tu aurais pu écrire comme formule seulement ceci:
=(AV5<>0 ;AV5<G5) ---> même résultat.

si AV5<>0 est Vrai , sa valeur est 1
Et pour que cette condition soit remplie,
AV5 peut contenir du texte OU n'importe quel nombre <>0
Le fait que le contenu soit différent de zéro, cela n'exclut pas
la possibilité que le contenu de AV5 soit du texte ....et en cela
ta formule n'est pas explicite.

si AV5<G5 est vrai , sa valeur est 1

Prenons pour acquis qu'en G5 il y ait 10.

Si AV5 est réellement un NOMBRE différent de 0
La comparaison entre 2 nombres (AV5<G5 ) va
se faire normalement basé sur la valeur mathématique
du contenu des cellules et cet argument retournera vrai
ou faux selon la valeur contenu dans la cellule AV5

Si AV5 contient du texte, ll y aura aussi une comparaison
entre les deux cellules AV5 et G5, mais cette dernière sera
basée sur la valeur ASCII des caractères. Et cette
comparaison se fera caractère par caractère. Le premier
caractère de la cellule AV5 (en partant de la droite) sera
comparé au premier caractère de la cellule G5 (En partant de
la droite) ainsi de suite ....Théoriquement, il se pourrait
bien que AV5 soit plus petit ou plus grand que G5 .

Si tu veux éviter que la dernière alternative puisse se présenter,
tu dois t'assurer que tu testes si chacune des cellules AV5 et G5
contiennent une valeur numérique et la formule pourrait devenir :

et (estnum(AV5);AV5<>0;Estnum(g5);AV5<G5)
Comme mentionné plutôt, seulement si chacun des arguments de la
formule est vrai, alors la formule renverra Vrai OU 1. Dans tous
les autres cas, elle renverra 0.

Tu peux t'amuser à refaire cette démonstration pour l'autre formule que tu as soumise !

Salutations!

P.S. Qu'est-ce un caractère ASCII ?

Comme tu sais, un processeur ne peut lire que du binaire; des 0 et 1 .
Pour représenter chaque caractère qu'il soit numérique ou
alphanumérique, un octet est utilisé. Ce dernier comprend
8 bits... chacun des bits pouvant prendre la valeur de 0 ou 1
On obtient 2 exposant 8 combinaisons différentes de composé
des 0 et des 1 .... soit 256 possibilités. La valeur ASCII est la
représentation sous forme décimale de la valeur binaire des
caractères.




"Chadenet" a écrit dans le message de news:
1.. Merci pour ta réponse, mais, je n'ai, quand même, pas compris la
différence entre 0 et "" !


Pour m'aider à comprendre, je vais prendre l'exemple particulier qui suit.
Quelle différence précise y a-t-il dans la fonction ET suivante entre
ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5) ?



2. Qu'est-ce qu'une « chaîne de caractères » ?



Merci de tes réponses.




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.737 / Virus Database: 491 - Release Date: 11/08/2004
Avatar
michdenis
Dans ce texte,

Le premier
caractère de la cellule AV5 (en partant de la droite) sera
comparé au premier caractère de la cellule G5 (En partant de
la droite) ainsi de suite


On devrait lire : " en partant de la gauche "


Salutations!



"michdenis" a écrit dans le message de news:
Bonjour Véronique,

Réponse à la question 2

Une chaîne de caractère, c'est un ou une suite de plusieurs caractères. Ces derniers peuvent être numériques ou
alphanumériques. La chaîne de caractères est considérée comme étant du texte. Que tu sois dans une cellule ou dans une
feuille de macro ou dans une formule de la feuille, tu dois toujours entourer une chaîne de caractère par des guillemets.

"A" est une chaîne de caractère
"a125é" est une chaîne de caractère


Réponse à la question 1

ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5) ?

Ce qui suit est vrai pour les 2 formules que tu présentes ....bien que j'ai choisi la première pour les fins de
l'explication.

A ) les formules avec un Et(.....), Tous les arguments de la fonction Et() doivent être "VRAI" pour que la fonction retourne
VRAI et ce, quel que soit le nombre d'arguments de la fonction ET(). Si un seul argument est Faux, alors la fonction Et()
renvoie Faux.

=ET(AV5<>0 ;AV5<G5)
Tu aurais pu écrire comme formule seulement ceci:
=(AV5<>0 ;AV5<G5) ---> même résultat.

si AV5<>0 est Vrai , sa valeur est 1
Et pour que cette condition soit remplie,
AV5 peut contenir du texte OU n'importe quel nombre <>0
Le fait que le contenu soit différent de zéro, cela n'exclut pas
la possibilité que le contenu de AV5 soit du texte ....et en cela
ta formule n'est pas explicite.

si AV5<G5 est vrai , sa valeur est 1

Prenons pour acquis qu'en G5 il y ait 10.

Si AV5 est réellement un NOMBRE différent de 0
La comparaison entre 2 nombres (AV5<G5 ) va
se faire normalement basé sur la valeur mathématique
du contenu des cellules et cet argument retournera vrai
ou faux selon la valeur contenu dans la cellule AV5

Si AV5 contient du texte, ll y aura aussi une comparaison
entre les deux cellules AV5 et G5, mais cette dernière sera
basée sur la valeur ASCII des caractères. Et cette
comparaison se fera caractère par caractère. Le premier
caractère de la cellule AV5 (en partant de la droite) sera
comparé au premier caractère de la cellule G5 (En partant de
la droite) ainsi de suite ....Théoriquement, il se pourrait
bien que AV5 soit plus petit ou plus grand que G5 .

Si tu veux éviter que la dernière alternative puisse se présenter,
tu dois t'assurer que tu testes si chacune des cellules AV5 et G5
contiennent une valeur numérique et la formule pourrait devenir :

et (estnum(AV5);AV5<>0;Estnum(g5);AV5<G5)
Comme mentionné plutôt, seulement si chacun des arguments de la
formule est vrai, alors la formule renverra Vrai OU 1. Dans tous
les autres cas, elle renverra 0.

Tu peux t'amuser à refaire cette démonstration pour l'autre formule que tu as soumise !

Salutations!

P.S. Qu'est-ce un caractère ASCII ?

Comme tu sais, un processeur ne peut lire que du binaire; des 0 et 1 .
Pour représenter chaque caractère qu'il soit numérique ou
alphanumérique, un octet est utilisé. Ce dernier comprend
8 bits... chacun des bits pouvant prendre la valeur de 0 ou 1
On obtient 2 exposant 8 combinaisons différentes de composé
des 0 et des 1 .... soit 256 possibilités. La valeur ASCII est la
représentation sous forme décimale de la valeur binaire des
caractères.




"Chadenet" a écrit dans le message de news:
1.. Merci pour ta réponse, mais, je n'ai, quand même, pas compris la
différence entre 0 et "" !


Pour m'aider à comprendre, je vais prendre l'exemple particulier qui suit.
Quelle différence précise y a-t-il dans la fonction ET suivante entre
ET(AV5<>0 ;AV5<G5) et ET(AV5<>"" ;AV5>G5) ?



2. Qu'est-ce qu'une « chaîne de caractères » ?



Merci de tes réponses.




---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.737 / Virus Database: 491 - Release Date: 11/08/2004
Avatar
JièL Goubert
Bonjoir(c) michdenis

Merci de t'inquiéter de mes réflexions métaphysiques ;-))))))))

bon, c'est quand que quelqu'un pond une fonction qui renvoi _rien_ ? ;-)))

--
JièL 3 fois rien, ca fait plus que rien du tout (Raymond Devos, ça déjà plus
comtemporain ;-))


Le 18/08/2004 13:25 vous avez écrit ceci :
Bonjour Jièl,

Question d'en remettre une couche ....

En présence de la dite apostrophe ...

la formule = nbcar(E2) renvoie 0 ce qui laisserait supposé qu'une cellule sans caractère est vraiment vide ... Non ?

Pour alimenter tes réflexions métaphysiques la nuit prochaine !

;-))

Salutations!



"JièL Goubert" a écrit dans le message de
news:
Bonjoir(c) michdenis

Le 18/08/2004 04:48 vous avez écrit ceci :

Bonsoir Jièl,



est-il possible de renvoyer vraiment _rien_ dans une formule du genre =SI(A1=1;rien;"autre") au lieu de "" ?


*** Pas à ma connaissance ...ce serait quand même spécial d'avoir une formule dans une cellule et en même temps de


prétendre

qu'elle est totalement vide !!!



Certes, mais alors comment renvoyer vraiment rien ??? ;-)
Ce n'est pas important, c'etait juste une question métaphysique de nuit
;-)))))))


Le Hic avec cette formule =ESTVIDE(E2) c'est qu'elle retourne FAUX si un symbole comme ' l'apostrophe désignant que la
cellule est au format texte est présente dans la cellule.



Ca me parait dans la même logique que le "" renvoyé par un SI par exemple,
donc RAS, TVB ;-)


Pour imager cette cellule ... je serais tenté d'utiliser des expressions comme "Vierge", "immaculé" pour qualifier ce que
retourne la formule =ESTVIDE(E2) . ;-)



Faut inventer une fonction alors =VIERGE(E2) ou =IMMACULE(E2) ;-))))))))))))
MDR

Si le coeur vous en dit... ;-)



--
La FAQ Outlook est la : http://faq.outlook.free.fr
JièL / Jean-Louis GOUBERT
Co-auteur de "Internet + de 1 000 trucs de pros" chez Micro Application
http://faq.outlook.free.fr/livreMA/internet_plus_de_1000_trucs_de_pros.htm



Avatar
JièL Goubert
Bonjoir(c) Match

Dis, c'est de la bonne que tu fumes toi !!! ;-)))
Y t'en restes un peu ? ;-)))))

--
JièL Fut Meurt

Le 18/08/2004 15:12 vous avez écrit ceci :

Salut Jièl et les autres,

alors dans ta ligne de pensée, ce serait une nouvelle "conception"

=si(immaculé(conception)=vierge();;"")

ce que j'appellerais une formule mirâcle
il ne manque que la bénédiction "pas pâle"

Charles


mercredi , JièL Goubert nous disait :


Bonjoir(c) michdenis

Le 18/08/2004 04:48 vous avez écrit ceci :

Bonsoir Jièl,




=VIERGE(E2) ou =IMMACULE(E2) ;-))))))))))))

MDR





Avatar
Ricky
Bonjour *Chadenet* (et tous les lecteurs)


| 1.. Merci pour ta réponse, mais, je n'ai, quand même, pas compris la
| différence entre 0 et "" !
|
| Pour m'aider à comprendre, je vais prendre l'exemple particulier qui
| suit. Quelle différence précise y a-t-il dans la fonction ET suivante
| entre ET(AV5<>0 ;AV5<G5) et

Vrai pour toutes les valeurs inférieures à G5 sauf 0

ET(AV5<>"" ;AV5<G5) ?

Vrai pour toutes les valeurs inférieures à G5 y compris 0
--
Ricky [MVP] Visitez les faq....
http://www.faqoe.com http://faqword.free.fr
http://dj.joss.free.fr/faq.htm http://www.excelabo.net
Avatar
michdenis
Bonjour Jièl,

Et pour la fonction Vierge :

'---------------------
Function Vierge(Rg As Range)

If VarType(Rg) = 0 Then
Vierge = True
End If

End Function
'---------------------

Et dans une cellule de la feuille :

=Vierge(A1)

;-)))


Salutations!




"JièL Goubert" a écrit dans le message de
news:
Bonjoir(c) Michel Gaboly

Le 18/08/2004 08:02 vous avez écrit ceci :
Salut JièL,

Selon moi, une cellule vide est une cellule dans laquelle aucun caractère
n’est visible EN MODE Affichage des formules.. Par conséquent, ce vide ne
peut résulter d'une formule dans la cellule ;-((


Ouais, tu as parfaitement raison sur le principe, mais bon, dommage quand même.
Comme proposé dans ma réponse à michdenis, il faudrais une fonction
=VIERGE() ou qqchose d'autre ;-) qui retourne vrai si la cellule "n'affiche"
pas de données

La seule façon s’obtenir de résultat est de recourir à VBA :


Donc faut juste créer une fonction perso à partir de ça...
Mais comme je l'ai dit précédement, ce n'est qu'un exercice de style et une
question de nuit sans importance ;-)))))))))

Merci quand même d'y avoir réfléchi

--
La FAQ Outlook est la : http://faq.outlook.free.fr
JièL / Jean-Louis GOUBERT
Co-auteur de "Internet + de 1 000 trucs de pros" chez Micro Application
http://faq.outlook.free.fr/livreMA/internet_plus_de_1000_trucs_de_pros.htm

Avatar
michdenis
Elle est partie trop vite... je n'ai pas eu le temps de la compléter ...;-))


Function Vierge(Rg As Range) As Boolean
Vierge = False
If VarType(Rg) = 0 Then
Vierge = True
End If

End Function


Salutations!



"michdenis" a écrit dans le message de news:uzBx%
Bonjour Jièl,

Et pour la fonction Vierge :

'---------------------
Function Vierge(Rg As Range)

If VarType(Rg) = 0 Then
Vierge = True
End If

End Function
'---------------------

Et dans une cellule de la feuille :

=Vierge(A1)

;-)))


Salutations!




"JièL Goubert" a écrit dans le message de
news:
Bonjoir(c) Michel Gaboly

Le 18/08/2004 08:02 vous avez écrit ceci :
Salut JièL,

Selon moi, une cellule vide est une cellule dans laquelle aucun caractère
n'est visible EN MODE Affichage des formules.. Par conséquent, ce vide ne
peut résulter d'une formule dans la cellule ;-((


Ouais, tu as parfaitement raison sur le principe, mais bon, dommage quand même.
Comme proposé dans ma réponse à michdenis, il faudrais une fonction
=VIERGE() ou qqchose d'autre ;-) qui retourne vrai si la cellule "n'affiche"
pas de données

La seule façon s'obtenir de résultat est de recourir à VBA :


Donc faut juste créer une fonction perso à partir de ça...
Mais comme je l'ai dit précédement, ce n'est qu'un exercice de style et une
question de nuit sans importance ;-)))))))))

Merci quand même d'y avoir réfléchi

--
La FAQ Outlook est la : http://faq.outlook.free.fr
JièL / Jean-Louis GOUBERT
Co-auteur de "Internet + de 1 000 trucs de pros" chez Micro Application
http://faq.outlook.free.fr/livreMA/internet_plus_de_1000_trucs_de_pros.htm

Avatar
JièL Goubert
Bonjoir(c) michdenis

je devrais pas veiller si tard... bon, tant pis, j'assume : je m'es gourré !
Ta fonction est farpaite, mais c'est pas ce que je cherchais en fait... mais
je pense que ça n'est pas possible.

En fait, plusieurs personnes ont dernièrement soulevé un soucis, a savoir
qu'il n'est pas possible dans Excel d'avoir une formule qui revoi la valeur
_rien_ ;-)

Ta fonction est effectivement utile pour savoir si une cellule affiche ou
pas qqchose, et c'est déjà trés bien comme ça, je cherchais plutot qqchose
que l'on pourrait utiliser dans un SI à la place du "" par exemple.

=SI(A1=1;RIEN();"autre_chose")

Le RIEN() (ou n'importe qu'elle autre nom en fait, je suis pas attaché à ça
;-p) renverrai réellement aucune donnée, ce qui permettrai de faire de
calcul sur une série sans fausser le résultat ex : B1*1. Si "rien" dans une
cellule, pas de pb, si "" alors erreur. Dans le même cas, on as aussi les
graphique de véronique (je crois) dans lesquels elle affiche une série de
moyenne, mais pour eviter l'affichage des #DIV/0! il y a une fonction
=SI(condition;"";moyenne) le "" pose un pb au graphe. Bien sur on peut
remplacer le "" par un NA(), mais en terme d'affichage c'est plus que môche
et on ne peut la non plus, plus utiliser la cellule pour des calcul.

Donc il manque une fonction qui renvoi _rien_ ;-))))))))
Est-ce possible ? j'en doute fort, mais y'a des balèzes de la fonction
tordue ici, dont je ne doute pas qu'il vont se casser les dents sur ce
probléme toujours aussi métaphysique -du moins pour moi-, mais qui pourrait
surement en aider beaucoup.

Si on plus on garde la fonction partie trop vite de Michdenis, on est sauvé
;-)))

Bon, une camomille et au lit ;-)))

--
La FAQ Outlook est la : http://faq.outlook.free.fr
JièL / Jean-Louis GOUBERT
Co-auteur de "Internet + de 1 000 trucs de pros" chez Micro Application
http://faq.outlook.free.fr/livreMA/internet_plus_de_1000_trucs_de_pros.htm

Le 19/08/2004 16:21 vous avez écrit ceci :
Elle est partie trop vite... je n'ai pas eu le temps de la compléter ...;-))


Function Vierge(Rg As Range) As Boolean
Vierge = False
If VarType(Rg) = 0 Then
Vierge = True
End If

End Function


Salutations!



"michdenis" a écrit dans le message de news:uzBx%
Bonjour Jièl,

Et pour la fonction Vierge :

'---------------------
Function Vierge(Rg As Range)

If VarType(Rg) = 0 Then
Vierge = True
End If

End Function
'---------------------

Et dans une cellule de la feuille :

=Vierge(A1)

;-)))


Salutations!




"JièL Goubert" a écrit dans le message de
news:
Bonjoir(c) Michel Gaboly

Le 18/08/2004 08:02 vous avez écrit ceci :

Salut JièL,

Selon moi, une cellule vide est une cellule dans laquelle aucun caractère
n'est visible EN MODE Affichage des formules.. Par conséquent, ce vide ne
peut résulter d'une formule dans la cellule ;-((



Ouais, tu as parfaitement raison sur le principe, mais bon, dommage quand même.
Comme proposé dans ma réponse à michdenis, il faudrais une fonction
=VIERGE() ou qqchose d'autre ;-) qui retourne vrai si la cellule "n'affiche"
pas de données


La seule façon s'obtenir de résultat est de recourir à VBA :



Donc faut juste créer une fonction perso à partir de ça...
Mais comme je l'ai dit précédement, ce n'est qu'un exercice de style et une
question de nuit sans importance ;-)))))))))

Merci quand même d'y avoir réfléchi



1 2