OVH Cloud OVH Cloud

macro avec sum & if

6 réponses
Avatar
Marchepied
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne tr=E8s=20
bien:
TOT =3D Application.Sum(Range(Range("BB4").Address & ":" &=20
Range("BB" & derlig).Address))

derlig, contient la derni=E8re cellule utilis=E9e de la=20
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se fasse=20
seulement si "BA" & derlig contient "OK"=20
il faudrai rajouter, donc un IF & Range("BB" & derlig)=20
=3D "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied

6 réponses

Avatar
MichDenis
Bonjour Marchepied,

if Ucase(range("BA" & derlig)) = "OK" then
TOT = Application.Sum(Range(Range("BB4").Address & ":" & Range("BB" & derlig).Address))
end if


Salutations!


"Marchepied" a écrit dans le message de news: 054101c5401e$db92ba70$
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne très
bien:
TOT = Application.Sum(Range(Range("BB4").Address & ":" &
Range("BB" & derlig).Address))

derlig, contient la dernière cellule utilisée de la
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se fasse
seulement si "BA" & derlig contient "OK"
il faudrai rajouter, donc un IF & Range("BB" & derlig)
= "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied
Avatar
marchepied
merci Michel de la réponse, mais j'ai fais une erreur dans
l'énoncé de mon problème. ce n'est pas vraiment ça que je
veux.
Mon tableau fait 3000 lignes. et j'ai "OK" en "BA" sur
environ 500 lignes. je voudrai addition les montants de
ces 500 lignes seulement.
sur ma ligne de macro, il faudrai rajouter quelques chose
comme IF range("BA" de la ligne correspondante) = "OK"
faire la somme.
merci de votre aide,
marchepied

-----Message d'origine-----
Bonjour Marchepied,

if Ucase(range("BA" & derlig)) = "OK" then
TOT = Application.Sum(Range(Range("BB4").Address
& ":" & Range("BB" & derlig).Address))

end if


Salutations!


"Marchepied" a
écrit dans le message de news: 054101c5401e$db92ba70

$
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne très
bien:
TOT = Application.Sum(Range(Range("BB4").Address & ":" &
Range("BB" & derlig).Address))

derlig, contient la dernière cellule utilisée de la
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se fasse
seulement si "BA" & derlig contient "OK"
il faudrai rajouter, donc un IF & Range("BB" & derlig)
= "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied


.



Avatar
Pierre Fauconnier
Bonjour

Dim Total As Double
Dim Cellule As Range
For Each Cellule In Range("ba4:ba" & Range("a65536").End(xlUp).Row)
If UCase(Cellule) = "OK" Then Total = Total + Cellule(1, 2)
Next Cellule

Cela te convient-il?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"marchepied" a écrit dans le message
de news: 056401c54023$9fcb48e0$
merci Michel de la réponse, mais j'ai fais une erreur dans
l'énoncé de mon problème. ce n'est pas vraiment ça que je
veux.
Mon tableau fait 3000 lignes. et j'ai "OK" en "BA" sur
environ 500 lignes. je voudrai addition les montants de
ces 500 lignes seulement.
sur ma ligne de macro, il faudrai rajouter quelques chose
comme IF range("BA" de la ligne correspondante) = "OK"
faire la somme.
merci de votre aide,
marchepied

-----Message d'origine-----
Bonjour Marchepied,

if Ucase(range("BA" & derlig)) = "OK" then
TOT = Application.Sum(Range(Range("BB4").Address
& ":" & Range("BB" & derlig).Address))

end if


Salutations!


"Marchepied" a
écrit dans le message de news: 054101c5401e$db92ba70

$
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne très
bien:
TOT = Application.Sum(Range(Range("BB4").Address & ":" &
Range("BB" & derlig).Address))

derlig, contient la dernière cellule utilisée de la
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se fasse
seulement si "BA" & derlig contient "OK"
il faudrai rajouter, donc un IF & Range("BB" & derlig)
= "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied


.



Avatar
Pierre Fauconnier
Attention, petite erreur dans la ligne For each....

For Each Cellule In Range("ba4:ba" & Range("Ba65536").End(xlUp).Row)
<---- Modifier a65536 en BA65536 ...
Cela te convient-il?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"marchepied" a écrit dans le message
de news: 056401c54023$9fcb48e0$
merci Michel de la réponse, mais j'ai fais une erreur dans
l'énoncé de mon problème. ce n'est pas vraiment ça que je
veux.
Mon tableau fait 3000 lignes. et j'ai "OK" en "BA" sur
environ 500 lignes. je voudrai addition les montants de
ces 500 lignes seulement.
sur ma ligne de macro, il faudrai rajouter quelques chose
comme IF range("BA" de la ligne correspondante) = "OK"
faire la somme.
merci de votre aide,
marchepied

-----Message d'origine-----
Bonjour Marchepied,

if Ucase(range("BA" & derlig)) = "OK" then
TOT = Application.Sum(Range(Range("BB4").Address
& ":" & Range("BB" & derlig).Address))

end if


Salutations!


"Marchepied" a
écrit dans le message de news: 054101c5401e$db92ba70

$
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne très
bien:
TOT = Application.Sum(Range(Range("BB4").Address & ":" &
Range("BB" & derlig).Address))

derlig, contient la dernière cellule utilisée de la
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se fasse
seulement si "BA" & derlig contient "OK"
il faudrai rajouter, donc un IF & Range("BB" & derlig)
= "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied


.







Avatar
MichDenis
Bonjour Marchepied,

Je t'ai crée un petit exemple, à toi d'adapter le nom des feuilles et des plages de cellules

'--------------------------
Dim DerLig As Long, R1 As String, R2 As String

DerLig = 5

R1 = "Feuil1!" & Range("A1:A" & DerLig).Address
R2 = "Feuil1!" & Range("B1:B" & DerLig).Address

'Si Feuil1A1:A5 = "ok" alors somme Feuil1!B1:B5

Tot = Evaluate("SumProduct((" & R1 & "=""OK"")*" & R2 & ")")
'--------------------------


Salutations!


"marchepied" a écrit dans le message de news: 056401c54023$9fcb48e0$
merci Michel de la réponse, mais j'ai fais une erreur dans
l'énoncé de mon problème. ce n'est pas vraiment ça que je
veux.
Mon tableau fait 3000 lignes. et j'ai "OK" en "BA" sur
environ 500 lignes. je voudrai addition les montants de
ces 500 lignes seulement.
sur ma ligne de macro, il faudrai rajouter quelques chose
comme IF range("BA" de la ligne correspondante) = "OK"
faire la somme.
merci de votre aide,
marchepied

-----Message d'origine-----
Bonjour Marchepied,

if Ucase(range("BA" & derlig)) = "OK" then
TOT = Application.Sum(Range(Range("BB4").Address
& ":" & Range("BB" & derlig).Address))

end if


Salutations!


"Marchepied" a
écrit dans le message de news: 054101c5401e$db92ba70

$
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne très
bien:
TOT = Application.Sum(Range(Range("BB4").Address & ":" &
Range("BB" & derlig).Address))

derlig, contient la dernière cellule utilisée de la
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se fasse
seulement si "BA" & derlig contient "OK"
il faudrai rajouter, donc un IF & Range("BB" & derlig)
= "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied


.



Avatar
marchepied
Super, merci beaucoup Pierre & Michel,
Je n'ai pas encore testé, mais ca resemble beaucoup à se
que je veux.
J'ai une petite preference pour le "sumproduct" parce
qu'il n'y a pas de boucle et il n'y a pas de test du "OK"
sur les 3000 lignes. ça devra donc être plus rapide.
Merci,
marchepied

-----Message d'origine-----
Bonjour Marchepied,

Je t'ai crée un petit exemple, à toi d'adapter le nom des
feuilles et des plages de cellules


'--------------------------
Dim DerLig As Long, R1 As String, R2 As String

DerLig = 5

R1 = "Feuil1!" & Range("A1:A" & DerLig).Address
R2 = "Feuil1!" & Range("B1:B" & DerLig).Address

'Si Feuil1A1:A5 = "ok" alors somme Feuil1!B1:B5

Tot = Evaluate("SumProduct((" & R1 & "=""OK"")*" & R2
& ")")

'--------------------------


Salutations!


"marchepied" a
écrit dans le message de news: 056401c54023$9fcb48e0

$
merci Michel de la réponse, mais j'ai fais une erreur dans
l'énoncé de mon problème. ce n'est pas vraiment ça que je
veux.
Mon tableau fait 3000 lignes. et j'ai "OK" en "BA" sur
environ 500 lignes. je voudrai addition les montants de
ces 500 lignes seulement.
sur ma ligne de macro, il faudrai rajouter quelques chose
comme IF range("BA" de la ligne correspondante) = "OK"
faire la somme.
merci de votre aide,
marchepied

-----Message d'origine-----
Bonjour Marchepied,

if Ucase(range("BA" & derlig)) = "OK" then
TOT = Application.Sum(Range(Range("BB4").Address
& ":" & Range("BB" & derlig).Address))

end if


Salutations!


"Marchepied" a
écrit dans le message de news: 054101c5401e$db92ba70

$
Bonjour,
J'ai une macro avec la ligne suivante qui fonctionne très
bien:
TOT = Application.Sum(Range(Range("BB4").Address & ":" &
Range("BB" & derlig).Address))

derlig, contient la dernière cellule utilisée de la
colonne "BB"

Je voudrai modifier cette ligne pour que la somme se
fasse


seulement si "BA" & derlig contient "OK"
il faudrai rajouter, donc un IF & Range("BB" & derlig)
= "OK"
J'aimerai avoir un peu d'aide pour ecrire cette ligne.
Merci,
marchepied


.




.