OVH Cloud OVH Cloud

sommeprod en vba

10 réponses
Avatar
RGI
Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci

10 réponses

Avatar
RGI
j'ai mis ça mais j'ai une erreur

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((" & Range(Cells(1, 1),
Cells(5000, 1)) = "Truc" & ")*1)"

merci

RGI

Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A5000="Truc")*1)

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci


Avatar
RGI
j'ai mis ça mais j'ai une erreur

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((" & Range(Cells(1, 1),
Cells(5000, 1)) = "Truc" & ")*1)"

merci

RGI

Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A5000="Truc")*1)

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci


Avatar
FxM
Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative alors
que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM


Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci


Avatar
RGI
merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" & a &
"]=""Truc"")*1)"


Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM


Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 =
"=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci




Avatar
FxM
Que cherches-tu à faire exactement ?
J'avais cru comprendre que tu souhaitais passer en références absolues.
Si oui, il faut que tu enlèves les crochets.

Si le n° de colonne est variable, ton principe est OK.

Apparemment, tu fais sommeprod avec un seul membre. nb.si(...) devrait
aussi convenir. En VBA -> count.if(...)

@+
FxM



merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" & a &
"]=""Truc"")*1)"


Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM


Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 =
"=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci






Avatar
RGI
je veux c'est mettre dans la cellules active la formule

=SOMMEPROD(($A$1:$A$5000="Truc")*1)

après ton intervention ça donne

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:R5000C1=""Truc"")*1)"

et ça marche ;)) je persistais à mettre entre crochets ou passer par un
range (cells,cells)

Merci encore

Que cherches-tu à faire exactement ?
J'avais cru comprendre que tu souhaitais passer en références
absolues. Si oui, il faut que tu enlèves les crochets.

Si le n° de colonne est variable, ton principe est OK.

Apparemment, tu fais sommeprod avec un seul membre. nb.si(...) devrait
aussi convenir. En VBA -> count.if(...)

@+
FxM



merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" &
a & "]=""Truc"")*1)"


Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM


Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 =
"=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci








Avatar
MichDenis
Peut être une façon plus facile de s'en sortir:

Suppose que ta formule est écrite dans la cellule E1

En utilisant ceci , VBA va traduire en anglais la formule...
que tu écris dans la cellule de ton choix afin de récupérer le texte
Range("A1") = "'" & Range("E1").Formula

Maintenant, il ne te reste plus qu'à modifier le texte très légèrement
A ) changer le séparateur d'argument ";" pour la virgule
B ) Dédoubler les "" au critère "Truc"

Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=""Truc"")*1)"

Et si tu veux utiliser une variable à la place de truc :
Crit = "Truc"
Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=" & Crit & ")*1)"

Et si tu utilises FormulaLocal
Range("B2").FormulaLocal = "=SOMMEPROD(($A$1:$A$5000=""Truc"")*1)"




"RGI" a écrit dans le message de news:
%
je veux c'est mettre dans la cellules active la formule

=SOMMEPROD(($A$1:$A$5000="Truc")*1)

après ton intervention ça donne

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:R5000C1=""Truc"")*1)"

et ça marche ;)) je persistais à mettre entre crochets ou passer par un
range (cells,cells)

Merci encore

Que cherches-tu à faire exactement ?
J'avais cru comprendre que tu souhaitais passer en références
absolues. Si oui, il faut que tu enlèves les crochets.

Si le n° de colonne est variable, ton principe est OK.

Apparemment, tu fais sommeprod avec un seul membre. nb.si(...) devrait
aussi convenir. En VBA -> count.if(...)

@+
FxM



merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" &
a & "]=""Truc"")*1)"


Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM


Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 >>>> "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci








Avatar
MichDenis
Il y a eu erreur de frappe, il faudrait remplacer
la virgule par les : dans cette expression
$A$1,$A$5000


"MichDenis" a écrit dans le message de news:
%
Peut être une façon plus facile de s'en sortir:

Suppose que ta formule est écrite dans la cellule E1

En utilisant ceci , VBA va traduire en anglais la formule...
que tu écris dans la cellule de ton choix afin de récupérer le texte
Range("A1") = "'" & Range("E1").Formula

Maintenant, il ne te reste plus qu'à modifier le texte très légèrement
A ) changer le séparateur d'argument ";" pour la virgule
B ) Dédoubler les "" au critère "Truc"

Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=""Truc"")*1)"

Et si tu veux utiliser une variable à la place de truc :
Crit = "Truc"
Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=" & Crit & ")*1)"

Et si tu utilises FormulaLocal
Range("B2").FormulaLocal = "=SOMMEPROD(($A$1:$A$5000=""Truc"")*1)"




"RGI" a écrit dans le message de news:
%
je veux c'est mettre dans la cellules active la formule

=SOMMEPROD(($A$1:$A$5000="Truc")*1)

après ton intervention ça donne

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:R5000C1=""Truc"")*1)"

et ça marche ;)) je persistais à mettre entre crochets ou passer par un
range (cells,cells)

Merci encore

Que cherches-tu à faire exactement ?
J'avais cru comprendre que tu souhaitais passer en références
absolues. Si oui, il faut que tu enlèves les crochets.

Si le n° de colonne est variable, ton principe est OK.

Apparemment, tu fais sommeprod avec un seul membre. nb.si(...) devrait
aussi convenir. En VBA -> count.if(...)

@+
FxM



merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" &
a & "]=""Truc"")*1)"


Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM


Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 >>>> "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci








Avatar
RGI
Merci MichDenis

curieux j'ai fait les essais

mais pour le second : une variable à la place de truc

petit problème !!!!! #NOM? résolu par

Sub somprovar()
Crit = "Truc"
ActiveCell.Formula = "=SUMPRODUCT(($A$1:$A$5000=" & Chr(34) & Crit &
Chr(34) & ")*1)"
End Sub

est-ce bon d'écrire comme ceci ?

RGI

Il y a eu erreur de frappe, il faudrait remplacer
la virgule par les : dans cette expression
$A$1,$A$5000


"MichDenis" a écrit dans le message de news:
%
Peut être une façon plus facile de s'en sortir:

Suppose que ta formule est écrite dans la cellule E1

En utilisant ceci , VBA va traduire en anglais la formule...
que tu écris dans la cellule de ton choix afin de récupérer le texte
Range("A1") = "'" & Range("E1").Formula

Maintenant, il ne te reste plus qu'à modifier le texte très légèrement
A ) changer le séparateur d'argument ";" pour la virgule
B ) Dédoubler les "" au critère "Truc"

Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=""Truc"")*1)"

Et si tu veux utiliser une variable à la place de truc :
Crit = "Truc"
Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=" & Crit & ")*1)"

Et si tu utilises FormulaLocal
Range("B2").FormulaLocal = "=SOMMEPROD(($A$1:$A$5000=""Truc"")*1)"




"RGI" a écrit dans le message de news:
%
je veux c'est mettre dans la cellules active la formule

=SOMMEPROD(($A$1:$A$5000="Truc")*1)

après ton intervention ça donne

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:R5000C1=""Truc"")*1)"

et ça marche ;)) je persistais à mettre entre crochets ou passer par un
range (cells,cells)

Merci encore


Que cherches-tu à faire exactement ?
J'avais cru comprendre que tu souhaitais passer en références
absolues. Si oui, il faut que tu enlèves les crochets.

Si le n° de colonne est variable, ton principe est OK.

Apparemment, tu fais sommeprod avec un seul membre. nb.si(...) devrait
aussi convenir. En VBA -> count.if(...)

@+
FxM




merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" &
a & "]=""Truc"")*1)"



Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM



Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 >>>>> "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci















Avatar
MichDenis
Les 2 formules sont pareilles

Essaie ceci pour t'en convaincre :

Crit = "Truc"
Range("D1").Formula = "=SUMPRODUCT(($A$1:$A$5000=" & Chr(34) & Crit & Chr(34) & ")*1)"

Crit = """Truc""" ' J'avais oublié les """ pour truc
Range("d2").Formula = "=SUMPRODUCT(($A$1,$A$5000=" & Crit & ")*1)"

Utilise celle qui te convient.




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

Merci MichDenis

curieux j'ai fait les essais

mais pour le second : une variable à la place de truc

petit problème !!!!! #NOM? résolu par

Sub somprovar()
Crit = "Truc"
ActiveCell.Formula = "=SUMPRODUCT(($A$1:$A$5000=" & Chr(34) & Crit &
Chr(34) & ")*1)"
End Sub

est-ce bon d'écrire comme ceci ?

RGI

Il y a eu erreur de frappe, il faudrait remplacer
la virgule par les : dans cette expression
$A$1,$A$5000


"MichDenis" a écrit dans le message de news:
%
Peut être une façon plus facile de s'en sortir:

Suppose que ta formule est écrite dans la cellule E1

En utilisant ceci , VBA va traduire en anglais la formule...
que tu écris dans la cellule de ton choix afin de récupérer le texte
Range("A1") = "'" & Range("E1").Formula

Maintenant, il ne te reste plus qu'à modifier le texte très légèrement
A ) changer le séparateur d'argument ";" pour la virgule
B ) Dédoubler les "" au critère "Truc"

Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=""Truc"")*1)"

Et si tu veux utiliser une variable à la place de truc :
Crit = "Truc"
Range("A2").Formula = "=SUMPRODUCT(($A$1,$A$5000=" & Crit & ")*1)"

Et si tu utilises FormulaLocal
Range("B2").FormulaLocal = "=SOMMEPROD(($A$1:$A$5000=""Truc"")*1)"




"RGI" a écrit dans le message de news:
%
je veux c'est mettre dans la cellules active la formule

=SOMMEPROD(($A$1:$A$5000="Truc")*1)

après ton intervention ça donne

ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R1C1:R5000C1=""Truc"")*1)"

et ça marche ;)) je persistais à mettre entre crochets ou passer par un
range (cells,cells)

Merci encore


Que cherches-tu à faire exactement ?
J'avais cru comprendre que tu souhaitais passer en références
absolues. Si oui, il faut que tu enlèves les crochets.

Si le n° de colonne est variable, ton principe est OK.

Apparemment, tu fais sommeprod avec un seul membre. nb.si(...) devrait
aussi convenir. En VBA -> count.if(...)

@+
FxM




merci

j'ai fait ça mais c'est du bricolage

a = -ActiveCell.Column + 1
ActiveCell.FormulaR1C1 = "=SUMPRODUCT((R[1]C[" & a & "]:R[5000]C[" &
a & "]=""Truc"")*1)"



Bonjour,

Tu as presque bon. Il me semble que R[x] est un référence relative
alors que Rx est une référence absolue.
Teste avec R1C1:R5000C1

@+
FxM



Bonjour

comment puis-je mettre en VBA

=SOMMEPROD((A6:A1760="Truc")*1)

ActiveCell.FormulaR1C1 >>>>> "=SUMPRODUCT((R[1]C[1]:R[5000]C[1]=""Truc"")*1)"

ne me convient pas si je me déplace dans le page

Merci