Parler dans le vide

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :)

Je viens de remarquer une curiosité sur mon Excel 2010 que je n'avais pas encore notée.
J'enfonce probablement une porte ouverte et sans doute quelques réponses à ce message risquent de me couvrir de honte.
Tant pis, je me lance.

J'ai des cellules avec des formules retournant soit la valeur 1, soit la valeur ""
J'ai copié ces cellules et les ai collées en valeur sur des cellules vides.
J'ai donc dans la colonne cible soit la valeur 1 soit du vide.

La copie en valeur des cellules "" est bien apparemment vide mais en y appliquant différents comptages, je trouve des résultats qui ne sont pas ceux auxquels je m'attendais.

Une cellule apparemment "vide" n'est pas vide ( fonction estvide() ), est de type texte ( fonction esttexte() ), compte pour une valeur ( fonction nbval() ). Le format de ces cellules est le format Standard.

Cependant, si on compare une cellule apparemment "vide" à une autre cellule vraiment vide au moyen de l'opérateur d'égalité, alors le résultat donne Vrai.

Pareil chez vous ?


Nota: je viens de voir que j'avais raté :mad: les passages des n * K msg d'un nombre impressionnant de membres. Certains ayant même engrangé plusieurs fois des milliers de messages. Je leur présente mes sincères félications et peut assurer à la plupart que leurs messages sont suivis par moi; ne serait-ce que pour en tirer quelques enseignements. Bravo aux Barbatrucs, nouveaux ou confirmés :)
 

Pièces jointes

  • Vide v1.xlsx
    13 KB · Affichages: 131
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Parler dans le vide

Bonjour mapomme


Un petit coup de F1 nous permet de voir que:
Par exemple, la fonction ESTVIDE renvoie la valeur logique VRAI si l’argument valeur est une référence à une cellule vide et la valeur logique FAUX dans les autres cas.
Donc pour ce point ci c'est normal, non ?
Une cellule apparemment "vide" n'est pas vide ( fonction estvide() )

Sinon je subodore que ce qui est vrai pour ESTNONTEXTE est vrai aussi pour ESTTEXTE
ESTNONTEXTE
La valeur fait référence à tout élément qui n’est pas du texte. (Notez que cette fonction renvoie la valeur VRAI si la valeur fait référence à une cellule vide.)
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Parler dans le vide

Bonjour Staple1600,

C'est vrai. Cependant la cellule C2 semble vide, son nombre de caractère est égal à zéro (=NBCAR(C2) renvoie 0) mais ESTVIDE(C2) renvoie Faux. Elle est toutefois égale à une cellule vide (=C2=G2 renvoie VRAI)

En fait c'est parce que j'avais fait cette manip (coller valeur) et le nombre de cellules non vides (affiché dans la barre d'état) n'était pas le résultat attendu (par moi) -sélectionner C1:C15 et voir dans la barre d'état-

Edit: si on sélectionne C1:C15 et qu'on fait une recherche en laissant le cjamp 'Rechercher' vide, on trouve bien toutes les cellules apparemment vides, comme pour G1:G15.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Parler dans le vide

Re


C'est parce qu'on est dans les autres cas, non ?
VRAI si l’argument valeur est une référence à une cellule vide et la valeur logique FAUX dans les autres cas.
ESTVIDE ne renvoie VRAI que quand la cellule est vraiment vide (ni donnée, ni formule)

En colonne C dans ton fichier, si dans la barre de formule , tu fais DEL puis enter (dans les cellules "vides")
la formule ESTVIDE(Cx) passe à VRAI

Peut-être que quand tu fais un copier/coller le "" de ta formule (en colonne B) équivaut à un vbNullstring
et que dans ce cas la cellule n'est pas vraiment vide.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Parler dans le vide

(re) :)

Mais que contiennent donc les cellules apparemment vides de la colonne C que ne contiennent pas les cellules vides de la colonne G ?
(alors même que l'égalité Cn=Gn est toujours Vrai)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Parler dans le vide

Re


Voir l'édition de mon précédent message
(il m'a fallu le temps de tester ton fichier et d'appuyer sur ENTREE n fois ;) )
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Parler dans le vide

(re),


En colonne C dans ton fichier, si dans la barre de formule , tu fais DEL puis enter (dans les cellules "vides")
la formule ESTVIDE(Cx) passe à VRAI

Peut-être que quand tu fais un copier/coller le "" de ta formule (en colonne B) équivaut à un vbNullstring
et que dans ce cas la cellule n'est pas vraiment vide.

Je n'avais pas vu ton message:

Point 1) j'avais fait et constaté. Mais quand on a plusieurs milliers de lignes (je travaillais sur les 37 000 communes de France), on n'est pas rendu :confused: (j'avais trouvé quand même... F5 puis constante texte puis Suppr)

Point 2) J'étais sur une piste similaire d'une valeur 'extraordinaire' ou plutôt d'un typage de la cellule non nul à la suite du collage d'un string vide. Je pense que tu as raison avec le vbnullstring.

Donc suivant les manips, il faut faire attention aux résultats par ailleurs de formules ou bien des valeurs dans la barre d'état

Edit: la prochaine fois, c'est promis, je réduirai le volume de l'exemple ;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Parler dans le vide

Re


Ou alors dans les formules, on remplace le "" par 0
et dans les options Excel on décoche Valeurs zéro
(personnellement c'est ce que je fait)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Parler dans le vide

Re,

Oui, je sens que je vais le faire plus souvent (comme, par ailleurs, la barre d'état ne compte pas ce que souhaite avec les ""...)
dans les cas où le zéro n'est pas une valeur possible.
 
Dernière édition:

VIARD

XLDnaute Impliqué
Re : Parler dans le vide

Bonjour MaPomme, Staple et tous

Cette histoire de cellules vide ou non vide c'est la poisse...
NbVal les détecte bien mais ne donne pas la position.

Pour MaPomme, j'ai réalisé un programme sur les communes.
Donc si tu es intéressé? , après tout on m'a bien aidé alors.

Amicalement

Jean-Paul
 

Dranreb

XLDnaute Barbatruc
Re : Parler dans le vide

Bonjour
Si A1 est vide
Code:
=ET(A1="";A1=0)
donne VRAI.
Parce qu'en convertissant Empty en String on obtient "" et en numérique 0
 

Misange

XLDnaute Barbatruc
Re : Parler dans le vide

Hello tutti,

Jolie démo du problème Mapomme...

Ce que tu signales a effectivement été déjà noté
Si dans ton classeur tu écris
=si(C1="";"quasi vide";C1)
su verras que ça te renvoie "quasi vide sur les cellules apparemment vides
alors que si tu fais cela sur la colonne G, ça te renvoie 0
"" n'est pas vide pour excel. C'est quelque chose qui ne contient rien :) mais c'est quelque chose quand même...
Et pourtant code(C2) et code(G2) renvoie dans les deux cas #VALEUR!

Ce qui est encore plus bizarre : copie maintenant une cellule vraiment vide
colle la dans C2 et dans G2
ça ne change rien: C2 renvoie "quasi vide" alors que G2 renvoie 0
C'est la mémoire de l'eau cette affaire :)

Ca fait des lurettes et des lurettes qu'il est demandé à microsoft de traiter enfin le problème des cellules vides. Notamment de disposer d'une fonction"estvidebis" qui permette d'écrire en B1
si A1 est vide alors vide sinon A1
et que estvidebis(B1) renvoie vrai.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Parler dans le vide

Bonjour Misange :)

Merci pour ton intervention. Je n'avais pas pensé à copier une cellule vide dans C et G. J'étais même parti en VBA en testant Value2 (car je pensais à une mémoire de TYPE soit texte ou numérique ou autre chose).

Attendons donc le bon vouloir de MS :(

(...) C'est quelque chose qui ne contient rien :) mais c'est quelque chose quand même... (...)

Je ne résiste pas -> Je propose donc d'arrêter de parler dans le vide pour plutôt parler de rien. ;)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Parler dans le vide

Bonjour.
Oui, car c'est ça représente plus ! La preuve:
"Rien c'est rien, bon. Deux fois rien c'est pas grand chose. Mais trois fois rien ?… Avec trois fois rien, on peut déjà s'acheter quelque chose !" (Raymond DEVOS)
 

klin89

XLDnaute Accro
Re : Parler dans le vide

Bonsoir le forum,

Sur le coup, j'avais pas pigé le titre de la discussion :p
Observons le résultat :
VB:
Sub chaine()
Dim var1 As Variant
'Initialise une chaîne vide
var1 = ""
If IsEmpty(var1) Then
  MsgBox ("IsEmpty(var1) est vrai")
Else
  MsgBox ("IsEmpty(var1) est faux")
End If
Dim var2 As String
'Initialise une chaîne vide
var2 = ""
If IsEmpty(var2) Then
  MsgBox ("IsEmpty(var2) est vrai")
Else
  MsgBox ("IsEmpty(var2) est faux")
End If

'Une variable Variant qui n'a pas été
'initialisée contiendra la valeur Empty
Dim var3 As Variant
If IsEmpty(var3) Then
  MsgBox ("IsEmpty(var3) est vrai")
Else
  MsgBox ("IsEmpty(var3) est faux")
End If
Dim var4 As String
If IsEmpty(var4) Then
  MsgBox ("IsEmpty(var4) est vrai")
Else
  MsgBox ("IsEmpty(var4) est faux")
End If
'Empty ne s'applique qu'aux variables Variant
End Sub

Klin89
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 181
dernier inscrit
Ledoux