Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

sommer données semaine en cours

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Staple1600

XLDnaute Barbatruc
Bonjour à tous

Par curiosité et gout de la nouveauté
d'autres solutions plus 'esthétiques' pour réaliser cela?

Code:
 =SOMMEPROD(($B$1:$B$29)*($A$1:$A$29<=(AUJOURDHUI()-MOD(AUJOURDHUI()-2;7)+4)*($A$1:$A$29>=(AUJOURDHUI()-MOD(AUJOURDHUI()-2;7)))))

(formules ou VBA)
j'ai une préférence pour le VBA

Bon week-en à tous
 
Dernière édition:
Bonjour

Pour te venir en aide, il serait bon de placer un fichier, en montrant les données des deux plages.

Plusieurs solutions existent pour simplifier ta formule, mais cela dépend de ces données :
- Les dates dans la plages A1:A29, ont-elles des trous ?
- Les données de la plage B1:B29, sont-elles saisies journalièrement ?

@+Jean-Marie

PS : j'ai oublié, je te déconseille d'utiliser la partie ci-dessous
AUJOURDHUI()-MOD(AUJOURDHUI()-2;7)+4
mais
AUJOURDHUI()-JOURSEM(AUJOURDHUI();3))
celle-ci fonctionne quelque soit l'état de l'option 'Calendrier 1904' d'Excel.

Message édité par: JeanMarie, à: 16/07/2005 13:05
 
Bonjour,

SommeProd n'accepte pas les colonnes entières du genre A:A

Tes 2 plages sont nommées de façon dynamique,
la fonction Aujourdhui() est nommée 'CeJr'
la formule te donnant le lundi est nommée 'Lundi'
puis la formule entière est nommée :
ou bien avec la fonction et le petit bout de formule déjà nommés,
ou bien avec seulement les 2 plages nommées.

Reste à savoir si c'est plus esthétique

Pour donner des noms, tu regardes le fil de Marion :
Lien supprimé

ou bien le message d'Antoine, à 23:43 ici :
Lien supprimé
[file name=SommeProdStaple.zip size=3947]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/SommeProdStaple.zip[/file]
 

Pièces jointes

Pour le VBA

j'en suis là:

Sub test()
x = Date - Weekday(Date, 3)
y = x + 4
MsgBox 'Semaine en cours' & Chr(13) & 'Début: ' & x & Chr(13) & 'Fin: ' & y
End Sub


Le reste c'est déjà plus dur.


Faut-il en rester au SOMMEPROD

(je n'ai rien contre)
Mais juste pour le fun
j'aimerais une version VBA

Si quelqu'un ici a un bout de code qui sait faire...

Bon week-end
 
Bonsoir

Excel dispose en standard d'une fonction qui renvoie le N° de semaine pour une cellule, mais cette fonction n'est pas fonctionnelle pour une matrice.

Place ce code dans un module.
Code:
Option Explicit
Option Base 0

Public Function MatriceSemaine(vPlage As Range, Comparateur As Date) As Variant
Dim vMatrice() As Byte
Dim vCell As Range
Dim EgaleSemaine As Byte
Dim J As Double

   ReDim vMatrice(vPlage.Rows.Count - 1)
   EgaleSemaine = DatePart('ww', Comparateur, 2)
   J = 0
   For Each vCell In vPlage
      If DatePart('ww', vCell, 2) = EgaleSemaine Then
         vMatrice(J) = 1
      Else
         vMatrice(J) = 0
      End If
      J = J + 1
   Next vCell
   MatriceSemaine = Application.WorksheetFunction.Transpose(vMatrice)
End Function

Pour utiliser cette function dans une cellule, dans ton cas
=SOMMEPROD(B2:B101*(MatriceSemaine(A2:A101;AUJOURDHUI())))
avec les plages nommées de Monique
=SOMMEPROD(Mtts*(MatriceSemaine(Jrs;AUJOURDHUI())))

@+Jean-Marie
 
Bonjour

Voici la function modifiée
Code:
Public Function MatriceSemaine(vPlage As Range, Comparateur As Date) As Variant
Dim vMatrice() As Byte
Dim vCell As Range
Dim EgaleSemaine As Byte
Dim J As Double

   ReDim vMatrice(vPlage.Rows.Count - 1)
   EgaleSemaine = DatePart('ww', Comparateur, 2)
   J = 0
   For Each vCell In vPlage
      If DatePart('ww', vCell, 2) = EgaleSemaine And WeekDay(vCell, 2) < 6 Then
         vMatrice(J) = 1
      Else
         vMatrice(J) = 0
      End If
      J = J + 1
   Next vCell
   MatriceSemaine = Application.WorksheetFunction.Transpose(vMatrice)
End Function

Si j'ai un conseil à te donner sur l'utilisation d'une méthode par rapport à l'autre, c'est de prendre celle qui te donnera le plus de souplesse dans l'évolution de ton tableau.

@+Jean-Marie
 
Bonjour Staple, Bonjour à tous,

J'ai regardé ta formule et il me semble que c'est tout simplement le premier EQUIV qui pose problème car comme tu n'a pas spécifié d'argument type de recherche, il prend 1 par défaut soit :

'la valeur la plus élevée qui est inférieure ou égale à celle de l'argument valeur_cherchée'

Si tu ajoutes ;0, ça marche très bien car il cherche la première exactement équivalente.

@+

Gael
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
922
Réponses
8
Affichages
970
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…