bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" <garnote3@videotron.ca> a écrit dans le message de news:
uEJtEh66JHA.1424@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
e1wqB456JHA.5524@TK2MSFTNGP05.phx.gbl...
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" <garnote3@videotron.ca> a écrit dans le message de news:
uEJtEh66JHA.1424@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
e1wqB456JHA.5524@TK2MSFTNGP05.phx.gbl...
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à l'aide
de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" a écrit dans le message de news:bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à l'aide
de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
OPU6Un66JHA.1712@TK2MSFTNGP03.phx.gbl...
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" <garnote3@videotron.ca> a écrit dans le message de news:
uEJtEh66JHA.1424@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
e1wqB456JHA.5524@TK2MSFTNGP05.phx.gbl...
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à l'aide
de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" a écrit dans le message de news:bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Salut Fredo,
Celle-ci me semble correct aussi :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijabbWmqo.xls
Serge
"Fredo P." a écrit dans le message de
news:Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à
l'aide de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" a écrit dans le message de news:bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Salut Fredo,
Celle-ci me semble correct aussi :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijabbWmqo.xls
Serge
"Fredo P." <ponsinet.frederic363@orange.fr> a écrit dans le message de
news: u593KKG7JHA.4376@TK2MSFTNGP06.phx.gbl...
Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à
l'aide de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
OPU6Un66JHA.1712@TK2MSFTNGP03.phx.gbl...
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" <garnote3@videotron.ca> a écrit dans le message de news:
uEJtEh66JHA.1424@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
e1wqB456JHA.5524@TK2MSFTNGP05.phx.gbl...
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Salut Fredo,
Celle-ci me semble correct aussi :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijabbWmqo.xls
Serge
"Fredo P." a écrit dans le message de
news:Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à
l'aide de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" a écrit dans le message de news:bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Salut Fredo,
Celle-ci me semble correct aussi :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijabbWmqo.xls
Serge
"Fredo P." a écrit dans le message de
news:Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à
l'aide de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" a écrit dans le message de news:bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Salut Fredo,
Celle-ci me semble correct aussi :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijabbWmqo.xls
Serge
"Fredo P." <ponsinet.frederic363@orange.fr> a écrit dans le message de
news: u593KKG7JHA.4376@TK2MSFTNGP06.phx.gbl...
Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à
l'aide de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
OPU6Un66JHA.1712@TK2MSFTNGP03.phx.gbl...
bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" <garnote3@videotron.ca> a écrit dans le message de news:
uEJtEh66JHA.1424@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" <nospamptck@neuf.fr> a écrit dans le message de news:
e1wqB456JHA.5524@TK2MSFTNGP05.phx.gbl...
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Salut Fredo,
Celle-ci me semble correct aussi :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijabbWmqo.xls
Serge
"Fredo P." a écrit dans le message de
news:Il est parti plus vite que je l'aurrait voulu
La sub est rétrécie et optimisée, j'ai aussi dévelopé le résultat à
l'aide de formules, c'est relativement simple aussi.
http://www.cijoint.fr/cjlink.php?file=cj200906/cijkBynDod.xls
"ptck" a écrit dans le message de news:bonsoir
je voulais savoir si on pouvait optimiser le code
merci
"garnote" a écrit dans le message de news:Bonsoir,
Essaie ces formules et dis-moi si tu obtiens le résultat attendu.
Sur la feuille récap global :
1) Sélectionne B2:P21, entre cette formule
=SOMMEPROD((récap!$A$2:$A$215=$A2)*(récap!B2:B215))
et valide par Ctrl+Entrée.
2) Entre cette formule =SOMME(B2:P2) en Q2 et recopie jusqu'en Q21.
Serge
"ptck" a écrit dans le message de news:
bonsoir
Dans le fichier joint j'ai une macro qui fait le total par nom et
rubrique qui marche
mais elle est un peu longue. Débutant en macro, je pense qu'elle n'est
pas efficace
peut elle être améliorée?
Merci de votre aide
ptck
http://www.cijoint.fr/cjlink.php?file=cj200906/cijJ3Zrdf9.xls
Ave,
Ton n2 convient parfaitement.
Si le coeur t'en dit, pourrais-tu essayer cette macro :
Sub Test()
Application.ScreenUpdating = False
Dim F1 As Worksheet, F2 As Worksheet
Set F1 = Sheets("récap global")
Set F2 = Sheets("récap")
F1.Columns(1).Clear
n = F2.Range("A1").Resize(Cells(1,
1).SpecialCells(xlCellTypeLastCell).Row, 1).Count
F2.Range("a1:a" & n).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:ñ.[a1], Unique:=True
n1 = F1.Range("A2").End(xlDown).Row
n2 = F2.Range("A2").End(xlDown).Row
Set r = F1.Range("B2:P" & n1)
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$" & n2 & "=$A2)*récap!B$2:B$" &
n2 & ")"
r.Value = r.Value
Set t = F1.Range("Q2:Q" & n1)
t.FormulaR1C1 = "=SUM(RC[-15]:RC[-2])"
t.Value = t.Value
Application.ScreenUpdating = True
End Sub
Serge
"Charabeuh" a écrit dans le message de news:Ave à toi aussi,
si on fait,
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$" & n2 & "=$A2)*récap!B$2:B$" &
n2 & ")"
c'est ti qu'ça marcherait ti point ? (je n'ai pas testé)
Pour l'approche:
Je ne vois pas comment cela s'adapte aux données sources (récap)
notamment aux changements de nombres de noms différents;
Mais j'avoue que je n'ai pas creusé 'plus que cela'.
== >>
En vitesse, les SUMPRODUCT sont plus pénalisants si on augmentent le
nombre d'enregistrement et le nombre de noms différents.
J'ai testé avec 10000 enregistrements et 5000 noms max différents. cela
donne environ :
Nbr Noms # 5000 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 208 s
sans sumproduct ==> 26 s
J'ai testé avec 10000 enregistrements et 500 noms max différents. cela
donne environ :
Nbr Noms # 500 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 22 s
sans sumproduct ==> 3 s
J'ai testé avec 10000 enregistrements et 20 noms max différents. cela
donne environ :
Nbr Noms # 20 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 1 s
sans sumproduct ==> 1 s
Bon! Je vais aller en ville un p'tit peu magasiner comme on dit "outre
atlantique.
(outre atlantique vu du côté Européen bien sûr !)
Char Abeuh
"garnote" a écrit dans le message de
news:Ave,
Que pensez-vous de cette approche ?
Sub Test()
Application.ScreenUpdating = False
Dim F1 As Worksheet, F2 As Worksheet
Set F1 = Sheets("récap global")
Set F2 = Sheets("récap")
n1 = F1.Range("A2").End(xlDown).Row
n2 = F2.Range("A2").End(xlDown).Row
Set r = F1.Range("B2:P" & n1)
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$500=$A2)*récap!B$2:B$500)"
r.Value = r.Value
Set t = F1.Range("Q2:Q" & n1)
t.FormulaR1C1 = "=SUM(RC[-15]:RC[-2])"
t.Value = t.Value
Application.ScreenUpdating = True
End Sub
ET
Comment faire pour remplacer le 500 de la ligne :
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$500=$A2)*récap!B$2:B$500)"
par le n2 calculé sur cette ligne :
n2 = F2.Range("A2").End(xlDown).Row
Serge
Ave,
Ton n2 convient parfaitement.
Si le coeur t'en dit, pourrais-tu essayer cette macro :
Sub Test()
Application.ScreenUpdating = False
Dim F1 As Worksheet, F2 As Worksheet
Set F1 = Sheets("récap global")
Set F2 = Sheets("récap")
F1.Columns(1).Clear
n = F2.Range("A1").Resize(Cells(1,
1).SpecialCells(xlCellTypeLastCell).Row, 1).Count
F2.Range("a1:a" & n).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:ñ.[a1], Unique:=True
n1 = F1.Range("A2").End(xlDown).Row
n2 = F2.Range("A2").End(xlDown).Row
Set r = F1.Range("B2:P" & n1)
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$" & n2 & "=$A2)*récap!B$2:B$" &
n2 & ")"
r.Value = r.Value
Set t = F1.Range("Q2:Q" & n1)
t.FormulaR1C1 = "=SUM(RC[-15]:RC[-2])"
t.Value = t.Value
Application.ScreenUpdating = True
End Sub
Serge
"Charabeuh" <charabeuh@orenge.fr> a écrit dans le message de news:
uSVE1jD7JHA.1424@TK2MSFTNGP02.phx.gbl...
Ave à toi aussi,
si on fait,
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$" & n2 & "=$A2)*récap!B$2:B$" &
n2 & ")"
c'est ti qu'ça marcherait ti point ? (je n'ai pas testé)
Pour l'approche:
Je ne vois pas comment cela s'adapte aux données sources (récap)
notamment aux changements de nombres de noms différents;
Mais j'avoue que je n'ai pas creusé 'plus que cela'.
== >>
En vitesse, les SUMPRODUCT sont plus pénalisants si on augmentent le
nombre d'enregistrement et le nombre de noms différents.
J'ai testé avec 10000 enregistrements et 5000 noms max différents. cela
donne environ :
Nbr Noms # 5000 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 208 s
sans sumproduct ==> 26 s
J'ai testé avec 10000 enregistrements et 500 noms max différents. cela
donne environ :
Nbr Noms # 500 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 22 s
sans sumproduct ==> 3 s
J'ai testé avec 10000 enregistrements et 20 noms max différents. cela
donne environ :
Nbr Noms # 20 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 1 s
sans sumproduct ==> 1 s
Bon! Je vais aller en ville un p'tit peu magasiner comme on dit "outre
atlantique.
(outre atlantique vu du côté Européen bien sûr !)
Char Abeuh
"garnote" <garnote3@videotron.ca> a écrit dans le message de
news:ufypu4C7JHA.4404@TK2MSFTNGP04.phx.gbl...
Ave,
Que pensez-vous de cette approche ?
Sub Test()
Application.ScreenUpdating = False
Dim F1 As Worksheet, F2 As Worksheet
Set F1 = Sheets("récap global")
Set F2 = Sheets("récap")
n1 = F1.Range("A2").End(xlDown).Row
n2 = F2.Range("A2").End(xlDown).Row
Set r = F1.Range("B2:P" & n1)
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$500=$A2)*récap!B$2:B$500)"
r.Value = r.Value
Set t = F1.Range("Q2:Q" & n1)
t.FormulaR1C1 = "=SUM(RC[-15]:RC[-2])"
t.Value = t.Value
Application.ScreenUpdating = True
End Sub
ET
Comment faire pour remplacer le 500 de la ligne :
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$500=$A2)*récap!B$2:B$500)"
par le n2 calculé sur cette ligne :
n2 = F2.Range("A2").End(xlDown).Row
Serge
Ave,
Ton n2 convient parfaitement.
Si le coeur t'en dit, pourrais-tu essayer cette macro :
Sub Test()
Application.ScreenUpdating = False
Dim F1 As Worksheet, F2 As Worksheet
Set F1 = Sheets("récap global")
Set F2 = Sheets("récap")
F1.Columns(1).Clear
n = F2.Range("A1").Resize(Cells(1,
1).SpecialCells(xlCellTypeLastCell).Row, 1).Count
F2.Range("a1:a" & n).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:ñ.[a1], Unique:=True
n1 = F1.Range("A2").End(xlDown).Row
n2 = F2.Range("A2").End(xlDown).Row
Set r = F1.Range("B2:P" & n1)
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$" & n2 & "=$A2)*récap!B$2:B$" &
n2 & ")"
r.Value = r.Value
Set t = F1.Range("Q2:Q" & n1)
t.FormulaR1C1 = "=SUM(RC[-15]:RC[-2])"
t.Value = t.Value
Application.ScreenUpdating = True
End Sub
Serge
"Charabeuh" a écrit dans le message de news:Ave à toi aussi,
si on fait,
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$" & n2 & "=$A2)*récap!B$2:B$" &
n2 & ")"
c'est ti qu'ça marcherait ti point ? (je n'ai pas testé)
Pour l'approche:
Je ne vois pas comment cela s'adapte aux données sources (récap)
notamment aux changements de nombres de noms différents;
Mais j'avoue que je n'ai pas creusé 'plus que cela'.
== >>
En vitesse, les SUMPRODUCT sont plus pénalisants si on augmentent le
nombre d'enregistrement et le nombre de noms différents.
J'ai testé avec 10000 enregistrements et 5000 noms max différents. cela
donne environ :
Nbr Noms # 5000 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 208 s
sans sumproduct ==> 26 s
J'ai testé avec 10000 enregistrements et 500 noms max différents. cela
donne environ :
Nbr Noms # 500 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 22 s
sans sumproduct ==> 3 s
J'ai testé avec 10000 enregistrements et 20 noms max différents. cela
donne environ :
Nbr Noms # 20 Nbr Iter. # 1 Nbr Enrgt. # 10000
avec sumproduct ==> 1 s
sans sumproduct ==> 1 s
Bon! Je vais aller en ville un p'tit peu magasiner comme on dit "outre
atlantique.
(outre atlantique vu du côté Européen bien sûr !)
Char Abeuh
"garnote" a écrit dans le message de
news:Ave,
Que pensez-vous de cette approche ?
Sub Test()
Application.ScreenUpdating = False
Dim F1 As Worksheet, F2 As Worksheet
Set F1 = Sheets("récap global")
Set F2 = Sheets("récap")
n1 = F1.Range("A2").End(xlDown).Row
n2 = F2.Range("A2").End(xlDown).Row
Set r = F1.Range("B2:P" & n1)
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$500=$A2)*récap!B$2:B$500)"
r.Value = r.Value
Set t = F1.Range("Q2:Q" & n1)
t.FormulaR1C1 = "=SUM(RC[-15]:RC[-2])"
t.Value = t.Value
Application.ScreenUpdating = True
End Sub
ET
Comment faire pour remplacer le 500 de la ligne :
r.Formula = "=SUMPRODUCT((récap!$A$2:$A$500=$A2)*récap!B$2:B$500)"
par le n2 calculé sur cette ligne :
n2 = F2.Range("A2").End(xlDown).Row
Serge