OVH Cloud OVH Cloud

test de la fonction somme si

9 réponses
Avatar
didier
Bonjour, voici mon code :

Dim cell As Range
For Each cell In Range("B2:B10000")
cell.Offset(0, 2) = "=SUMIF(B2:B10000,cell,C2:C10000)"
Next cell

Le problème est que cell (ds la fonction SUM IF ) est une chaine de
caractère , cette syntaxe ne marche que pour des valeurs numériques des
cellules ...
Je voudrais en fait que chaque cellule de la colonne D soit égale à la somme
des cellules de la colonne C qui sont telles que sur la même ligne , la
cellule de la colonne B soit égale à cell ( égalité de chaine de caractère )
Par quelle syntaxe dois-je remplacer le mot cell dans la fonction SUMIF?
Merci

9 réponses

Avatar
papou
Bonjour
Peut-être comme ça :
Dim cell As Range, val
For Each cell In Range("B2:B10")
val = cell.Value
cell.Offset(0, 2).Formula = "=SUMIF(B2:B10," & val & ",C2:C10)"
Next cell

Cordialement
Pascal

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

Bonjour, voici mon code :

Dim cell As Range
For Each cell In Range("B2:B10000")
cell.Offset(0, 2) = "=SUMIF(B2:B10000,cell,C2:C10000)"
Next cell

Le problème est que cell (ds la fonction SUM IF ) est une chaine de
caractère , cette syntaxe ne marche que pour des valeurs numériques des
cellules ...
Je voudrais en fait que chaque cellule de la colonne D soit égale à la
somme
des cellules de la colonne C qui sont telles que sur la même ligne , la
cellule de la colonne B soit égale à cell ( égalité de chaine de
caractère )
Par quelle syntaxe dois-je remplacer le mot cell dans la fonction SUMIF?
Merci



Avatar
didier
Il ne semble pas que cela marche , la compilation affiche un bogue...sinon
y'a t-il une autre méthode ? et si non comment puis-je faire ? ( Parce que
tout mon travail depuis un mois dépend de cela ) . Merci


Bonjour
Peut-être comme ça :
Dim cell As Range, val
For Each cell In Range("B2:B10")
val = cell.Value
cell.Offset(0, 2).Formula = "=SUMIF(B2:B10," & val & ",C2:C10)"
Next cell

Cordialement
Pascal

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

Bonjour, voici mon code :

Dim cell As Range
For Each cell In Range("B2:B10000")
cell.Offset(0, 2) = "=SUMIF(B2:B10000,cell,C2:C10000)"
Next cell

Le problème est que cell (ds la fonction SUM IF ) est une chaine de
caractère , cette syntaxe ne marche que pour des valeurs numériques des
cellules ...
Je voudrais en fait que chaque cellule de la colonne D soit égale à la
somme
des cellules de la colonne C qui sont telles que sur la même ligne , la
cellule de la colonne B soit égale à cell ( égalité de chaine de
caractère )
Par quelle syntaxe dois-je remplacer le mot cell dans la fonction SUMIF?
Merci








Avatar
papou
Re
Il faut modifier en ajoutant des quotes :
cell.Offset(0, 2).Formula = "=SUMIF(B1:B10," & """ & val & """ & ",C1:C10)"
Sinon c'est ou que ça plante ?

Cordialement
Pascal


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

Il ne semble pas que cela marche , la compilation affiche un bogue...sinon
y'a t-il une autre méthode ? et si non comment puis-je faire ? ( Parce que
tout mon travail depuis un mois dépend de cela ) . Merci


Bonjour
Peut-être comme ça :
Dim cell As Range, val
For Each cell In Range("B2:B10")
val = cell.Value
cell.Offset(0, 2).Formula = "=SUMIF(B2:B10," & val & ",C2:C10)"
Next cell

Cordialement
Pascal

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

Bonjour, voici mon code :

Dim cell As Range
For Each cell In Range("B2:B10000")
cell.Offset(0, 2) = "=SUMIF(B2:B10000,cell,C2:C10000)"
Next cell

Le problème est que cell (ds la fonction SUM IF ) est une chaine de
caractère , cette syntaxe ne marche que pour des valeurs numériques des
cellules ...
Je voudrais en fait que chaque cellule de la colonne D soit égale à la
somme
des cellules de la colonne C qui sont telles que sur la même ligne , la
cellule de la colonne B soit égale à cell ( égalité de chaine de
caractère )
Par quelle syntaxe dois-je remplacer le mot cell dans la fonction
SUMIF?
Merci










Avatar
Yvan
Bonjour Didier.

Essaie-çà:

cell.Offset(0, 2).Formula = "=SUMIF(B2:B10000, = """ & cell &
""",C2:C10000)"

Je la testerais bien moi-même, mais comme je n'ai pas compris ce que tu veux
faire...

@+

Yvan



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

Bonjour, voici mon code :

Dim cell As Range
For Each cell In Range("B2:B10000")
cell.Offset(0, 2) = "=SUMIF(B2:B10000,cell,C2:C10000)"
Next cell

Le problème est que cell (ds la fonction SUM IF ) est une chaine de
caractère , cette syntaxe ne marche que pour des valeurs numériques des
cellules ...
Je voudrais en fait que chaque cellule de la colonne D soit égale à la somme
des cellules de la colonne C qui sont telles que sur la même ligne , la
cellule de la colonne B soit égale à cell ( égalité de chaine de caractère )
Par quelle syntaxe dois-je remplacer le mot cell dans la fonction SUMIF?
Merci



Avatar
Yvan
Oupssss!!!

Mille excuses!

cell.Offset(0, 2).Formula = "=SUMIF(B2:B10000, """ & " = " & cell &
""",C2:C10000)"

A vouloir aller trop vite, on dit des bêtises.

@+

Yvan
Avatar
papou
beurk !!
Oublie ma réponse c'est pas bon :-(

Cordialement
Pascal

"papou" <cestpasbon@çanonplus> a écrit dans le message de news:
%
Re
Il faut modifier en ajoutant des quotes :
cell.Offset(0, 2).Formula = "=SUMIF(B1:B10," & """ & val & """ &
",C1:C10)"
Sinon c'est ou que ça plante ?

Cordialement
Pascal


"didier" a écrit dans le message de
news:
Il ne semble pas que cela marche , la compilation affiche un
bogue...sinon
y'a t-il une autre méthode ? et si non comment puis-je faire ? ( Parce
que
tout mon travail depuis un mois dépend de cela ) . Merci


Bonjour
Peut-être comme ça :
Dim cell As Range, val
For Each cell In Range("B2:B10")
val = cell.Value
cell.Offset(0, 2).Formula = "=SUMIF(B2:B10," & val & ",C2:C10)"
Next cell

Cordialement
Pascal

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

Bonjour, voici mon code :

Dim cell As Range
For Each cell In Range("B2:B10000")
cell.Offset(0, 2) = "=SUMIF(B2:B10000,cell,C2:C10000)"
Next cell

Le problème est que cell (ds la fonction SUM IF ) est une chaine de
caractère , cette syntaxe ne marche que pour des valeurs numériques
des
cellules ...
Je voudrais en fait que chaque cellule de la colonne D soit égale à la
somme
des cellules de la colonne C qui sont telles que sur la même ligne ,
la
cellule de la colonne B soit égale à cell ( égalité de chaine de
caractère )
Par quelle syntaxe dois-je remplacer le mot cell dans la fonction
SUMIF?
Merci














Avatar
AV
Ca ne me semble pas utile de récupérer le contenu de "cell". L'adresse devrait
suffire
cell.Offset(0, 2) = "=SUMIF(B2:B10000," & cell.Address & ",C2:C10000)"

ou bien en récupérant la chaîne :
cell.Offset(0, 2) = "=SUMIF(B2:B10000,""" & cell.Value & """,C2:C10000)"

AV
Avatar
didier
Moi je dis chapeau les gars ... j'ai testé ta solution AV ...
C'est la grande grande classe ... Merci . Merci à Pascal & Yvan également.
Vous m'épatez .


Ca ne me semble pas utile de récupérer le contenu de "cell". L'adresse devrait
suffire
cell.Offset(0, 2) = "=SUMIF(B2:B10000," & cell.Address & ",C2:C10000)"

ou bien en récupérant la chaîne :
cell.Offset(0, 2) = "=SUMIF(B2:B10000,""" & cell.Value & """,C2:C10000)"

AV





Avatar
Jacquouille
Bonsoir Président
Je crois que c'est le moment de lui parler de la cotisation à ce nouvel
admirateur ....-))

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

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

Moi je dis chapeau les gars ... j'ai testé ta solution AV ...
C'est la grande grande classe ... Merci . Merci à Pascal & Yvan également.
Vous m'épatez .


Ca ne me semble pas utile de récupérer le contenu de "cell". L'adresse
devrait
suffire
cell.Offset(0, 2) = "=SUMIF(B2:B10000," & cell.Address & ",C2:C10000)"

ou bien en récupérant la chaîne :
cell.Offset(0, 2) = "=SUMIF(B2:B10000,""" & cell.Value & """,C2:C10000)"

AV