VBA : fonction sumif [Fermé]

Signaler
-
 Utilisateur anonyme -
Bonjour

J'utilise la fonction sumif pour faire une somme suivant une condition.
Feuil11.Range("B2").Offset(i - 1, 0) = Application.WorksheetFunction.SumIf(Feuil3.Range("AS2:AS" & a), Feuil9.Range("A2").Offset(i - 1, 0), Feuil3.Range("AB2:AB" & a))

À présent j'aimerai faire une somme suivant deux conditions.
Sauriez vous comment je pourrai modifier ce code, sans passer par If , End If ; car j'ai pas mal de colonne.

Merci d'avance

Laure

4 réponses

Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
Bonjour

petite démo:
Sub somme_2conditions()
Sheets(3).Range("C3") = Evaluate("sumproduct((Feuil1!A2:A30=Feuil2!B2)*(Feuil1!B2:B30=Feuil2!C2)*(Feuil1!C2:C30))")
End Sub


maquette:
http://www.cijoint.fr/cjlink.php?file=cj201012/cij7zOnUwA.xls

Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
modif avec variable dernière ligne

Sub somme_2conditions()
derlig = Sheets(1).Range("A65536").End(xlUp).Row

Sheets(3).Range("C3") = Evaluate("sumproduct((Feuil1!A2:A3" & derlig & "=Feuil2!B2)*(Feuil1!B2:B3" & derlig & "=Feuil2!C2)*(Feuil1!C2:C3" & derlig & "))")
End Sub
Utilisateur anonyme
Bonjour,

Merci pour votre aide, c'est exactement ce que je cherche à faire.
Mais je ne sais pas pourquoi dans mon fichier ça ne marche pas
En voici un extrait, je voudrai garder l'expression de la dernier ligne (derlig), mais là pour le test j'ai mis 478

http://www.cijoint.fr/cjlink.php?file=cj201012/cijSpnltF3.xls

Laure
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
RE,

Dans ta colonne A tu as des #NA à supprimer ! :-)
Utilisateur anonyme
Oui c'est vrai j'avais pas fait attention.

Merci Beaucoup !!!
Bonsoir Michel_m

J'ai essayé sans succès du coup je reviens vous demander de l'aide.

Pourriez vous s'il vous plaît modifier votre code afin qu'il puisse fonctionner dans une boucle

Comme dans l'exemple http://www.cijoint.fr/cjlink.php?file=cj201012/cijuTlI2M2.xls

Les deux conditions varieraient en fonction des intitulés colonnes et lignes du tableau feuille 3

Merci d'avance

Laure
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
bonjour,

proposition j'espère dans la journée. J'étudie une autre méthode que "evaluate" car cela impliquerait une syntaxe diabolique de l'instruction !!!
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
et voilà
fait sur tes données (+ réaliste); certaines ont été modifiées pour tester mes bidouillages
sans nom d'onglets j'ai mis sheets(1) et sheets(2) à toi voir si tu dois modifier

http://www.cijoint.fr/cjlink.php?file=cj201012/cij4Is8zdw.xls

Bonsoir

Sans vouloir abuser.

Pourriez-vous s'il vous plaît jeter un coup d'oeil sur l'exemple ci joint

http://www.cijoint.fr/cjlink.php?file=cj201012/cijvuZHw6C.xls

Je ne sais pas pourquoi mais j'obtiens un tableau décalé d'une colonne et d'une ligne alors que je n'ai pas modifié votre code.

Aussi si possible je voudrai que soient classé dans ce tableau les chiffres par ordre décroissant les sommes. Afin que je puisse avoir les 10 plus gros secteurs s'affichant dans les 10 premières lignes du tableau en fait.

Merci d'avance

Laure
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
Il n' y a rien dans la feuille "calcul" !!! :-((

au départ, c'était juste établir en VBA une somme à 2 conditions:
j'aimerai faire une somme suivant deux conditions.

ensuite une matrice de 14 colonnes par 30 lignes

et maintenant:...

que soient classé dans ce tableau les chiffres par ordre décroissant les sommes Afin que je puisse avoir les 10 plus gros secteurs s'affichant dans les 10 premières lignes du tableau en fait.
Il y a 14 colonnes....


Après, tu voudrais que ..?

Bonsoir

La feuille Calcul se rempli via la macro données.

Oui je voulais faire une somme suivant deux conditions.
Mais au départ je pensais que mon code (celui de ma question) était adaptable et que j'aurais donc pu le mettre dans une boucle (comme je l'ai fait pour une condition) et qu'ensuite j'aurai classé les résultats.
Je sais que j'abuse là ... mais je n'arrive pas à modifier votre code.
Je débute en VBA et je n'aurais moi pas pu écrire tout ça ...

Merci pour votre aide.

Laure
Messages postés
16392
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
27 février 2021
3 144
bonjour,

Je n'ai vu AUCUNE DONNEE dans le classeur que tu m''as transmis... que ce soit dans TCD3 et CALCUL !!!
de m^me aucun renseignement sur un décalage (où, quelle ligne et/ou colonne) et sur le tri que je t'avais déjà demandé et resté sans réponse

mais à moi de me demer... avec rien !!!

De toutes façons la solution ne passe certainement pas par de sumif ni des sumproduct comme tu m'as embarqué mais par des TCD comme sont baptisés des onglets...

Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup ) il faut en plus que....

Désolé, suivi abandonné
Utilisateur anonyme
Ok
au final j'en suis au même point
mais merci quand même.