Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

sommeprod avec critére de valeur unique sur colonne C

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GADENSEB

XLDnaute Impliqué
Bonjour Le Forum,

Je cherche à faire un sommeprod
J'ai pondu cette formule

CODE]=SOMMEPROD(('BASE EMPLOI'!$D$2:$D$4991="GRENOBLE")*('BASE EMPLOI'!$E$2:$E$4991=$A26)*('BASE EMPLOI'!$B$2:$B$4991=B$4))[/CODE]

Seul soucis, c'est qu'elle ne tiens pas compte des doublons en colonne C

Comme inclure ce critère en plus ?

Bon We

seb
 

Pièces jointes

Dernière édition:
Re : sommeprod avec critére de valeur unique sur colonne C

Re

Un essai avec une Matricielle (ligne 5000 à adapter):
Code:
=NB(1/FREQUENCE(SI((('BASE EMPLOI'!$D$2:$D$5000="GRENOBLE")*('BASE EMPLOI'!$E$2:$E$5000=$A5)*('BASE EMPLOI'!$B$2:$B$5000=B$4));EQUIV('BASE EMPLOI'!$C$2:$C$5000;'BASE EMPLOI'!$C$2:$C$5000;0));LIGNE(INDIRECT("1:"&LIGNES('BASE EMPLOI'!$C$2:$C$5000:'BASE EMPLOI'!$C$2:$C$5000)))))

Cordialement
Chris
 

Pièces jointes

Re : sommeprod avec critére de valeur unique sur colonne C

Re !
effectivement cela marche nikel mais cela ralenti considérablement mon fichier
comment faire pour bloquer le recalcul uniquement sur cet onglet et l'activer que si on va sur l'onglet ?????

a+ Seb
 
Re : sommeprod avec critére de valeur unique sur colonne C

C'est bon j'ai trouvé comme un grand

sur mon onglet courant :
Code:
Private Sub Worksheet_Activate()
Sheets("STATISTIQUES").EnableCalculation = False
End Sub

et sur la feuille STATISTIQUES
Code:
Private Sub Worksheet_Activate()
ActiveSheet.Calculate
End Sub

Tout bête !!!
Bonne am

Seb
 
Re : sommeprod avec critére de valeur unique sur colonne C

Hello Chris401, Le Forum,

ton process est génial !!!
Le seul truc c'est que sur ma BD il y a environ 3500 lignes .....du coup le temps de calcul est de 1à 2 minutes....
comment accélérer le traitement ?

Bonne journée
 
Re : sommeprod avec critére de valeur unique sur colonne C

Hello,
Je reviens sur mon poste, du coup j'ai fais le tout en macro suivant ton exemple

Le probléme c'est que j'ai le mm résultat par colonne.... comme si la formule n'actualisée pas ...

....pas logique....

QQn aurait une idée ?

Bonne journée

Seb


Code:
Private Sub Bt_Calculs_Click()

With Sheets("STATISTIQUES")
Range("Tb_S_ZoneCalculs").Select
Selection.ClearContents
Range("A5").Select


'Colonne B --- A TRAITER
.Range("B5:B" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
    "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-1])*(Tb_B_User=""A TRAITER"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne C --- SEBASTIEN
.Range("C5:C" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
    "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-2])*(Tb_B_User=""SEBASTIEN"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne E --- ANNONCE
.Range("E5:E" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
    "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-4])*(Tb_B_Annonce=""ANNONCE"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne F --- CANDIDATURE SPONTANEE
.Range("F5:F" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
    "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-5])*(Tb_B_Annonce=""CANDIDATURE SPONTANEE"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne H --- A CANDIDATER
.Range("H5:H" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
        "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-7])*(Tb_B_CommentairesPostes=""A CANDIDATER"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne I --- A RELANCER
.Range("I5:I" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
        "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-8])*(Tb_B_CommentairesPostes=""A RELANCER"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne J --- NE PAS CANDIDATER
.Range("J5:J" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
        "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-9])*(Tb_B_CommentairesPostes=""NE PAS CANDIDATER"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne K --- PAS DE RETOUR
.Range("K5:K" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
        "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-10])*(Tb_B_CommentairesPostes=""PAS DE RETOUR"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne L --- REPONSE NEGATIVE
.Range("L5:L" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaArray = _
        "=COUNT(1/FREQUENCY(IF(((Tb_B_Zone=""GRENOBLE"")*(Tb_B_Type=RC[-11])*(Tb_B_CommentairesPostes=""REPONSE NEGATIVE"")),MATCH(Tb_B_Societe,Tb_B_Societe,0)),ROW(INDIRECT(""1:""&ROWS(Tb_B_Societe:Tb_B_Societe)))))"
'Colonne N --- NB RdV
.Range("N5:N" & .Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = _
        "=SUMPRODUCT(('BASE EMPLOI'!R2C5:R5000C5=STATISTIQUES!RC1)*('BASE EMPLOI'!R2C4:R5000C4=""NB RdV"")*('BASE EMPLOI'!R2C46:R5000C46))"

End With
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
25
Affichages
3 K
LordYass
L
J
  • Question Question
Réponses
31
Affichages
3 K
A
  • Question Question
Réponses
6
Affichages
1 K
S
Réponses
0
Affichages
886
Street filou
S
B
Réponses
2
Affichages
2 K
bastienb
B
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…