SOMME SI ENS Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
philippe87
Membre fidèle
Membre fidèle
Messages : 168
Appréciation reçue : 1
Inscrit le : 28 octobre 2012
Version d'Excel : 2007

Message par philippe87 » 1 avril 2016, 15:27

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
test recherche passage MEv2.xlsm
(129.79 Kio) Téléchargé 15 fois
p
patrick1957
Passionné d'Excel
Passionné d'Excel
Messages : 3'142
Appréciations reçues : 31
Inscrit le : 24 août 2015
Version d'Excel : 2007-2010-2016 PC

Message par patrick1957 » 1 avril 2016, 16:32

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.
Je fais du géocaching et vous ?
Indentez vos codes VBA, ---> http://www.oaltd.co.uk/Indenter/Default.htm
A lire pour les débutants: http://www.xlerateur.com/divers/2010/05 ... nnees-612/
P
Peuwi
Membre fidèle
Membre fidèle
Messages : 186
Appréciation reçue : 1
Inscrit le : 5 janvier 2016
Version d'Excel : 2010

Message par Peuwi » 1 avril 2016, 16:36

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 ...
Avatar du membre
iliyes
Membre dévoué
Membre dévoué
Messages : 672
Appréciations reçues : 4
Inscrit le : 10 novembre 2012
Version d'Excel : 2016 / 2019
Contact :

Message par iliyes » 1 avril 2016, 16:44

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
Nietzsche : “L’homme est un pont, non une fin”
Epicure : “Si tu n’es pas Socrate, tu dois vivre comme si tu voulais être Socrate”
Avatar du membre
Dan42153
Membre dévoué
Membre dévoué
Messages : 999
Appréciation reçue : 1
Inscrit le : 1 juin 2015
Version d'Excel : 2010 FR

Message par Dan42153 » 1 avril 2016, 16:47

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
...savoir ce qu'on ne veut pas n'est pas toujours suffisant pour avoir ce qu'on veut...
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'548
Appréciations reçues : 753
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 1 avril 2016, 16:49

patrick1957 a écrit :je connais mieux sommeprod
je ne suis pas le seul à préférer SOMMEPROD à SOMME.SI.ENS alors !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
p
patrick1957
Passionné d'Excel
Passionné d'Excel
Messages : 3'142
Appréciations reçues : 31
Inscrit le : 24 août 2015
Version d'Excel : 2007-2010-2016 PC

Message par patrick1957 » 1 avril 2016, 17:19

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 ? :wink:
Je fais du géocaching et vous ?
Indentez vos codes VBA, ---> http://www.oaltd.co.uk/Indenter/Default.htm
A lire pour les débutants: http://www.xlerateur.com/divers/2010/05 ... nnees-612/
F
FINDRH
Membre impliqué
Membre impliqué
Messages : 1'395
Appréciations reçues : 15
Inscrit le : 12 février 2010
Version d'Excel : 2016

Message par FINDRH » 2 avril 2016, 14:26

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
Somme si ens.xlsm
(223.47 Kio) Téléchargé 9 fois
Avatar du membre
philippe87
Membre fidèle
Membre fidèle
Messages : 168
Appréciation reçue : 1
Inscrit le : 28 octobre 2012
Version d'Excel : 2007

Message par philippe87 » 4 avril 2016, 12:03

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
F
FINDRH
Membre impliqué
Membre impliqué
Messages : 1'395
Appréciations reçues : 15
Inscrit le : 12 février 2010
Version d'Excel : 2016

Message par FINDRH » 4 avril 2016, 22:26

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message