Sumif avec intervalle de valeur - VB/VBA/VBS - Programmation
Marsh Posté le 18-10-2013 à 18:56:09
Je dirai :
A = Application.Sumif(Range("E8:E22" ), ">1 And <5", Range("F8:F22" ))
Au pire ça se fait très bien sans passer par une méthode préconçue.
Marsh Posté le 18-10-2013 à 21:26:19
MERCI MAYBE.....,ms ca je l'ai dèjà essayer ca donne tjrs 0, essai le tu verras, ms merci qd meme
Marsh Posté le 18-10-2013 à 22:10:35
Je n'ai en effet pas essayé mais au pire fait une boucle sur ta place de cellules et fais ta somme avec une condition if.
Marsh Posté le 21-10-2013 à 20:07:32
Salut,
dans un tel cas, la première chose à faire est de tester directement la formule dans la feuille de calculs car,
si le résultat n'est pas celui escompté, rien de sert de vouloir la coder en VBA vu qu'elle est fausse ‼ …
Ceci dit, la version d'Excel n'étant même pas indiquée, ma solution doit convenir à toute version.
Cependant à partir de la version 2007, il y aurait certainement plus simple avec une nouvelle fonction de feuille de calculs.
Lire l'aide intégrée concernant les nouvelles fonctions; pour les versions suivantes, soit jeter un œil
dans l'aide aux fonctions mathématiques, soit se rencarder sur MSDN ou tout autre vecteur …
Ma solution consiste à imbriquer deux SI - un par borne de l'intervalle - au sein d'une somme, le tout en tant que formule matricielle.
Ceux ne sachant pas entrer une formule matricielle passent maintenant par la case de l'aide intégrée !
Donc dans la feuille de calcul, voici la formule à entrer dans une cellule libre : =SOMME(SI(E8:E22>1;SI(E8:E22<5;F8:F22;)))
Une fois entrée en tant que formule matricielle, elle doit apparaître encadrée d'accolades, sinon c'est râpé !
Si c'est bien une formule matricielle, vérifier le résultat avant de poursuivre …
La cellule contenant cette formule matricielle doit être celle active avant de passer dans l'environnement VBA …
Astuce : ouvrir la fenêtre Exécution au sein de cet environnement et y taper ? activecell.formula puis valider.
La formule en langage natif ('ricain) apparait sur la ligne du dessous : sélectionner l'intégralité, la copier
puis la coller dans une ligne de code VBA en l'encadrant entre Evaluate(" et " ) …
Voilà c'est fini ! La formule matricielle de la feuille de calculs n'a plus lieu d'être …
J'encourage vivement à consulter l'aide VBA intégrée concernant cette méthode Evaluate car elle est vraiment puissante !
Marsh Posté le 18-10-2013 à 18:14:18
Salut
Etant novice en VBA, je suis par la force des choses en train d'automatiser sur excel une application de contrôle de gestion, bref !
à un stade j'arrive à ca :
A = Application.Sumif(Range("E8:E22" ), ">1", Range("F8:F22" ))
mais mon but est d'avoir la même chose mais cette fois avec un intervalle compris entre 1 et 5, et là mes amis je suis largué,
si vous pouvez m'aider ca serait génial