Fonction somme sur plage étendu

johnmarket

XLDnaute Nouveau
Bonjour,
si je fais appel aux expert VB c'est qu'avec la fonction SOMMEPROD mon calcul se fait mais le fichier Excel devient bcp trop volumineux.
Je souhaite faire une fonction qui me calcul une somme (sur une durée mais peu importe le format) avec 2 conditions
- 1ère condition sur une colonne entière
- 2ème sur une suite de colonne (dans mon cas K2 à T49)

Or je m'en sors avec SOMMEPROD mais je suis obligé d'avoir 10 SOMMEPROD chacun pour les 10 colonnes

je joins une feuille Excel et j'explique dans l'onglet "DMP+" plus de détail
Merci d'avance et jouyeux Noël !
:)
 

Pièces jointes

  • Affichage_IG_Ecran_-_V3.zip
    41.4 KB · Affichages: 42

Modeste

XLDnaute Barbatruc
Re : Fonction somme sur plage étendu

Bonjour johnmarket,

Comme à l'accoutumée avec moi (non, il n'y a pas de trêve des confiseurs! :p), je ne suis pas certain d'avoir bien compris, mais cette formule donne le même résultat:
Code:
=SOMME(SI('DMP-'!K2:T49=B5;SI('DMP-'!W2:W49=D4;('DMP-'!C2:C49);0);0))
... formule matricielle (à valider avec Ctrl+Maj+Enter)
Résultat pour TIGRE en octobre: 21h20.

A tester ...

Allez, c'est bientôt Noël (et si je ne m'occupe pas ici, il faut que j'aille poncer une vieille porte :mad:) ... Le code d'une fonction personnalisée qui donne les mêmes résultats:
Code:
Public Function total_durée(marque As Range, mois As Range)
For Each c In Sheets("DMP-").Range("K2:T49")
    If c = marque And Sheets("DMP-").Cells(c.Row, 23) = mois Then _
        tot = tot + Sheets("DMP-").Cells(c.Row, 3)
Next c
total_durée = tot
End Function
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Fonction somme sur plage étendu

Bonjour,

Finalement, poncer cette vieille porte n'était pas une si mauvaise idée ... je me suis souvenu que dans ton fichier, la demande était formulée avec des nuances supplémentaires. Ci-dessous, la fonction adaptée à une plage de longueur variable.
Code:
Public Function total_durée(marque As Range, mois As Range)
With Sheets("DMP-")
    For Each c In .Range("K2:T" & .Range("J65000").End(xlUp).Row)
        If c = marque And .Cells(c.Row, 23) = mois Then _
            tot = tot + .Cells(c.Row, 3)
    Next c
End With
total_durée = tot
End Function
... en partant du principe que toutes les cellules de la colonne J sont renseignées !?
 

johnmarket

XLDnaute Nouveau
Re : Fonction somme sur plage étendu

Super Modeste
Alors la fonction SOMME(SI ... fonctionne à merveille.

La Function que tu m'as donnée ... je l'ai copié telle quelle dans un module
en suite dans ma cellule rose (D5) je tape total_durée (B5, D4) puis ENTREE j'ai une message d'erreur et excel positionne la marque sur B5 (premier argument)
pourtant en B5 j'ai bien MAESTRO !

je ne comprends plus rien !
:confused:
 

Discussions similaires

Réponses
3
Affichages
380
Réponses
11
Affichages
598

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 823
dernier inscrit
ben talha redouane