SUMPRODUCT mais.....

Le
Denys
Bonjour à tous,

Dans une colonne B, j'ai différents numéros de succursale
apparaissant, et dans une colonne D des montants d'argent.. tout ça
sur plus ou moins 5,000 lignes. Après avoir mis en ordre la feuille en
mettant les nos de succursale en ordre croissant, je veux faire un
SUMPRODUCT afin de connaitre le montant recueilli par chaque
succursale. Sauf que si la succursale no 32 apparait 25 fois, je ne
veux pas qu'excel le calcule 25 fois.

Dim DerA As Long
With ActiveSheet
DerA = .[B65536].End(3).Row

.Range("F2").Formula = _
"=SUMPRODUCT(($B$2:$B$" & DerA & " =$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=Range("$F$2:$F$" & DerA & ""),
Type:=xlFillDefault

etc..

Z'auriez une idée

Merci

Denys
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #6602421
Bonjour.
Deux solutions :
1. tableau croisé dynamique
2. filtre avancé avec extraction sans doublon des numéros de succursale et
formulaes SOMMEPROD d'après cette liste.
Cordialement.
Daniel
"Denys"
Bonjour à tous,

Dans une colonne B, j'ai différents numéros de succursale
apparaissant, et dans une colonne D des montants d'argent..... tout ça
sur plus ou moins 5,000 lignes. Après avoir mis en ordre la feuille en
mettant les nos de succursale en ordre croissant, je veux faire un
SUMPRODUCT afin de connaitre le montant recueilli par chaque
succursale. Sauf que si la succursale no 32 apparait 25 fois, je ne
veux pas qu'excel le calcule 25 fois.

Dim DerA As Long
With ActiveSheet
DerA = .[B65536].End(3).Row

.Range("F2").Formula = _
"=SUMPRODUCT(($B$2:$B$" & DerA & " =$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=Range("$F$2:$F$" & DerA & ""),
Type:=xlFillDefault

etc.....

Z'auriez une idée

Merci

Denys
MichDenis
Le #6602411
En adaptant les plages au besoin


Sub test()

Dim Rg As Range, Rg1 As Range
'Rg1 Plage à additionner si le critère est exact
With Feuil1
Set Rg = .Range("A2:A" & .[B65536].End(3).Row)
Set Rg1 = .Range("B2" & .[B65536].End(3).Row) 'à adapter au besoin
.Range("F2" & .[B65536].End(3).Row).Formula = _
"=if(countif(" & Rg.Address & "," & _
Rg(1).Address(0, 1) & ")>1,Sumproduct(((A2:A4)=" & _
Rg(1).Address(0, 0) & ")*" & Rg1.Address & "),"""")"
End With

End Sub






"Denys"
Bonjour à tous,

Dans une colonne B, j'ai différents numéros de succursale
apparaissant, et dans une colonne D des montants d'argent..... tout ça
sur plus ou moins 5,000 lignes. Après avoir mis en ordre la feuille en
mettant les nos de succursale en ordre croissant, je veux faire un
SUMPRODUCT afin de connaitre le montant recueilli par chaque
succursale. Sauf que si la succursale no 32 apparait 25 fois, je ne
veux pas qu'excel le calcule 25 fois.

Dim DerA As Long
With ActiveSheet
DerA = .[B65536].End(3).Row

.Range("F2").Formula = _
"=SUMPRODUCT(($B$2:$B$" & DerA & " =$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=Range("$F$2:$F$" & DerA & ""),
Type:=xlFillDefault

etc.....

Z'auriez une idée

Merci

Denys
Michel Angelosanto
Le #6602391
Je n'ai peut être pas bien compris la question mais si tu ne veux qu'une
occurrence de succursale, il vaut mieux utiliser recherchev après avoir
ajouté une colonne à gauche dans tes données avec une concaténation des
valeurs (colonnes) servant de critères de sélection.(si plusieurs).

"Denys" news:
Bonjour à tous,

Dans une colonne B, j'ai différents numéros de succursale
apparaissant, et dans une colonne D des montants d'argent..... tout ça
sur plus ou moins 5,000 lignes. Après avoir mis en ordre la feuille en
mettant les nos de succursale en ordre croissant, je veux faire un
SUMPRODUCT afin de connaitre le montant recueilli par chaque
succursale. Sauf que si la succursale no 32 apparait 25 fois, je ne
veux pas qu'excel le calcule 25 fois.

Dim DerA As Long
With ActiveSheet
DerA = .[B65536].End(3).Row

.Range("F2").Formula = _
"=SUMPRODUCT(($B$2:$B$" & DerA & " =$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=Range("$F$2:$F$" & DerA & ""),
Type:=xlFillDefault

etc.....

Z'auriez une idée

Merci

Denys

--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/
Denys
Le #6602381
Bonjour Daniel, Michel et Denis,

Merci beaucoup... je regarde tout cela et vous reviens

Bonne journée

Denys
MichDenis
Le #6603461
| Sauf que si la succursale no 32 apparait 25 fois

J'ai interprété ce bout de phrase au pied de la lettre ... ;-)))

Pour n'avoir que la somme qu'une fois pour chacun des items
essaie ce qui suit... il se peut que tu aies à adapter les plages
de cellules selon ton application...

'----------------------------
Sub test()

Dim Rg As Range, Rg1 As Range
'Rg1 Plage à additionner si le critère est exact
With Feuil1
Set Rg = .Range("A2:A" & .[B65536].End(3).Row)
Set Rg1 = .Range("B2:B" & .[B65536].End(3).Row) 'à adapter au besoin
With .Range("A1:A" & .[B65536].End(3).Row)
.AdvancedFilter xlFilterInPlace, , , True
End With
With .Range(.Range("_FilterDataBase").Offset(1, 5). _
Resize(Rg.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Address(0, 0))
.Formula = _
"=Sumproduct((" & Rg.Address & "=" & _
Rg(1).Address(0, 0) & ")*" & Rg1.Address & ")"
End With
.ShowAllData
End With
End Sub
'----------------------------




"MichDenis"
En adaptant les plages au besoin


Sub test()

Dim Rg As Range, Rg1 As Range
'Rg1 Plage à additionner si le critère est exact
With Feuil1
Set Rg = .Range("A2:A" & .[B65536].End(3).Row)
Set Rg1 = .Range("B2" & .[B65536].End(3).Row) 'à adapter au besoin
.Range("F2" & .[B65536].End(3).Row).Formula = _
"=if(countif(" & Rg.Address & "," & _
Rg(1).Address(0, 1) & ")>1,Sumproduct(((A2:A4)=" & _
Rg(1).Address(0, 0) & ")*" & Rg1.Address & "),"""")"
End With

End Sub






"Denys"
Bonjour à tous,

Dans une colonne B, j'ai différents numéros de succursale
apparaissant, et dans une colonne D des montants d'argent..... tout ça
sur plus ou moins 5,000 lignes. Après avoir mis en ordre la feuille en
mettant les nos de succursale en ordre croissant, je veux faire un
SUMPRODUCT afin de connaitre le montant recueilli par chaque
succursale. Sauf que si la succursale no 32 apparait 25 fois, je ne
veux pas qu'excel le calcule 25 fois.

Dim DerA As Long
With ActiveSheet
DerA = .[B65536].End(3).Row

.Range("F2").Formula = _
"=SUMPRODUCT(($B$2:$B$" & DerA & " =$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=Range("$F$2:$F$" & DerA & ""),
Type:=xlFillDefault

etc.....

Z'auriez une idée

Merci

Denys
MichDenis
Le #6604701
Tu peux avoir un tout petit fichier exemple là :

http://cjoint.com/?fmxee5WOzO



"MichDenis"
| Sauf que si la succursale no 32 apparait 25 fois

J'ai interprété ce bout de phrase au pied de la lettre ... ;-)))

Pour n'avoir que la somme qu'une fois pour chacun des items
essaie ce qui suit... il se peut que tu aies à adapter les plages
de cellules selon ton application...

'----------------------------
Sub test()

Dim Rg As Range, Rg1 As Range
'Rg1 Plage à additionner si le critère est exact
With Feuil1
Set Rg = .Range("A2:A" & .[B65536].End(3).Row)
Set Rg1 = .Range("B2:B" & .[B65536].End(3).Row) 'à adapter au besoin
With .Range("A1:A" & .[B65536].End(3).Row)
.AdvancedFilter xlFilterInPlace, , , True
End With
With .Range(.Range("_FilterDataBase").Offset(1, 5). _
Resize(Rg.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Address(0, 0))
.Formula = _
"=Sumproduct((" & Rg.Address & "=" & _
Rg(1).Address(0, 0) & ")*" & Rg1.Address & ")"
End With
.ShowAllData
End With
End Sub
'----------------------------




"MichDenis"
En adaptant les plages au besoin


Sub test()

Dim Rg As Range, Rg1 As Range
'Rg1 Plage à additionner si le critère est exact
With Feuil1
Set Rg = .Range("A2:A" & .[B65536].End(3).Row)
Set Rg1 = .Range("B2" & .[B65536].End(3).Row) 'à adapter au besoin
.Range("F2" & .[B65536].End(3).Row).Formula = _
"=if(countif(" & Rg.Address & "," & _
Rg(1).Address(0, 1) & ")>1,Sumproduct(((A2:A4)=" & _
Rg(1).Address(0, 0) & ")*" & Rg1.Address & "),"""")"
End With

End Sub






"Denys"
Bonjour à tous,

Dans une colonne B, j'ai différents numéros de succursale
apparaissant, et dans une colonne D des montants d'argent..... tout ça
sur plus ou moins 5,000 lignes. Après avoir mis en ordre la feuille en
mettant les nos de succursale en ordre croissant, je veux faire un
SUMPRODUCT afin de connaitre le montant recueilli par chaque
succursale. Sauf que si la succursale no 32 apparait 25 fois, je ne
veux pas qu'excel le calcule 25 fois.

Dim DerA As Long
With ActiveSheet
DerA = .[B65536].End(3).Row

.Range("F2").Formula = _
"=SUMPRODUCT(($B$2:$B$" & DerA & " =$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=Range("$F$2:$F$" & DerA & ""),
Type:=xlFillDefault

etc.....

Z'auriez une idée

Merci

Denys
Denys
Le #6605531
Bonsoir Denis,

Quelle bonne idée j'ai eu de revenir voir....Pour une fois, tu me
proposais une solution qui ne fonctionnait pas. Comme ce n'était pas
du tout normal, je suis revenu.. Là, tout est parfait..... avec le
document ci-joint que tu m'as fourni....

Merci infiniment et à la prochaine

Denys
MichDenis
Le #6605551
Je t'invite à apporter cette correction au code :

Remplace dans la longue ligne de code
Resize(Rg.Rows.Count -1)

Par

Resize(Rg.Rows.Count)

La première ligne de données a déjà été enlevé puisqu'en
définissant la variable Rg, on est parti de la ligne 2

Sans la correction, il te manquera une formule si la dernière ligne
de ton tableau en colonne A est un nouveau numéro unique par exemple...

Ce qu'un second regard peut faire comme effet sur une sub ....;-))



"Denys"
Bonsoir Denis,

Quelle bonne idée j'ai eu de revenir voir....Pour une fois, tu me
proposais une solution qui ne fonctionnait pas. Comme ce n'était pas
du tout normal, je suis revenu.. Là, tout est parfait..... avec le
document ci-joint que tu m'as fourni....

Merci infiniment et à la prochaine

Denys
Denys
Le #6607151
Encore merci Denis,

Celle-là, je ne l'urais sûrement pas vu...

Passe une bone journée...

Denys
MichDenis
Le #6607531
Une dernière petite chose, au cas où ...
si dans ta colonne A, il y a des lignes vides dans ton tableau et
si tu veux éviter d'avoir une formule pour la ligne de la première occurrence
de la première ligne vide, tu dois ajouter ces 2 lignes de code juste avant
la ligne de code : .ShowAllData

On Error Resume Next
Rg.SpecialCells(xlCellTypeBlanks).Offset(, 5).Value = ""




"Denys"
Encore merci Denis,

Celle-là, je ne l'urais sûrement pas vu...

Passe une bone journée...

Denys
Publicité
Poster une réponse
Anonyme