SOMME SI ENS

Bonjour,

j'ai un bug sur code est je comprends pas d'ou viens le probléme la fonction me donne le résultat " 10962" en C3 et le vba me renvoi 0 en c4

Sub test()
'=SOMME.SI.ENS(Feuil1!H5:H30000;Feuil1!E5:E30000;"=" & A3;Feuil1!G5:G30000;"<" & A13)

Range("c4") = Application.WorksheetFunction.SumIfs(Sheets("Feuil1").Range("h5:h30000"), _
Sheets("Feuil1").Range("e5:e30000"), "=" & Cells(3, 1), _
Sheets("Feuil1").Range("g5:g30000"), "<" & Cells(13, 1))

End Sub

ci joint le fichier

merci de votre aide par avance

Bonjour,

je n'ai pas essayé en VBA mais je connais mieux sommeprod:

=SOMMEPROD((réf_ME=A5)*(heure_de_passe<$A$13)*QT)

les colonnes de la feuille1 étant nommées par CTRL-SHIFT-F3 / ligne du haut , ce qui donne une formule plus facile à lire

Le reste (vba) , je n'ai pas le temps, mais si tu veux essayer la formule en C5

j'ai juste essayé ceci:

sub Prod()

Sheets("suivi réapro").[C3].FormulaLocal = "=SOMMEPROD((réf_ME=A3)*(heure_de_passe<$A$13)*QT)"

end sub

P.

J'ai aussi essayé de comprendre le problème, mais sans succès ...

Après, je me demande sérieusement à quoi cela peut servir d'écrire la formule en vba quand on peut la laisser dans le classeur ...

bonjour

Après, je me demande sérieusement à quoi cela peut servir d'écrire la formule en vba quand on peut la laisser dans le classeur ...

ben...ça sert a garder les cellule en valeurs (non pas en formules), qui fera des fichiersmoins volumineux, impliquera la rapidité d’exécution.

a vous relire

iliyes a écrit :

ben...ça sert a garder les cellule en valeurs (non pas en formules), qui fera des fichiersmoins volumineux, impliquera la rapidité d’exécution.

Et facilitera la maintenance ?

As-tu essayé la formule dans la feuille ?

Cordialement, Daniel

patrick1957 a écrit :

je connais mieux sommeprod

je ne suis pas le seul à préférer SOMMEPROD à SOMME.SI.ENS alors !

Steelson a écrit :
patrick1957 a écrit :

je connais mieux sommeprod

je ne suis pas le seul à préférer SOMMEPROD à SOMME.SI.ENS alors !

bin, j'avoue que je n'ai jamais essayé somme.si.ens , vieilles habitudes peut être ?

Bonjour

si j'ai bien compris ta demande ci joint une proposition avec somme si ens :

  • j'ai décortiqué ta référence dateheure en 2 colonnes, dat et heure
  • nommé les colonnes sources
  • posé les formules qui marchent à priori

A tester

Cordialement

FINDRH

9somme-si-ens.xlsm (223.47 Ko)

bonjour à tous,

merci pour vos réponse

perso. je connais bien la formule somme si ens, Ce n'est pas la premiére fois que j'en écris et je ne pense pas que somme prod prends 4,5,6 conditions.

Si je veux du Vba c'est que je ne veux pas les fonctions dans les cellules . Pour moi c'est un probléme de ft de date-heure-minute... et je pense que le vba , ne lit pas les date jj-mm-aaaa 00:00:00

j'ai donné que les 2 lignes car je pensais que c'etait plus simple de résoudre le probléme du ft de date-heure-minute...

merci pour votre aide par avance

si joint le code complet:

Sub test()

'=SOMME.SI.ENS(Feuil1!H5:H30000;Feuil1!E5:E30000;"=" & A3; Feuil1!G5:G30000 ;">" & A13-1; Feuil1!G5:G30000;"<" & A13)

Range("c4") = Application.WorksheetFunction.SumIfs(Sheets("Feuil1").Range("h5:h30000"), _

Sheets("Feuil1").Range("e5:e30000"), "=" & Cells(3, 1), _

Sheets("Feuil1").Range("g5:g30000"), ">" & Cells(13, 1) - 1,_

Sheets("Feuil1").Range("g5:g30000"), "<" & Cells(13, 1))

End Sub

Bonsoir

Si tu as regardé mon exemple, je scinde bien date et heure, c'est pourquoi cela marche sur la date.

tu peux recréer la date en Vba dans ta base avec

madate =Dateserial(year(),month(xx),day(xx)) ou xx est le contenu de ta cellule formatée en dateheure

et remplacer cette colonne

Cordialement

FINDRH

Rechercher des sujets similaires à "somme ens"