Sumproduct et Count

Le
Denys
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
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
michdenis
Le #21357211
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"
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
Jacquouille
Le #21357201
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"
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
Denys
Le #21357191
Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
michdenis
Le #21357321
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"
Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
Denys
Le #21357301
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
michdenis
Le #21357401
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" #
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"
Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
Denys
Le #21357291
On Mar 10, 3:51 pm, "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).Add ress & _
        "," & Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & ")+ (" & _
         Rg.Parent.Name & "!" & Rg.Offset(, 2).Address & "="" "")))")
End With
End Sub
'---------------------------------------------

"Denys"
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
michdenis
Le #21357391
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"
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" #
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"
Merci Denis,

Je vais aussi essayer avec cette formule...

Denys
JB
Le #21357381
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"
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"
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
JB
Le #21357371
En VBA

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

JB




On 10 mar, 22:05, 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"


> 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" >
> 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 -
Publicité
Poster une réponse
Anonyme