Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Index et texte

7 réponses
Avatar
bcar
Bonjour,

soit les données suivantes
ColA ColB
1 toto
2
3 titi
4 tata

si je fais =index(B1:B4;3) => titi
mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
alors OK je peux faire
=T(index(B1:B4;2))
ou encore
=Texte(index(B1:B4;2);"")
j'obtiens alors bien ""

mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffres
du genre :
ColA ColB
1 toto
2 123
3 46
4 tata28

=T(index(B1:B4;2)) => ""
=index(B1:B4;2) => 123

j'ai alors le problème "inverse" !

Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dans
un tel cas.

j'aimerais bien sûr éviter les formules redondantes du genre
=si(index(B1:B4;2)=0;"";index(B1:B4;2))
D'autant que cela ne me permettrai pas de différencier un vrai 0 d'une
cellule vide

Merci.

7 réponses

Avatar
LSteph
Bonjour,

Et bien sans doute que tes nombres ne sont pas entrés en texte '123
mais en chiffres 123
sinon tu aurais bien 123 idem avec les deux formules.

Cordialement.

--
LSteph

On 12 jan, 14:10, bcar wrote:
Bonjour,

soit les données suivantes
ColA    ColB
1       toto
2      
3       titi
4       tata

si je fais =index(B1:B4;3) => titi
mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à " ")
alors OK je peux faire
=T(index(B1:B4;2))
ou encore
=Texte(index(B1:B4;2);"")
j'obtiens alors bien ""

mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffres
du genre :
ColA    ColB
1       toto
2       123
3       46
4       tata28

=T(index(B1:B4;2)) => ""
=index(B1:B4;2) => 123

j'ai alors le problème "inverse" !

Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dan s
un tel cas.

j'aimerais bien sûr éviter les formules redondantes du genre
=si(index(B1:B4;2)=0;"";index(B1:B4;2))
D'autant que cela ne me permettrai pas de différencier un vrai 0 d'une
cellule vide

Merci.
Avatar
bcar
Le 12/01/2011 14:24, LSteph a écrit :
Bonjour,

Et bien sans doute que tes nombres ne sont pas entrés en texte '123
mais en chiffres 123
sinon tu aurais bien 123 idem avec les deux formules.

Cordialement.



Bien sûr, mais les cellules en question contiennent des chiffres et des
textes (et aussi des formules)

je ne peux donc pas garantir le format texte dans l'absolu
De plus même en forcant le format texte une cellule vide avec
A B
1 toto
2
3 titi

index(B1:B3;2) => 0
par contre OK si je met un ' dans la cellule ou si je met la formule =""
j'aurais bien
index(B1:B3;2) => ""

Mais ce que je voudrais c'est finalement un truc du genre

{=INDEX(SI(NBCAR(B1:B3)=0;"";B1:B3);2)} (Formule Matricielle)
si la cellule est vide transforme le vide en texte vide sinon utilise la
valeur/format de la cellule

Mais peut être existe-il quelque chose de moins compliqué et non
redondant (2 références à la même plage dans ma formule) et pas en
matriciel


--
LSteph

On 12 jan, 14:10, bcar wrote:
Bonjour,

soit les données suivantes
ColA ColB
1 toto
2
3 titi
4 tata

si je fais =index(B1:B4;3) => titi
mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
alors OK je peux faire
=T(index(B1:B4;2))
ou encore
=Texte(index(B1:B4;2);"")
j'obtiens alors bien ""

mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffres
du genre :
ColA ColB
1 toto
2 123
3 46
4 tata28

=T(index(B1:B4;2)) => ""
=index(B1:B4;2) => 123

j'ai alors le problème "inverse" !

Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dans
un tel cas.

j'aimerais bien sûr éviter les formules redondantes du genre
=si(index(B1:B4;2)=0;"";index(B1:B4;2))
D'autant que cela ne me permettrai pas de différencier un vrai 0 d'une
cellule vide

Merci.



Avatar
bcar
En fait le problème pourrait se réduire à
A B
toto 1
5 2
titi
titi 1

£ => 0
existe t-il une autre formule qui fasse l'équivalent de
=si(A3="";"";A3) sans répéter A3 et avec A3 définit en standard

Bon en fait j'ai bien plein de solutions alternatives mais aucune n'est
complétement satisfaisante.

Le 12/01/2011 14:45, bcar a écrit :
Le 12/01/2011 14:24, LSteph a écrit :
Bonjour,

Et bien sans doute que tes nombres ne sont pas entrés en texte '123
mais en chiffres 123
sinon tu aurais bien 123 idem avec les deux formules.

Cordialement.



Bien sûr, mais les cellules en question contiennent des chiffres et des
textes (et aussi des formules)

je ne peux donc pas garantir le format texte dans l'absolu
De plus même en forcant le format texte une cellule vide avec
A B
1 toto
2
3 titi

index(B1:B3;2) => 0
par contre OK si je met un ' dans la cellule ou si je met la formule =""
j'aurais bien
index(B1:B3;2) => ""

Mais ce que je voudrais c'est finalement un truc du genre

{=INDEX(SI(NBCAR(B1:B3)=0;"";B1:B3);2)} (Formule Matricielle)
si la cellule est vide transforme le vide en texte vide sinon utilise la
valeur/format de la cellule

Mais peut être existe-il quelque chose de moins compliqué et non
redondant (2 références à la même plage dans ma formule) et pas en
matriciel


--
LSteph

On 12 jan, 14:10, bcar wrote:
Bonjour,

soit les données suivantes
ColA ColB
1 toto
2
3 titi
4 tata

si je fais =index(B1:B4;3) => titi
mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
alors OK je peux faire
=T(index(B1:B4;2))
ou encore
=Texte(index(B1:B4;2);"")
j'obtiens alors bien ""

mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffres
du genre :
ColA ColB
1 toto
2 123
3 46
4 tata28

=T(index(B1:B4;2)) => ""
=index(B1:B4;2) => 123

j'ai alors le problème "inverse" !

Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dans
un tel cas.

j'aimerais bien sûr éviter les formules redondantes du genre
=si(index(B1:B4;2)=0;"";index(B1:B4;2))
D'autant que cela ne me permettrai pas de différencier un vrai 0 d'une
cellule vide

Merci.






Avatar
LSteph
Bonjour,

Le premier souci à traiter est déjà clairement celui-ci

..les cellules en question contiennent des chiffres et des
textes (et aussi des formules)



cela signifie qu'on a des façons différentes d'alimenter une même
colonne
prioritairement c'est un truc à éviter.
Pour une bonne gestion de ton tableau commencer en favorisant la
façon la plus directe et pratique d'obtenir les données.

S'il te parvient dans un état aussi désatreux à l'insu de ton plein
gré , tu peux sans doute faire un copier coler Spécial valeur et
forcer la colonne au format texte.

Sinon forcément des formules qui l'une renvoie une valeur et l'autre
un texte n'auront pas nécessairement le même comportement , c'est tout
à fait normal.

Cordialement.

--
LSteph




On 12 jan, 14:45, bcar wrote:
Le 12/01/2011 14:24, LSteph a écrit :

> Bonjour,

> Et bien sans doute que  tes nombres ne sont pas entrés en texte '12 3
> mais en chiffres  123
> sinon tu aurais bien 123 idem avec les deux formules.

> Cordialement.

Bien sûr, mais les cellules en question contiennent des chiffres et des
textes (et aussi des formules)

je ne peux donc pas garantir le format texte dans l'absolu
De plus même en forcant le format texte une cellule vide avec
A       B
1       toto
2      
3       titi

index(B1:B3;2) => 0
par contre OK si je met un ' dans la cellule ou si je met la formule =" "
j'aurais bien
index(B1:B3;2) => ""

Mais ce que je voudrais c'est finalement un truc du genre

{=INDEX(SI(NBCAR(B1:B3)=0;"";B1:B3);2)} (Formule Matricielle)
si la cellule est vide transforme le vide en texte vide sinon utilise la
valeur/format de la cellule

Mais peut être existe-il quelque chose de moins compliqué et non
redondant (2 références à la même plage dans ma formule)  et pa s en
matriciel



> --
> LSteph

> On 12 jan, 14:10, bcar wrote:
>> Bonjour,

>> soit les données suivantes
>> ColA    ColB
>> 1       toto
>> 2      
>> 3       titi
>> 4       tata

>> si je fais =index(B1:B4;3) => titi
>> mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
>> alors OK je peux faire
>> =T(index(B1:B4;2))
>> ou encore
>> =Texte(index(B1:B4;2);"")
>> j'obtiens alors bien ""

>> mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffre s
>> du genre :
>> ColA    ColB
>> 1       toto
>> 2       123
>> 3       46
>> 4       tata28

>> =T(index(B1:B4;2)) => ""
>> =index(B1:B4;2) => 123

>> j'ai alors le problème "inverse" !

>> Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
>> technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dans
>> un tel cas.

>> j'aimerais bien sûr éviter les formules redondantes du genre
>> =si(index(B1:B4;2)=0;"";index(B1:B4;2))
>> D'autant que cela ne me permettrai pas de différencier un vrai 0 d'u ne
>> cellule vide

>> Merci.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -
Avatar
LSteph
..en résumé index à l'air de faire ce que tu souihaites dans les deux
cas face à cette multiplicité de types de données
pour l'autre cas tu peux aussi enlever l'affichage des 0, mais c'est
moins propre san doute.

J'en maintiens toutefois que je favoriserais si c'était mon tableau
qu'il y ait un type de données unique dans ma colonne.

@+

--
LSteph

On 12 jan, 15:17, LSteph wrote:
Bonjour,

Le premier souci à traiter est déjà clairement celui-ci

> ..les cellules en question contiennent des chiffres et des
> textes (et aussi des formules)

cela signifie qu'on a des façons différentes d'alimenter une même
colonne
prioritairement c'est un truc à éviter.
Pour une bonne gestion de ton tableau  commencer en favorisant la
façon la plus directe et pratique d'obtenir les données.

S'il te parvient dans un  état aussi désatreux à l'insu de ton pl ein
gré , tu peux sans doute faire un copier coler Spécial valeur et
forcer la colonne au format texte.

Sinon forcément des formules qui l'une renvoie une valeur et l'autre
un texte n'auront pas nécessairement le même comportement , c'est tou t
à fait normal.

Cordialement.

--
LSteph

On 12 jan, 14:45, bcar wrote:



> Le 12/01/2011 14:24, LSteph a écrit :

> > Bonjour,

> > Et bien sans doute que  tes nombres ne sont pas entrés en texte ' 123
> > mais en chiffres  123
> > sinon tu aurais bien 123 idem avec les deux formules.

> > Cordialement.

> Bien sûr, mais les cellules en question contiennent des chiffres et d es
> textes (et aussi des formules)

> je ne peux donc pas garantir le format texte dans l'absolu
> De plus même en forcant le format texte une cellule vide avec
> A       B
> 1       toto
> 2      
> 3       titi

> index(B1:B3;2) => 0
> par contre OK si je met un ' dans la cellule ou si je met la formule =""
> j'aurais bien
> index(B1:B3;2) => ""

> Mais ce que je voudrais c'est finalement un truc du genre

> {=INDEX(SI(NBCAR(B1:B3)=0;"";B1:B3);2)} (Formule Matricielle)
> si la cellule est vide transforme le vide en texte vide sinon utilise l a
> valeur/format de la cellule

> Mais peut être existe-il quelque chose de moins compliqué et non
> redondant (2 références à la même plage dans ma formule)  et pas en
> matriciel

> > --
> > LSteph

> > On 12 jan, 14:10, bcar wrote:
> >> Bonjour,

> >> soit les données suivantes
> >> ColA    ColB
> >> 1       toto
> >> 2      
> >> 3       titi
> >> 4       tata

> >> si je fais =index(B1:B4;3) => titi
> >> mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
> >> alors OK je peux faire
> >> =T(index(B1:B4;2))
> >> ou encore
> >> =Texte(index(B1:B4;2);"")
> >> j'obtiens alors bien ""

> >> mais dans le cas ou j'ai des valeurs texte avec uniquement des chiff res
> >> du genre :
> >> ColA    ColB
> >> 1       toto
> >> 2       123
> >> 3       46
> >> 4       tata28

> >> =T(index(B1:B4;2)) => ""
> >> =index(B1:B4;2) => 123

> >> j'ai alors le problème "inverse" !

> >> Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
> >> technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vou s dans
> >> un tel cas.

> >> j'aimerais bien sûr éviter les formules redondantes du genre
> >> =si(index(B1:B4;2)=0;"";index(B1:B4;2))
> >> D'autant que cela ne me permettrai pas de différencier un vrai 0 d 'une
> >> cellule vide

> >> Merci.- Masquer le texte des messages précédents -

> - Afficher le texte des messages précédents -- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -
Avatar
michdenis
Bonjour,

Et ceci :

=IF(COUNT(B1)>0;B1;"")

MichD
--------------------------------------------
"bcar" a écrit dans le message de groupe de discussion : igkc40$ehp$

En fait le problème pourrait se réduire à
A B
toto 1
5 2
titi
titi 1

£ => 0
existe t-il une autre formule qui fasse l'équivalent de
=si(A3="";"";A3) sans répéter A3 et avec A3 définit en standard

Bon en fait j'ai bien plein de solutions alternatives mais aucune n'est
complétement satisfaisante.

Le 12/01/2011 14:45, bcar a écrit :
Le 12/01/2011 14:24, LSteph a écrit :
Bonjour,

Et bien sans doute que tes nombres ne sont pas entrés en texte '123
mais en chiffres 123
sinon tu aurais bien 123 idem avec les deux formules.

Cordialement.



Bien sûr, mais les cellules en question contiennent des chiffres et des
textes (et aussi des formules)

je ne peux donc pas garantir le format texte dans l'absolu
De plus même en forcant le format texte une cellule vide avec
A B
1 toto
2
3 titi

index(B1:B3;2) => 0
par contre OK si je met un ' dans la cellule ou si je met la formule =""
j'aurais bien
index(B1:B3;2) => ""

Mais ce que je voudrais c'est finalement un truc du genre

{=INDEX(SI(NBCAR(B1:B3)=0;"";B1:B3);2)} (Formule Matricielle)
si la cellule est vide transforme le vide en texte vide sinon utilise la
valeur/format de la cellule

Mais peut être existe-il quelque chose de moins compliqué et non
redondant (2 références à la même plage dans ma formule) et pas en
matriciel


--
LSteph

On 12 jan, 14:10, bcar wrote:
Bonjour,

soit les données suivantes
ColA ColB
1 toto
2
3 titi
4 tata

si je fais =index(B1:B4;3) => titi
mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
alors OK je peux faire
=T(index(B1:B4;2))
ou encore
=Texte(index(B1:B4;2);"")
j'obtiens alors bien ""

mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffres
du genre :
ColA ColB
1 toto
2 123
3 46
4 tata28

=T(index(B1:B4;2)) => ""
=index(B1:B4;2) => 123

j'ai alors le problème "inverse" !

Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dans
un tel cas.

j'aimerais bien sûr éviter les formules redondantes du genre
=si(index(B1:B4;2)=0;"";index(B1:B4;2))
D'autant que cela ne me permettrai pas de différencier un vrai 0 d'une
cellule vide

Merci.






Avatar
bcar
Si c'était mon tableau, si j'avais la main dessus, si je
maintenais/modifiais moi même les données... je ne me poserais
effectivement pas toutes ces questions.

En fait finalement (en réfléchissant un peu et en rebondissant avec vos
idées) la solution est vraiment basique = "" & A1
D'ou pour ma question initiale avec
ColA ColB
1 toto
2
3 123
4 tata

=""&index(B1:B4;2) => "" (et pas 0)
=""&index(B1:B4;3) => 123 (en texte)
=""&index(B1:B4;4) => tata

Merci à vous

Le 12/01/2011 15:25, LSteph a écrit :
...en résumé index à l'air de faire ce que tu souihaites dans les deux
cas face à cette multiplicité de types de données
pour l'autre cas tu peux aussi enlever l'affichage des 0, mais c'est
moins propre san doute.

J'en maintiens toutefois que je favoriserais si c'était mon tableau
qu'il y ait un type de données unique dans ma colonne.

@+

--
LSteph

On 12 jan, 15:17, LSteph wrote:
Bonjour,

Le premier souci à traiter est déjà clairement celui-ci

..les cellules en question contiennent des chiffres et des
textes (et aussi des formules)



cela signifie qu'on a des façons différentes d'alimenter une même
colonne
prioritairement c'est un truc à éviter.
Pour une bonne gestion de ton tableau commencer en favorisant la
façon la plus directe et pratique d'obtenir les données.

S'il te parvient dans un état aussi désatreux à l'insu de ton plein
gré , tu peux sans doute faire un copier coler Spécial valeur et
forcer la colonne au format texte.

Sinon forcément des formules qui l'une renvoie une valeur et l'autre
un texte n'auront pas nécessairement le même comportement , c'est tout
à fait normal.

Cordialement.

--
LSteph

On 12 jan, 14:45, bcar wrote:



Le 12/01/2011 14:24, LSteph a écrit :



Bonjour,





Et bien sans doute que tes nombres ne sont pas entrés en texte '123
mais en chiffres 123
sinon tu aurais bien 123 idem avec les deux formules.





Cordialement.





Bien sûr, mais les cellules en question contiennent des chiffres et des
textes (et aussi des formules)



je ne peux donc pas garantir le format texte dans l'absolu
De plus même en forcant le format texte une cellule vide avec
A B
1 toto
2
3 titi



index(B1:B3;2) => 0
par contre OK si je met un ' dans la cellule ou si je met la formule =""
j'aurais bien
index(B1:B3;2) => ""



Mais ce que je voudrais c'est finalement un truc du genre



{=INDEX(SI(NBCAR(B1:B3)=0;"";B1:B3);2)} (Formule Matricielle)
si la cellule est vide transforme le vide en texte vide sinon utilise la
valeur/format de la cellule



Mais peut être existe-il quelque chose de moins compliqué et non
redondant (2 références à la même plage dans ma formule) et pas en
matriciel



--
LSteph





On 12 jan, 14:10, bcar wrote:
Bonjour,







soit les données suivantes
ColA ColB
1 toto
2
3 titi
4 tata







si je fais =index(B1:B4;3) => titi
mais si je fais =index(B1:B4;2) => 0 (alors que je m'attendrais à "")
alors OK je peux faire
=T(index(B1:B4;2))
ou encore
=Texte(index(B1:B4;2);"")
j'obtiens alors bien ""







mais dans le cas ou j'ai des valeurs texte avec uniquement des chiffres
du genre :
ColA ColB
1 toto
2 123
3 46
4 tata28







=T(index(B1:B4;2)) => ""
=index(B1:B4;2) => 123







j'ai alors le problème "inverse" !







Existe-il une astuce dont je n'ai pas encore connaissance ou quelle
technique (Sans VBA bien sûr sinon c'est trop facile) utilisez-vous dans
un tel cas.







j'aimerais bien sûr éviter les formules redondantes du genre
=si(index(B1:B4;2)=0;"";index(B1:B4;2))
D'autant que cela ne me permettrai pas de différencier un vrai 0 d'une
cellule vide







Merci.- Masquer le texte des messages précédents -







- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -