Dans une colonne B, j'ai diff=E9rents num=E9ros de succursale
apparaissant, et dans une colonne D des montants d'argent..... tout =E7a
sur plus ou moins 5,000 lignes. Apr=E8s 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 =3D .[B65536].End(3).Row
.Range("F2").Formula =3D _
"=3DSUMPRODUCT(($B$2:$B$" & DerA & " =3D$B2)*($D$2:$D$" & DerA &
" ))
Range("F2").Select
Selection.AutoFill Destination:=3DRange("$F$2:$F$" & DerA & ""),
Type:=3DxlFillDefault
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
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" a écrit dans le message de 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
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" <denys.perreault@rbc.com> a écrit dans le message de news:
b8b103f7-c899-4825-98f2-5f9979bc3d8d@r66g2000hsg.googlegroups.com...
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
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" a écrit dans le message de 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
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" a écrit dans le message de 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
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" <denys.perreault@rbc.com> a écrit dans le message de news:
b8b103f7-c899-4825-98f2-5f9979bc3d8d@r66g2000hsg.googlegroups.com...
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
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" a écrit dans le message de 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
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" a écrit dans le message de 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/
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" <denys.perreault@rbc.com> a écrit dans le message de
news:b8b103f7-c899-4825-98f2-5f9979bc3d8d@r66g2000hsg.googlegroups.com...
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/
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" a écrit dans le message de 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
Bonjour Daniel, Michel et Denis,
Merci beaucoup... je regarde tout cela et vous reviens
Bonne journée
Denys
Bonjour Daniel, Michel et Denis,
Merci beaucoup... je regarde tout cela et vous reviens
Merci beaucoup... je regarde tout cela et vous reviens
Bonne journée
Denys
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" a écrit dans le message de news:
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" a écrit dans le message de 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
| 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" <michdenis@hotmail.com> a écrit dans le message de news:
OswmFyDtIHA.1872@TK2MSFTNGP04.phx.gbl...
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" <denys.perreault@rbc.com> a écrit dans le message de news:
b8b103f7-c899-4825-98f2-5f9979bc3d8d@r66g2000hsg.googlegroups.com...
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
| 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" a écrit dans le message de news:
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" a écrit dans le message de 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
MichDenis
Tu peux avoir un tout petit fichier exemple là :
http://cjoint.com/?fmxee5WOzO
"MichDenis" a écrit dans le message de news:
| 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" a écrit dans le message de news:
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" a écrit dans le message de 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
Tu peux avoir un tout petit fichier exemple là :
http://cjoint.com/?fmxee5WOzO
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
eKgwEyFtIHA.1220@TK2MSFTNGP04.phx.gbl...
| 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" <michdenis@hotmail.com> a écrit dans le message de news:
OswmFyDtIHA.1872@TK2MSFTNGP04.phx.gbl...
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" <denys.perreault@rbc.com> a écrit dans le message de news:
b8b103f7-c899-4825-98f2-5f9979bc3d8d@r66g2000hsg.googlegroups.com...
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
| 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" a écrit dans le message de news:
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" a écrit dans le message de 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
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
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....
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
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" a écrit dans le message de news:
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
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" <denys.perreault@rbc.com> a écrit dans le message de news:
4827a922-ca49-4d64-bbd1-8df5b36cbc00@b64g2000hsa.googlegroups.com...
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....
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" a écrit dans le message de news:
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....
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" a écrit dans le message de news:
Encore merci Denis,
Celle-là, je ne l'urais sûrement pas vu...
Passe une bone journée...
Denys
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" <denys.perreault@rbc.com> a écrit dans le message de news:
3537ad37-b392-484b-bcab-2f6557f0cf22@k37g2000hsf.googlegroups.com...
Encore merci Denis,
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 = ""