Ecriture de Sommeprod en VBA

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Corto
Le #19168421
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.





AndréBdR
Le #19168641
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"
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.





Modeste
Le #19170191
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))"
AndréBdR
Le #19173001
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" %
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))"
AndréBdR
Le #19188931
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" %
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))"
AndréBdR
Le #19189501
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" 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" %
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))"





Publicité
Poster une réponse
Anonyme