Somme en fonction de la date + catégorie choisies

Le
Apitos
Bonjour à tous,

J'aimerais calculer une somme en fonction d'une date en plus d'une
catégorie, et selon la date choisie avec toutes catégories confondues,
mais sans succès.

Et puis il y'a que La liste de validation de date contient des
doublons et elle n'est pas triée.

Merci.


http://cjoint.com/?kBxPLMYz5G
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #17664631
Bonsoir.
1. Définir trois plages :
BL = A4:A19
BT = A23:A51
EF = A55:A58
Utiliser la formule :
=SI(H8="BL";SOMMEPROD((BL=G8)*DECALER(BL;0;1));SI(H8="BT";SOMMEPROD((BT=G8)*DECALER(BT;0;1));SOMMEPROD((EF=G8)*DECALER(EF;0;1))))
Il faudra une macro pour éliminer les dates en double.
Cordialement.
Daniel

Bonjour à tous,

J'aimerais calculer une somme en fonction d'une date en plus d'une
catégorie, et selon la date choisie avec toutes catégories confondues,
mais sans succès.

Et puis il y'a que La liste de validation de date contient des
doublons et elle n'est pas triée.

Merci.


http://cjoint.com/?kBxPLMYz5G


Apitos
Le #17666111
Bonjour Daniel,

Les tableaux affichés sont le résultat d'un filtre élaboré et il sont triés.

Alors je ne peux pas définir des plages fixes pour chaque catégorie.

Et puis les catégories peuvent aller d'une à plusieurs ...

"Daniel.C" a écrit :

Bonsoir.
1. Définir trois plages :
BL = A4:A19
BT = A23:A51
EF = A55:A58
Utiliser la formule :
=SI(H8="BL";SOMMEPROD((BL=G8)*DECALER(BL;0;1));SI(H8="BT";SOMMEPROD((BT=G8)*DECALER(BT;0;1));SOMMEPROD((EF=G8)*DECALER(EF;0;1))))
Il faudra une macro pour éliminer les dates en double.
Cordialement.
Daniel


Daniel.C
Le #17667001
Bonjour.
Il faut alors mettre la catégorie dans une colonne cachée en regard de
chaque ligne. D'autre part, comment peux-tu sélectionner plusieurs
catégories avec une liste de validation ?
Daniel

Bonjour Daniel,

Les tableaux affichés sont le résultat d'un filtre élaboré et il sont triés.

Alors je ne peux pas définir des plages fixes pour chaque catégorie.

Et puis les catégories peuvent aller d'une à plusieurs ...

"Daniel.C" a écrit :

Bonsoir.
1. Définir trois plages :
BL = A4:A19
BT = A23:A51
EF = A55:A58
Utiliser la formule :
=SI(H8="BL";SOMMEPROD((BL=G8)*DECALER(BL;0;1));SI(H8="BT";SOMMEPROD((BT=G8)*DECALER(BT;0;1));SOMMEPROD((EF=G8)*DECALER(EF;0;1))))
Il faudra une macro pour éliminer les dates en double.
Cordialement.
Daniel




Apitos
Le #17669111
Daniel,

Pour les listes de validation ce n'est qu'une tentative de résoudre ce
probleme.

Si VBA à une solution, je serais preneur !

Merci d'avance.
Sam
Le #17669411
Bonjour,
artisanalement ça donne ceci
=SI(H8¢;SOMMEPROD((A4:A19=G8)*(B4:B19));SI(H8¢1;SOMMEPROD((A23:A51=G8)*(B23:B51));SI(H8¥3;SOMMEPROD((A55:A58=G8)*(B55:B58)))))
mais ça serait mieux si le résultat du filtre était mis d'une façon plus
formatée, par exemple consacrer 99 lignes pour chaque
résultat de filtrage ou comme le préconise Daniel, mettre une colonne
supplémentaire avec les BL, BT et EF

Cordialement
Michel dit "Sam"

"Apitos"
Bonjour Daniel,

Les tableaux affichés sont le résultat d'un filtre élaboré et il sont
triés.

Alors je ne peux pas définir des plages fixes pour chaque catégorie.

Et puis les catégories peuvent aller d'une à plusieurs ...

"Daniel.C" a écrit :

Bonsoir.
1. Définir trois plages :
BL = A4:A19
BT = A23:A51
EF = A55:A58
Utiliser la formule :
=SI(H8="BL";SOMMEPROD((BL=G8)*DECALER(BL;0;1));SI(H8="BT";SOMMEPROD((BT=G8)*DECALER(BT;0;1));SOMMEPROD((EF=G8)*DECALER(EF;0;1))))
Il faudra une macro pour éliminer les dates en double.
Cordialement.
Daniel





Daniel.C
Le #17670891
Regarde le classeur :
http://cjoint.com/?kCqbh5O8iG
Tu peux choisir plusieurs catégories.
Daniel

Daniel,

Pour les listes de validation ce n'est qu'une tentative de résoudre ce
probleme.

Si VBA à une solution, je serais preneur !

Merci d'avance.


Apitos
Le #17675561
Bonjour Daniel,

Merci pour l'exemple.

Mais d 'une façon générale, j'aimerais boucler sur toutes les
catégories présentes en (J2 :Jn ):
'------------------
For Each Cel In Range([J2], [J500].End(xlUp))
Set CatN° =Définir CatN°
CatN°.Name = "CatN°"
Next Cel
'-------------------
Et prendre en compte le cas d'un choix d'une date seulement, pour
toutes les catégories en (J2:Jn) dans le code suivant :
'--------------------
For i = 0 To Me.ListBox2.ListCount - 1
If Me.ListBox2.Selected(i) Then
For Each c In Range(Me.ListBox2.List(i))
If c.Value = CDate(Me.ComboBox1.Value) Then
Ctr = Ctr + c.Offset(, 1)
End If
Next
End If
Next i
'------------------------

Merci d 'avance.
Apitos
Le #17675671
Bonjour Daniel,

Merci pour l'exemple.

Mais d 'une façon générale, j'aimerais boucler sur toutes les
catégories présentes en (J2 :Jn ):
'------------------
For Each Cel In Range([J2], [J500].End(xlUp))
Set CatN° =Définir CatN°
CatN°.Name = "CatN°"
Next Cel
'-------------------
Et prendre en compte de calculer seulement en fonction d'une date
choisie, pour toutes les catégories en (J2:Jn) dans le code suivant :
'--------------------
For i = 0 To Me.ListBox2.ListCount - 1
If Me.ListBox2.Selected(i) Then
For Each c In Range(Me.ListBox2.List(i))
If c.Value = CDate(Me.ComboBox1.Value) Then
Ctr = Ctr + c.Offset(, 1)
End If
Next
End If
Next i
'------------------------

Merci d 'avance.
Daniel.C
Le #17677451
Bonjour.
Le classeur te permet de sélectionner plusieurs catégories. Utilise la
touche CTRL ou MAJ dans la listbox, comme pour sélectionner des
cellules. Les calculs se font uniquement pour la date choisie dans le
combobox. Je reporte dans la feuille en I8, de mémoire, là ou tu avais
mis la formule initiale. Tu peux d'ailleurs supprimer les listes en G8
et H8 qui ne me servent pas.
Daniel

Bonjour Daniel,

Merci pour l'exemple.

Mais d 'une façon générale, j'aimerais boucler sur toutes les
catégories présentes en (J2 :Jn ):
'------------------
For Each Cel In Range([J2], [J500].End(xlUp))
Set CatN° =Définir CatN°
CatN°.Name = "CatN°"
Next Cel
'-------------------
Et prendre en compte de calculer seulement en fonction d'une date
choisie, pour toutes les catégories en (J2:Jn) dans le code suivant :
'--------------------
For i = 0 To Me.ListBox2.ListCount - 1
If Me.ListBox2.Selected(i) Then
For Each c In Range(Me.ListBox2.List(i))
If c.Value = CDate(Me.ComboBox1.Value) Then
Ctr = Ctr + c.Offset(, 1)
End If
Next
End If
Next i
'------------------------

Merci d 'avance.


Apitos
Le #17677851
Bonjour Daniel,

Pour le calcul global de toutes les categories, j'avais pensé à l'idé e
de selectionner une ligne vide dans la ListBox pour faire comprendre
au programme qu'il faut faire la somme sur toutes les lignes ayant la
même date chosie dans la ComboBox.

Bon, maintenant reste à essayer de trouver l'étendu de chaque
catégorie, automatiquement.
Publicité
Poster une réponse
Anonyme