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

Somme d'une partie de cellule 2° édition

10 réponses
Avatar
Stef
Bonjour à tout.

J'ai posé hiers la question suivante :

Dans chaque colonne d'un tableau, j'ai des valeurs du type "X0,1" "Y0,2"
....
En fait j'ai une lettre suivie d'une valeur comprise entre 0 et 1.
Je souhaite additionner par exemple toute les valeurs dont la 1ere
lettre est "A" par une formule. Je sais que je peux le faire par macro, mais
je souhaiterai savoir si c'est possible avec une formule.

Merci de votre attention

J'ai reçu une réponse avec la formule sommeprod du type
=(sommeprod((gauche(maplage,1)="X")*(droite(maplage);nbcar(maplage)-1))

Cela marchait........... jusqu'a ce que quelqu'un laisse une case vide....

Dans le cas ou une cellule vide est présente dans maplage alors la formule
renvoie #valeur.

J'ai essayé de rajouter les conditions *(maplage)<>""* et
*non(estvide(maplage))* mais ça ne marche pas.

Merci de m'aider si vous avez une idée

Stéphane

10 réponses

Avatar
AV
Une

Matricielle :
=SOMME(SI((maplage<>"")*(GAUCHE(maplage;1)="A");STXT(maplage;2;9^9)*1))

AV
Avatar
ChrisV
Bonjour Stef,

Avec la plage de données nommées ici Zn
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)

{=SOMME(SI(Zn<>"";(STXT(Zn;1;1)="A")*STXT(Zn;2;9^2)))}


ChrisV


"Stef" a écrit dans le message de news:

Bonjour à tout.

J'ai posé hiers la question suivante :

Dans chaque colonne d'un tableau, j'ai des valeurs du type "X0,1"
"Y0,2"

....
En fait j'ai une lettre suivie d'une valeur comprise entre 0 et 1.
Je souhaite additionner par exemple toute les valeurs dont la 1ere
lettre est "A" par une formule. Je sais que je peux le faire par macro,
mais

je souhaiterai savoir si c'est possible avec une formule.

Merci de votre attention

J'ai reçu une réponse avec la formule sommeprod du type
=(sommeprod((gauche(maplage,1)="X")*(droite(maplage);nbcar(maplage)-1))

Cela marchait........... jusqu'a ce que quelqu'un laisse une case vide....

Dans le cas ou une cellule vide est présente dans maplage alors la formule
renvoie #valeur.

J'ai essayé de rajouter les conditions *(maplage)<>""* et
*non(estvide(maplage))* mais ça ne marche pas.

Merci de m'aider si vous avez une idée

Stéphane






Avatar
Stef
C'est ce qu'on appele "service palace", réponse en 1/4 d'heure et qui marche
en plus....
Merci pour la réponse en tout cas.

Juste une question supplémentaire si vous avez du temps :

Je ne comprends pas pourquoi il faut mettre *1 à la fin. Si vous pouviez
m'expliquer ......

merci

stéphane

"AV" a écrit dans le message de
news:
Une

Matricielle :
=SOMME(SI((maplage<>"")*(GAUCHE(maplage;1)="A");STXT(maplage;2;9^9)*1))

AV




Avatar
Daniel.M
Hello Stéphane,

Une autre,la matricielle (Ctrl-Maj-Entrée) suivante:

=SOMME(SI(GAUCHE(maplage)="X";--STXT(maplage;2;8^8)))

Salutations,

Daniel M.
Avatar
ChrisV
Salut Daniel,

SOMME........8^8


;-))


ChrisV

nb: très joli le --STXT(maplage...
tu peux nous donner quelques infos sur les "--" ?


"Daniel.M" a écrit dans le message de
news: #7L#
Hello Stéphane,

Une autre,la matricielle (Ctrl-Maj-Entrée) suivante:

=SOMME(SI(GAUCHE(maplage)="X";--STXT(maplage;2;8^8)))

Salutations,

Daniel M.




Avatar
AV
Je ne comprends pas pourquoi il faut mettre *1 à la fin.
Si vous pouviez m'expliquer ......


La partie de la formule STXT(maplage;2;9^9) renvoie une matrice de valeurs de
type texte
le *1, qui est une "opération neutre" (peut être remplacée par +0 ou -0 ou ...),
sert à transformer cette matrice en matrice de valeurs numériques (et/ou valeurs
d'erreurs)

PS : on pourrait utiliser cette méthode pour rendre moins absconce (?) la
proposition très originale de Daniel
=SOMME(SI(GAUCHE(maplage)="X";--STXT(maplage;2;8^8)))
-->
=SOMME(SI(GAUCHE(maplage)="A";1*STXT(maplage;2;8^8)))

AV

Avatar
garnote
Ce serait encore moins abscons si les auteurs expliquaient
le pourquoi des 8^8 et 9^9 !!!
Ça serait tellement plus simple avec
ENT(LN(2000)*Pi()).

:-)))
Serge



"AV" a écrit dans le message de news:
#
Je ne comprends pas pourquoi il faut mettre *1 à la fin.
Si vous pouviez m'expliquer ......


La partie de la formule STXT(maplage;2;9^9) renvoie une matrice de valeurs
de

type texte
le *1, qui est une "opération neutre" (peut être remplacée par +0 ou -0 ou
...),

sert à transformer cette matrice en matrice de valeurs numériques (et/ou
valeurs

d'erreurs)

PS : on pourrait utiliser cette méthode pour rendre moins absconce (?) la
proposition très originale de Daniel
=SOMME(SI(GAUCHE(maplage)="X";--STXT(maplage;2;8^8)))
-->
=SOMME(SI(GAUCHE(maplage)="A";1*STXT(maplage;2;8^8)))

AV





Avatar
Daniel.M
Salut Chris,

SOMME........8^8
;-))



Un valeur mitoyenne entre 9^9 et 9^2 ;-))

Le jour où les formules d'Excel seront optimisées autant que les constantes d'un
programme C, 8^8 sera calculé plus rapidement que 9^x (because les
représentations binaires des nombres). Mais ce n'est pas demain la veille.
Aussi, il faut y voir beaucoup plus un clin d'oeil (ce qui ne t'a pas échappé)
qu'autre chose.


nb: très joli le --STXT(maplage...
tu peux nous donner quelques infos sur les "--" ?



C'est une façon de convertir une valeur (booléenne ou textuelle) en numérique,
une trouvaille d'Harlan Grove (newsgroup anglophone).
--VRAI = 1
--FAUX = 0
--"4" = 4

Mais cela participe de la même logique d'optimisation (probablement sans effet
:-)) que je viens de décrire.
Dans tous les compilateurs C, l'emploi d'un double unaire sera toujours plus
rapide à exécuter que l'addition de 0 ou la multiplication par 1. Encore une
fois, je crois que son usage est beaucoup plus axé sur l'esthétique (donc
dépendant des goûts) que sur le gain de performance (probablement inexistant
pour les formules d'Excel). Donc, c'est une autre façon d'écrire +0, ou *1.

Salutations,

Daniel M.


Avatar
Daniel.M
Serge,

Ce serait encore moins abscons si les auteurs expliquaient
le pourquoi des 8^8 et 9^9 !!!


C'est une quête de l'absolu, de l'infini.

Ça serait tellement plus simple avec
ENT(LN(2000)*Pi()).


1- Vas-y mollo sur le rhum aujourd'hui considérant la température! :-)
2- Pourquoi complexifier un problème résolu alors qu'il te reste des
charades à résoudre (et notamment la mienne). Allez, au boulot.

Salutations amicales,

Daniel M.

Avatar
ChrisV
Merci bien pour ces explications, toujours claires et détaillées !
;-)


ChrisV


"Daniel.M" a écrit dans le message de
news: #
Salut Chris,

SOMME........8^8
;-))



Un valeur mitoyenne entre 9^9 et 9^2 ;-))

Le jour où les formules d'Excel seront optimisées autant que les
constantes d'un

programme C, 8^8 sera calculé plus rapidement que 9^x (because les
représentations binaires des nombres). Mais ce n'est pas demain la veille.
Aussi, il faut y voir beaucoup plus un clin d'oeil (ce qui ne t'a pas
échappé)

qu'autre chose.


nb: très joli le --STXT(maplage...
tu peux nous donner quelques infos sur les "--" ?



C'est une façon de convertir une valeur (booléenne ou textuelle) en
numérique,

une trouvaille d'Harlan Grove (newsgroup anglophone).
--VRAI = 1
--FAUX = 0
--"4" = 4

Mais cela participe de la même logique d'optimisation (probablement sans
effet

:-)) que je viens de décrire.
Dans tous les compilateurs C, l'emploi d'un double unaire sera toujours
plus

rapide à exécuter que l'addition de 0 ou la multiplication par 1. Encore
une

fois, je crois que son usage est beaucoup plus axé sur l'esthétique (donc
dépendant des goûts) que sur le gain de performance (probablement
inexistant

pour les formules d'Excel). Donc, c'est une autre façon d'écrire +0, ou
*1.


Salutations,

Daniel M.