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.
> 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
> 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
> 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
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.
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.
> 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.
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.
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.
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.
Apitos
Ca donne une "Incompatibilité de type" lorsque c="EF" dans :