Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Somme en fonction de la date + catégorie choisies

19 réponses
Avatar
Apitos
Bonjour =E0 tous,

J'aimerais calculer une somme en fonction d'une date en plus d'une
cat=E9gorie, et selon la date choisie avec toutes cat=E9gories confondues,
mais sans succ=E8s.

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

Merci.


http://cjoint.com/?kBxPLMYz5G

9 réponses

1 2
Avatar
Daniel.C
> Bon, maintenant reste à essayer de trouver l'étendu de chaque
catégorie, automatiquement.



??

Autrement, j'ai ajouté "Tout" en J5. Si tu choisis "Tout" dans la
listbox, le calcul se fait ppour toutes les catégories. Remplace le
code du bouton par :

Private Sub CommandButton1_Click()
Dim BL As Range, BT As Range, EF As Range, Ctr As Double
If ListBox2.Value = "" And Me.ComboBox1 = "" Then
MsgBox "Champ non rempli"
Me.Hide
Exit Sub
End If
Set BL = Range([A4], Range("A" & Application.Match("BT", [A:A], 0)
- 2))
Set BT = Range(Range("A" & Application.Match("BT", [A:A], 0) + 2),
_
Range("A" & Application.Match("EF", [A:A], 0) - 2))
Set EF = Range(Range("A" & Application.Match("EF", [A:A], 0) + 2),
_
Range("A65000").End(xlUp))
BL.Name = "BL"
BT.Name = "BT"
EF.Name = "EF"
With Me.ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
If .List(i) <> "Tout" Then
For Each c In Range(.List(i))
If c.Value = CDate(Me.ComboBox1.Value) Then
Ctr = Ctr + c.Offset(, 1)
End If
Next
Else
For Each c In Union(BL, BT, EF)
If c.Value = CDate(Me.ComboBox1.Value) Then
Ctr = Ctr + c.Offset(, 1)
End If
Next
End If
End If
Next i
End With
[I8] = Ctr
Me.Hide
End Sub

Daniel
Avatar
Apitos
Re,

> Bon, maintenant reste à essayer de trouver l'étendu de chaque
> catégorie, automatiquement.

??



Ce n'est pas forcement les catégories "BL", "BT" ou "EF" qui
représentent toujours la liste des catégoties à traiter.
Il peut y avoir d'autres catégories qui viennent s'ajouter à la liste
à chaque mise à jour de cette feuille.

Et avec le tri, la plage "BL" ne débutera pas forcément en [A4] et
peut se retrouver en dessous d'autres plage d'une catégorie classée
avant elle ...


Autrement, j'ai ajouté "Tout" en J5. Si tu choisis "Tout" dans la
listbox, le calcul se fait ppour toutes les catégories.



Merci pour cette astuce.

Cordialement.

Apt.
Avatar
Daniel.C
Alors :

Private Sub CommandButton1_Click()
Dim c As Range, Ctr As Double
If ListBox2.Value = "" And Me.ComboBox1 = "" Then
MsgBox "Champ non rempli"
Me.Hide
Exit Sub
End If
For Each c In Range("J2", Range("J65000").End(xlUp))
If c.Value = "Tout" Then
ActiveWorkbook.Names.Add c.Value, RefersTo:= _
Range(Range("A" & Application.Match([J2], [A:A], 0) + 2), _
Range("A65000").End(xlUp))
ElseIf c.Offset(1).Value = "Tout" Then
ActiveWorkbook.Names.Add c.Value, RefersTo:= _
Range(Range("A" & Application.Match(c.Value, [A:A], 0) +
2), _
Range("A65000").End(xlUp))
Else
ActiveWorkbook.Names.Add c.Value, RefersTo:= _
Range(Range("A" & Application.Match(c.Value, [A:A], 0) +
2), _
Range("A" & Application.Match(c.Offset(1), [A:A], 0) - 2))
End If
Next c
With Me.ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
Range(.List(i)).Select
For Each c In Range(.List(i))
If c.Value = CDate(Me.ComboBox1.Value) Then
Ctr = Ctr + c.Offset(, 1)
End If
Next
End If
Next i
End With
[I8] = Ctr
Me.Hide
End Sub

Daniel

Re,

Bon, maintenant reste à essayer de trouver l'étendu de chaque
catégorie, automatiquement.



??



Ce n'est pas forcement les catégories "BL", "BT" ou "EF" qui
représentent toujours la liste des catégoties à traiter.
Il peut y avoir d'autres catégories qui viennent s'ajouter à la liste
à chaque mise à jour de cette feuille.

Et avec le tri, la plage "BL" ne débutera pas forcément en [A4] et
peut se retrouver en dessous d'autres plage d'une catégorie classée
avant elle ...


Autrement, j'ai ajouté "Tout" en J5. Si tu choisis "Tout" dans la
listbox, le calcul se fait ppour toutes les catégories.



Merci pour cette astuce.

Cordialement.

Apt.


Avatar
Apitos
Ca donne une "Incompatibilité de type" lorsque c="EF" dans :

'------------
Else
ActiveWorkbook.Names.Add c.Value, RefersTo:= _
Range(Range("A" & Application.Match(c.Value, [A:A], 0) +
2), _
Range("A" & Application.Match(c.Offset(1), [A:A], 0) - 2))
End If
'------------
Avatar
Daniel.C
Pas chez moi :

http://www.filedropper.com/sommedate

Daniel

Ca donne une "Incompatibilité de type" lorsque c="EF" dans :

'------------
Else
ActiveWorkbook.Names.Add c.Value, RefersTo:= _
Range(Range("A" & Application.Match(c.Value, [A:A], 0) +
2), _
Range("A" & Application.Match(c.Offset(1), [A:A], 0) - 2))
End If
'------------


Avatar
Apitos
Bonsoir Daniel

> Ca donne une "Incompatibilité de type" lorsque c="EF"



Le test dans le code se fait sur le mot "Tout", et moi j'ai inscrit
"tout" dans mes essais (Le premier "t" en miniscule) !! :)

En essayant de récupérer la
Avatar
Apitos
Message envoyé en mis chemin ...

En essayant de recuperer les valeurs du ComboBox et de la ListBox, ça
n'a pas marché ..

'-----------
[G8] = ComboBox1.Value
[H8] = ListBox2.Value
[I8] = Ctr
'-----------
Avatar
Daniel.C
Regards là :
http://cjoint.com/?kEljPqswMI
Daniel

Message envoyé en mis chemin ...

En essayant de recuperer les valeurs du ComboBox et de la ListBox, ça
n'a pas marché ..

'-----------
[G8] = ComboBox1.Value
[H8] = ListBox2.Value
[I8] = Ctr
'-----------


Avatar
Apitos
Bonjour Daniel,

Ca marche bien maintenant.

Merci infiniment :)
1 2