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

Sumproduct et Count

12 réponses
Avatar
Denys
Bonjour =E0 tous,

Je recherche une formule en VBA qui me permettrait de compter le
nombre d'items diff=E9rents dans la colonne C (C8 jusqu'=E0 la fin) en
rapport avec la date en colonne A (A8 jusqu'=E0 la fin).

Par exemple, combien de nombre diff=E9rents apparaissent dans la colonne
C en date du 1er mars:

Colonne A Colonne C
2010/02/25 004592
2010/02/25 004592
2010/02/25 004592
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/03/01 004327
2010/03/01 004327
2010/03/01 004638
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600

Ici, la r=E9ponse devrait =EAtre 4, soit (004327, 004638, 004475 et
004600)

Auriez-vous une id=E9e ?

Merci pour votre temps

10 réponses

1 2
Avatar
michdenis
Bonjour,

Dans la feuille de calcul,

la formule serait :
=SOMMEPROD((Formes<>"")*(LesDates¡4)/(NB.SI(Formes;Formes)+(Formes="")))

Formes -> plage nommée pour les modèles (items)
LesDates -> plage nommée pour les dates
Dans mon exemple : A14 est la cellule de la date retenue : 2010/03/01
Réponse : 4

Je vais voir ce que je peux pour te mettre ça en VBA.




"Denys" a écrit dans le message de groupe de discussion :

Bonjour à tous,

Je recherche une formule en VBA qui me permettrait de compter le
nombre d'items différents dans la colonne C (C8 jusqu'à la fin) en
rapport avec la date en colonne A (A8 jusqu'à la fin).

Par exemple, combien de nombre différents apparaissent dans la colonne
C en date du 1er mars:

Colonne A Colonne C
2010/02/25 004592
2010/02/25 004592
2010/02/25 004592
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/03/01 004327
2010/03/01 004327
2010/03/01 004638
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600

Ici, la réponse devrait être 4, soit (004327, 004638, 004475 et
004600)

Auriez-vous une idée ?

Merci pour votre temps
Avatar
Jacquouille
Bonsoir Denys
Je ne suis pas du tout pro du TCD (Tableau croisé dynamique), mais, je crois
que dans ce cas, c'est ce qui conviendrait le mieux.
Nous allons voir ce que nos cousins d'Outre Mare proposent.
Bonne soirée

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"Denys" a écrit dans le message de news:

Bonjour à tous,

Je recherche une formule en VBA qui me permettrait de compter le
nombre d'items différents dans la colonne C (C8 jusqu'à la fin) en
rapport avec la date en colonne A (A8 jusqu'à la fin).

Par exemple, combien de nombre différents apparaissent dans la colonne
C en date du 1er mars:

Colonne A Colonne C
2010/02/25 004592
2010/02/25 004592
2010/02/25 004592
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/03/01 004327
2010/03/01 004327
2010/03/01 004638
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600

Ici, la réponse devrait être 4, soit (004327, 004638, 004475 et
004600)

Auriez-vous une idée ?

Merci pour votre temps
Avatar
Denys
Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
Avatar
michdenis
En vba, cela ressemble à ceci :

Attention aux coupures de ligne du service de messagerie.

'---------------------------------------------
Sub test()
Dim Rg As Range
Dim MaDate As Long, X As Integer
'DateSerial(année,mois,jour)
MaDate = DateSerial(2010, 3, 1)
With Feuil5
Set Rg = .Range("A8:A" & .Range("A65536").End(xlUp).Row)

X = Evaluate("SUMPRODUCT((" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & _
"<>"""")*(" & Rg.Parent.Name & "!" & Rg.Address & "=" & MaDate & _
")/(COUNTIF(" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & _
"," & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & ")+(" & _
Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & "="""")))")
End With
End Sub
'---------------------------------------------



"Denys" a écrit dans le message de groupe de discussion :

Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
Avatar
Denys
Bonjour Denis,

Voici ce que j'ai....

Sub Calc()

Dim L As Long
With ActiveSheet()
L = .Range("A65536").End(xlUp).Row
.Range("C8:A" & L).Name = "Formes"
.Range("A8:A" & L).Name = "LesDates"
.Range("C2").FormulaArray "=Sumproduct((Formes<>"""")*(LesDates=T2)/(Countif(Formes,Formes)+
(Formes="""")))"

End With

End Sub


Ca semble parfait....

Merci beaucoup.....

Denys
Avatar
michdenis
On peut omettre les "Rg.parent.name" et la formule devient :

X = Evaluate("SUMPRODUCT((" & Rg.Offset(, 2).Address & _
"<>"""")*(" & Rg.Address & "=" & MaDate & _
")/(COUNTIF(" & Rg.Offset(, 2).Address & _
"," & Rg.Offset(, 2).Address & ")+(" & _
Rg.Offset(, 2).Address & "="""")))")



"michdenis" a écrit dans le message de groupe de discussion :
#
En vba, cela ressemble à ceci :

Attention aux coupures de ligne du service de messagerie.

'---------------------------------------------
Sub test()
Dim Rg As Range
Dim MaDate As Long, X As Integer
'DateSerial(année,mois,jour)
MaDate = DateSerial(2010, 3, 1)
With Feuil5
Set Rg = .Range("A8:A" & .Range("A65536").End(xlUp).Row)

X = Evaluate("SUMPRODUCT((" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & _
"<>"""")*(" & Rg.Parent.Name & "!" & Rg.Address & "=" & MaDate & _
")/(COUNTIF(" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & _
"," & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & ")+(" & _
Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & "="""")))")
End With
End Sub
'---------------------------------------------



"Denys" a écrit dans le message de groupe de discussion :

Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
Avatar
Denys
On Mar 10, 3:51 pm, "michdenis" wrote:
En vba, cela ressemble ceci :

Attention aux coupures de ligne du service de messagerie.

'---------------------------------------------
Sub test()
Dim Rg As Range
Dim MaDate As Long, X As Integer
        'DateSerial(ann e,mois,jour)
MaDate = DateSerial(2010, 3, 1)
With Feuil5
    Set Rg = .Range("A8:A" & .Range("A65536").End(xlUp).Row)

    X = Evaluate("SUMPRODUCT((" & Rg.Parent.Name & "!" & Rg.Offset( , 2).Address & _
        "<>"""")*(" & Rg.Parent.Name & "!" & Rg.Address & "=" & MaDate & _
        ")/(COUNTIF(" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Add ress & _
        "," & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & ")+ (" & _
         Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & "="" "")))")
End With
End Sub
'---------------------------------------------

"Denys" a crit dans le message de groupe de dis cussion :

Merci Denis,

Je vais aussi essayer avec cette formule...

Denys



Wow !!!

C'est de la formule ça monsieur !!! Je vais l'adapter...

Merci infiniment pour ton temps....

Bonne journée

Denys
Avatar
michdenis
J'ai oublié de te dire, que si tu omets Les Rg.parent.name
tu dois activer la feuille en ajoutant ceci :

With Feuil5
.Activate '<<========
Le reste de la procédure.



"michdenis" a écrit dans le message de groupe de discussion :

On peut omettre les "Rg.parent.name" et la formule devient :

X = Evaluate("SUMPRODUCT((" & Rg.Offset(, 2).Address & _
"<>"""")*(" & Rg.Address & "=" & MaDate & _
")/(COUNTIF(" & Rg.Offset(, 2).Address & _
"," & Rg.Offset(, 2).Address & ")+(" & _
Rg.Offset(, 2).Address & "="""")))")



"michdenis" a écrit dans le message de groupe de discussion :
#
En vba, cela ressemble à ceci :

Attention aux coupures de ligne du service de messagerie.

'---------------------------------------------
Sub test()
Dim Rg As Range
Dim MaDate As Long, X As Integer
'DateSerial(année,mois,jour)
MaDate = DateSerial(2010, 3, 1)
With Feuil5
Set Rg = .Range("A8:A" & .Range("A65536").End(xlUp).Row)

X = Evaluate("SUMPRODUCT((" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & _
"<>"""")*(" & Rg.Parent.Name & "!" & Rg.Address & "=" & MaDate & _
")/(COUNTIF(" & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & _
"," & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & ")+(" & _
Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & "="""")))")
End With
End Sub
'---------------------------------------------



"Denys" a écrit dans le message de groupe de discussion :

Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
Avatar
JB
Bonsoir,

date þuil1!$A$2:$A$18
formes þuil1!$C$2:$C$18


=NB(1/FREQUENCE(SI(dateÚTE(2010;3;1);formes);formes))
Valider avec maj+ctrl+entrée

http://boisgontierjacques.free.fr/pages_site/sommeprod.htm#CompterNbDiff

JB

On 10 mar, 21:31, "Jacquouille" wrote:
Bonsoir Denys
Je ne suis pas du tout pro du TCD (Tableau crois dynamique), mais, je cro is
que dans ce cas, c'est ce qui conviendrait le mieux.
Nous allons voir ce que nos cousins d'Outre Mare proposent.
Bonne soir e

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est la femme."

Jacquouille.

"Denys" a crit dans le message de news:

Bonjour tous,

Je recherche une formule en VBA qui me permettrait de compter le
nombre d'items diff rents dans la colonne C (C8 jusqu' la fin) en
rapport avec la date en colonne A (A8 jusqu' la fin).

Par exemple, combien de nombre diff rents apparaissent dans la colonne
C en date du 1er mars:

Colonne A                Colonne C
2010/02/25 004592
2010/02/25 004592
2010/02/25 004592
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/02/25 004275
2010/03/01 004327
2010/03/01 004327
2010/03/01 004638
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004475
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600
2010/03/01 004600

Ici, la r ponse devrait tre 4, soit (004327, 004638, 004475 et
004600)

Auriez-vous une id e ?

Merci pour votre temps
Avatar
JB
En VBA

n= [Count(1/FREQUENCY(If(dateÚTE(2010,3,1),formes),formes))]

JB




On 10 mar, 22:05, JB wrote:
Bonsoir,

date    þuil1!$A$2:$A$18
formes  þuil1!$C$2:$C$18

=NB(1/FREQUENCE(SI(dateÚTE(2010;3;1);formes);formes))
Valider avec maj+ctrl+entrée

http://boisgontierjacques.free.fr/pages_site/sommeprod.htm#CompterNbDiff

JB

On 10 mar, 21:31, "Jacquouille" wrote:



> Bonsoir Denys
> Je ne suis pas du tout pro du TCD (Tableau crois dynamique), mais, je c rois
> que dans ce cas, c'est ce qui conviendrait le mieux.
> Nous allons voir ce que nos cousins d'Outre Mare proposent.
> Bonne soir e

> --
> Bien amicalmement,
> "Le vin est au repas ce que le parfum est la femme."

> Jacquouille.

> "Denys" a crit dans le message de news:
>
> Bonjour tous,

> Je recherche une formule en VBA qui me permettrait de compter le
> nombre d'items diff rents dans la colonne C (C8 jusqu' la fin) en
> rapport avec la date en colonne A (A8 jusqu' la fin).

> Par exemple, combien de nombre diff rents apparaissent dans la colonne
> C en date du 1er mars:

> Colonne A                Colonne C
> 2010/02/25 004592
> 2010/02/25 004592
> 2010/02/25 004592
> 2010/02/25 004275
> 2010/02/25 004275
> 2010/02/25 004275
> 2010/02/25 004275
> 2010/03/01 004327
> 2010/03/01 004327
> 2010/03/01 004638
> 2010/03/01 004475
> 2010/03/01 004475
> 2010/03/01 004475
> 2010/03/01 004475
> 2010/03/01 004475
> 2010/03/01 004475
> 2010/03/01 004600
> 2010/03/01 004600
> 2010/03/01 004600
> 2010/03/01 004600

> Ici, la r ponse devrait tre 4, soit (004327, 004638, 004475 et
> 004600)

> Auriez-vous une id e ?

> Merci pour votre temps- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -
1 2