Valeur de si nulle avec FormulaLocal

Bonsoir,

J'aimerai ajouter une formule dans une macro, qui, sur Excel, ressemble à ça :

=SI(SOMME.SI($B$731:$B$737;G731;$F$731:$F$737)=0;"";SOMME.SI($B$731:$B$737;G731;$F$731:$F$737))

J'y arrive parfaitement si je remplace "" par 0, sinon il me met une erreur de syntaxe. Vous savez si cela est faisable de reproduire la formule telle quelle ?

Cordialement

Bonsoir Billboule2, le forum,

A tester:

Sub test()
 Dim resultat
     resultat = Application.WorksheetFunction.SumIf(Range("B731:B737"), Range("G731"), Range("F731:F737"))
     Range("ta cellule") = IIf(resultat = 0, "", resultat)
End Sub

Cordialement,

Ça semble fonctionner, mais comme je fais B731 à B737 avec des variables (car pas toujours les mêmes valeurs), mais j'ai soit une erreur de syntaxe, soit une erreur d'exécution:

R = Range("I1").Value
resultat = Application.WorksheetFunction.SumIf(Range("B & R "":B & R + 30"), Range("G" & R), Range("F & R "":F & R + 30"))

EDIT :

D'ailleurs je viens d'y penser je me suis peut-être mal exprimé, car mon écriture dans la macro ressemble à ça :

Range("H" & i).FormulaLocal = "=SI(SOMME.SI($B$" & R & ":$B$" & R + 30 & ";G" & i & ";$F$" & R & ":$F$" & R + 30 & ")=0;0;SOMME.SI($B$" & R & ":$B$" & R + 30 & ";G" & i & ";$F$" & R & ":$F$" & R + 30 & "))"

Le seul problème est le 0 ici :

->0;SOMME.SI

Dans ma formule initiale le 0 est remplacé par "", quand je fais la même en VBA, j'ai une erreur d'exécution

Re,

R = Range("I1").Value
resultat = Application.WorksheetFunction.SumIf(Range("B" & R & ":B" & R + 30), Range("G" & R), Range("F" & R & ":F" & R + 30))
Range("ta cellule") = IIf(resultat = 0, "", resultat)

Bonne soirée,

En fait j'aimerai, comme indiqué dans le titre, utiliser le FormulaLocal pour que la formule soit dans la cellule. Du coup j'ai fais ça :

Dim i As Long

R = Range("I1").Value
resultat = Application.WorksheetFunction.SumIf(Range("B" & R & ":B" & R + 30), Range("G" & R), Range("F" & R & ":F" & R + 30))

For i = R To R + 30
    Range("H" & i).FormulaLocal = IIf(resultat = 0, "", resultat)
Next i

Mais rien ne se met dans la cellule

Re,

Dans quelle cellule veux tu le résultat ?

Dans la cellule Range("H" & i) en l'occurrence ça va de 739 à 769 car I1 = 739

Re,

Dim i As Long

R = Range("I1").Value
For i = R To R + 30
resultat = Application.WorksheetFunction.SumIf(Range("B" & R & ":B" & R + 30), Range("G" & R), Range("F" & R & ":F" & R + 30))
Range("H" & i)= IIf(resultat = 0, "", resultat)
Next i

Sans fichier, pas évident...

J'ai du mal à visualiser....de plus je te réponds depuis mon téléphone. ..

Bonne nuit,

Bonjour,

" sert à ouvrir ou fermer une chaine.

Si tu veux mettre ce caractère dans une chaine il faut le doubler, donc :

... )=0;""""; ...

eric

Bonjour,

" sert à ouvrir ou fermer une chaine.

Si tu veux mettre ce caractère dans une chaine il faut le doubler, donc :

... )=0;""""; ...

eric

Ahhh oui tout simplement ^^ merci bien, c'était le résultat que je cherchais

Pour ceux qui veulent la formule définitive :

Range("H" & i).FormulaLocal = "=SI(SOMME.SI($B$" & R & ":$B$" & R + 30 & ";G" & i & ";$F$" & R & ":$F$" & 30 & ")=0;"""";SOMME.SI($B$" & R & ":$B$" & R + 30 & ";G" & i & ";$F$" & R & ":$F$" & R + 30 & "))"
Rechercher des sujets similaires à "valeur nulle formulalocal"