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

Ecriture de Sommeprod en VBA

6 réponses
Avatar
AndréBdR
J'essaie d'écrire en VBA une ligne du genre:
=SOMMEPROD((C10:C40="S")*(E10:E40))
et je bute évidemment sur les guillemets de la lettre S qui est piochée dans
une cellule voisine (il pourrait y avoir à la place toute autre lettre de
l'alphabet).
J'ai un peu cherché mais pas trouvé.
Merci d'avance pour tout éclairage ou toute piste.

6 réponses

Avatar
Corto
Bonjour AndréBdR,
Il faut doubler les guillemets : ActiveCell.Formula =
"=SUMPRODUCT((C10:C40=""S"")*(E10:E40))"

Corto

AndréBdR a écrit :
J'essaie d'écrire en VBA une ligne du genre:
=SOMMEPROD((C10:C40="S")*(E10:E40))
et je bute évidemment sur les guillemets de la lettre S qui est pioch ée dans
une cellule voisine (il pourrait y avoir à la place toute autre lettr e de
l'alphabet).
J'ai un peu cherché mais pas trouvé.
Merci d'avance pour tout éclairage ou toute piste.





Avatar
AndréBdR
Un grand merci Corto.
J'avais je crois bien aussi essayé le doublage des guillemets de part et
d'autre du S (j'avais un vague souvenir d'avoir vu ça quelque part) mais je
m'entêtais à écrire SOMMEPROD en bon français ce qui donne systématiquement
#NOM? dans la cellule.
Par contre SUMPRODUCT (mon côté franchouillard l'évacuait à priori) qui
s'auto-traduit en SOMMEPROD dans la barre des formules (c'est là la
traîtrise) fournit bien, lui, le bon résultat dans la cellule.
Je prendrai mon pastis tout à l'heure à ta santé.



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

Bonjour AndréBdR,
Il faut doubler les guillemets : ActiveCell.Formula "=SUMPRODUCT((C10:C40=""S"")*(E10:E40))"

Corto

AndréBdR a écrit :
J'essaie d'écrire en VBA une ligne du genre:
=SOMMEPROD((C10:C40="S")*(E10:E40))
et je bute évidemment sur les guillemets de la lettre S qui est piochée
dans une cellule voisine (il pourrait y avoir à la place toute autre
lettre de l'alphabet).
J'ai un peu cherché mais pas trouvé.
Merci d'avance pour tout éclairage ou toute piste.





Avatar
Modeste
Bonsour® AndréBdR avec ferveur ;o))) vous nous disiez :

mais je m'entêtais à écrire SOMMEPROD en bon français ce qui
donne systématiquement #NOM? dans la cellule.
Par contre SUMPRODUCT (mon côté franchouillard l'évacuait à priori)
qui s'auto-traduit en SOMMEPROD dans la barre des formules (c'est là
la traîtrise) fournit bien, lui, le bon résultat dans la cellule.



Il faut simplement indiquer que tu utilises le dialecte local ... ;o)))
ActiveCell.FormulaLocal = "=SOMMEPROD((C10:C40=""S"")*(E10:E40))"
Avatar
AndréBdR
Ah!
C'est bien ça!
Merci Modeste.
Grâce à Corto et à toi j'ai pu reprendre et terminer ma macro dans la joie
et le bonheur, à la fraîche, ce matin.

"Modeste" a écrit dans le message de news:
%
Bonsour® AndréBdR avec ferveur ;o))) vous nous disiez :

mais je m'entêtais à écrire SOMMEPROD en bon français ce qui
donne systématiquement #NOM? dans la cellule.
Par contre SUMPRODUCT (mon côté franchouillard l'évacuait à priori)
qui s'auto-traduit en SOMMEPROD dans la barre des formules (c'est là
la traîtrise) fournit bien, lui, le bon résultat dans la cellule.



Il faut simplement indiquer que tu utilises le dialecte local ... ;o)))
ActiveCell.FormulaLocal = "=SOMMEPROD((C10:C40=""S"")*(E10:E40))"
Avatar
AndréBdR
J'aurais aimé éviter la question subsidiaire mais ... je sèche.
J'aimerais bien que le résultat dans ma cellule apparaisse sous la forme:
Le Total de T est égal à : 1 234,56 ?
avec le séparateur des milliers, deux chiffres derrière la virgule et le
sigle des Euros.

Pour l'instant j'arrive à ceci:
Le Total de T est égal à : 1234,56 ?
c'est à dire sans le séparateur des milliers, et j'ai dû pour cela scinder
l'opération en deux:
Target.Offset(, 10).FormulaLocal = "=SOMMEPROD((C10:C" & DernCell &
"=""" & valC3 & """)*(E10:E" & DernCell & "))"
Target.Offset(, 9).Value = "Le Total de " & valC3 & " est égal à :
" & Target.Offset(, 10).Value & " ?"
suivie, dans la même macro:
*d'une fusion des deux cellules et de leur colorisation
*de leur effacement après une temporisation de 3 secondes (le pocessus
est initié par un double clic dans la Colonne 3, là où il y a la lettre T
ciblée dans ce cas précis)
* de leur remise à leur couleur initiale d'avant le double clic
déclencheur
.
Même si je prends soin de formater auparavant la cellule Target.Offset(,10)
(et éventuellement sa voisine de gauche) au format avec séparateur des
milliers, la fusion qui suit le fait oublier et je me retrouve avec des
chiffres à la queu-leu-leu devant la virgule (avant qu'ils disparaissent
bien sûr).
Aurais-tu une idée de ce qu'il me faudrait faire pour corriger ça?
Merci d'avance.




"Modeste" a écrit dans le message de news:
%
Bonsour® AndréBdR avec ferveur ;o))) vous nous disiez :

mais je m'entêtais à écrire SOMMEPROD en bon français ce qui
donne systématiquement #NOM? dans la cellule.
Par contre SUMPRODUCT (mon côté franchouillard l'évacuait à priori)
qui s'auto-traduit en SOMMEPROD dans la barre des formules (c'est là
la traîtrise) fournit bien, lui, le bon résultat dans la cellule.



Il faut simplement indiquer que tu utilises le dialecte local ... ;o)))
ActiveCell.FormulaLocal = "=SOMMEPROD((C10:C40=""S"")*(E10:E40))"
Avatar
AndréBdR
Correctif
Je viens de me rendre compte que dans mon précédent message Outlook Express
avait mis un point d'interrogation à la place du signe des Euros (le
E-rond-bibarré....) mais vous auriez rectifié de vous-même.
Excuses.


"AndréBdR" a écrit dans le message de news:
49f31c64$0$17101$
J'aurais aimé éviter la question subsidiaire mais ... je sèche.
J'aimerais bien que le résultat dans ma cellule apparaisse sous la forme:
Le Total de T est égal à : 1 234,56 ?
avec le séparateur des milliers, deux chiffres derrière la virgule et le
sigle des Euros.

Pour l'instant j'arrive à ceci:
Le Total de T est égal à : 1234,56 ?
c'est à dire sans le séparateur des milliers, et j'ai dû pour cela scinder
l'opération en deux:
Target.Offset(, 10).FormulaLocal = "=SOMMEPROD((C10:C" & DernCell
& "=""" & valC3 & """)*(E10:E" & DernCell & "))"
Target.Offset(, 9).Value = "Le Total de " & valC3 & " est égal à :
" & Target.Offset(, 10).Value & " ?"
suivie, dans la même macro:
*d'une fusion des deux cellules et de leur colorisation
*de leur effacement après une temporisation de 3 secondes (le pocessus
est initié par un double clic dans la Colonne 3, là où il y a la lettre T
ciblée dans ce cas précis)
* de leur remise à leur couleur initiale d'avant le double clic
déclencheur
.
Même si je prends soin de formater auparavant la cellule
Target.Offset(,10) (et éventuellement sa voisine de gauche) au format avec
séparateur des milliers, la fusion qui suit le fait oublier et je me
retrouve avec des chiffres à la queu-leu-leu devant la virgule (avant
qu'ils disparaissent bien sûr).
Aurais-tu une idée de ce qu'il me faudrait faire pour corriger ça?
Merci d'avance.




"Modeste" a écrit dans le message de news:
%
Bonsour® AndréBdR avec ferveur ;o))) vous nous disiez :

mais je m'entêtais à écrire SOMMEPROD en bon français ce qui
donne systématiquement #NOM? dans la cellule.
Par contre SUMPRODUCT (mon côté franchouillard l'évacuait à priori)
qui s'auto-traduit en SOMMEPROD dans la barre des formules (c'est là
la traîtrise) fournit bien, lui, le bon résultat dans la cellule.



Il faut simplement indiquer que tu utilises le dialecte local ... ;o)))
ActiveCell.FormulaLocal = "=SOMMEPROD((C10:C40=""S"")*(E10:E40))"