Avec un un sommeprod, cela risque d'être extrement long a calculer, surtout sur les 445 171 lignes..... tu as parfaitement raison ! mais comme la demandeuse semblait préférer
une solution sans macro... sans macro toujours reste la solution du filtre personnalisé avec extraction des données sur une autre feuille.
-- Misange migrateuse XlWiki : Participez à un travail collaboratif sur excel ! http://xlwiki.free.fr/wiki http://www.excelabo.net
Salut,
Avec un un sommeprod, cela risque d'être extrement long a calculer,
surtout sur les 445 171 lignes.....
tu as parfaitement raison ! mais comme la demandeuse semblait préférer
une solution sans macro... sans macro toujours reste la solution du
filtre personnalisé avec extraction des données sur une autre feuille.
--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net
Avec un un sommeprod, cela risque d'être extrement long a calculer, surtout sur les 445 171 lignes..... tu as parfaitement raison ! mais comme la demandeuse semblait préférer
une solution sans macro... sans macro toujours reste la solution du filtre personnalisé avec extraction des données sur une autre feuille.
-- Misange migrateuse XlWiki : Participez à un travail collaboratif sur excel ! http://xlwiki.free.fr/wiki http://www.excelabo.net
peneloppe
je confirme ....... pour le temps d'execution du sommeprod.
j'avais donc commencé à écrire la macro
je confirme ....... pour le temps d'execution du sommeprod.
je confirme ....... pour le temps d'execution du sommeprod.
j'avais donc commencé à écrire la macro
Michel Samoey
Bonjour, une RECHERCHEV est il plus long ?
Par exemple faire une feuille "numsociete" dans laquelle figure en colonne A la liste trié de tous les numéros appartenant à la société.
Dans la feuille principale en A n°appelant en B n°appelé en C le coût de la com en D1 =SI(ESTERREUR(RECHERCHEV(B1;numsociete!$A$1:$B$5;1;0));0;1) en E1 Ñ*C1 tout en bas de la colonne E : =SOMME(E1:E8)
Le petit +, tous les numéros de la société sont pris en compte même ceux qui n'ont pas appelé. Cordialement Michel
"FdeCourt" a écrit dans le message de news:
Salut,
Avec un un sommeprod, cela risque d'être extrement long a calculer, surtout sur les 445 171 lignes.....
Avec une macro, pour analyser 65535 lignes, dont environ 50% sont des numéros internes, cela m'a pris 1 minute 41 (attention, je me suis basé sur 3 colonne uniquement, la macro écrit dans la colonne C).
En faisant la même chose avec SOMMEPROD "=SOMMEPROD(N(B1=$A$1:$A $65535))", en 1 minute 41, excel a fait le calcul pour 3139 lignes seulement
Option Base 1
Sub test_doublon() Dim donnees Dim resultat() Dim MaCollection As New Collection Dim d As Long, i As Long, Lgn As Long
For i = 1 To Lgn On Error Resume Next MaCollection.Add Item:=donnees(i, 1), key:=donnees(i, 1) Next d = MaCollection.Count + 1 For i = 1 To Lgn On Error Resume Next MaCollection.Add Item:=donnees(i, 2), key:=donnees(i, 2) If Err <> 0 Then resultat(i) = "Interne" Else MaCollection.Remove (d) End If Next
peneloppe a écrit :> D'abord un grand merci pour votre aide
ce que je n'aie pas dit
la taille du fichier : 445 171 lignes et une quinzaine de colonnes je ne peux rien supprimer : a partir du moment ou je dois calculer le cout des appels ; si je supprime des doublons , je supprime également les données associées a cette suppression
Alors ce que je te propose au plus simple et sans macro: Une fois que tu as ajouté ta colonne C, tu fais ton calcul à l'aide de sommeprod (voir sur xlwiki dans la rubrique fonction des explications détaillées sur cette fonction magique et documentée sur un pouillème de ses capacités seulement dans l'aide d'excel.) Tu peux ainsi combiner de multiples critères de sélection de tes données.
Autre solution : tu récupères dans ta colonne C des "OK" ou "interne", tu fais un filtre sur ce terme et tu copies tes données sur une autre feuille sur laquelle tu fais tes calculs. De cette façon ta feuille initiale (après suppression du filtre) n'est pas modifiée, sauf la colonne C que tu peux toujours effacer ensuite.
Sinon encore tu fais ton calcul par macro, en testant pour chaque ligne si elle répond ou non au critère.
Y'a du choix !
-- Misange migrateuse XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki.free.fr/wikihttp://www.excelabo.net
Bonjour,
une RECHERCHEV est il plus long ?
Par exemple faire une feuille "numsociete" dans laquelle figure en colonne A
la liste trié de tous les numéros appartenant à la société.
Dans la feuille principale
en A n°appelant
en B n°appelé
en C le coût de la com
en D1 =SI(ESTERREUR(RECHERCHEV(B1;numsociete!$A$1:$B$5;1;0));0;1)
en E1 Ñ*C1
tout en bas de la colonne E : =SOMME(E1:E8)
Le petit +, tous les numéros de la société sont pris en compte même ceux qui
n'ont pas appelé.
Cordialement
Michel
"FdeCourt" <fdecourt@gmail.com> a écrit dans le message de news:
a4a8355b-3f0b-4217-a338-7b647ef28af0@u10g2000prn.googlegroups.com...
Salut,
Avec un un sommeprod, cela risque d'être extrement long a calculer,
surtout sur les 445 171 lignes.....
Avec une macro, pour analyser 65535 lignes, dont environ 50% sont des
numéros internes, cela m'a pris 1 minute 41 (attention, je me suis
basé sur 3 colonne uniquement, la macro écrit dans la colonne C).
En faisant la même chose avec SOMMEPROD "=SOMMEPROD(N(B1=$A$1:$A
$65535))", en 1 minute 41, excel a fait le calcul pour 3139 lignes
seulement
Option Base 1
Sub test_doublon()
Dim donnees
Dim resultat()
Dim MaCollection As New Collection
Dim d As Long, i As Long, Lgn As Long
For i = 1 To Lgn
On Error Resume Next
MaCollection.Add Item:=donnees(i, 1), key:=donnees(i, 1)
Next
d = MaCollection.Count + 1
For i = 1 To Lgn
On Error Resume Next
MaCollection.Add Item:=donnees(i, 2), key:=donnees(i, 2)
If Err <> 0 Then
resultat(i) = "Interne"
Else
MaCollection.Remove (d)
End If
Next
On 27 mar, 09:55, Misange <misa...@devinez-ou.net> wrote:
peneloppe a écrit :> D'abord un grand merci pour votre aide
ce que je n'aie pas dit
la taille du fichier : 445 171 lignes et une quinzaine de colonnes
je ne peux rien supprimer : a partir du moment ou je dois calculer le
cout des appels ; si je supprime des doublons , je supprime également
les données associées a cette suppression
Alors ce que je te propose au plus simple et sans macro:
Une fois que tu as ajouté ta colonne C, tu fais ton calcul à l'aide de
sommeprod (voir sur xlwiki dans la rubrique fonction des explications
détaillées sur cette fonction magique et documentée sur un pouillème de
ses capacités seulement dans l'aide d'excel.) Tu peux ainsi combiner de
multiples critères de sélection de tes données.
Autre solution : tu récupères dans ta colonne C des "OK" ou "interne",
tu fais un filtre sur ce terme et tu copies tes données sur une autre
feuille sur laquelle tu fais tes calculs.
De cette façon ta feuille initiale (après suppression du filtre) n'est
pas modifiée, sauf la colonne C que tu peux toujours effacer ensuite.
Sinon encore tu fais ton calcul par macro, en testant pour chaque ligne
si elle répond ou non au critère.
Y'a du choix !
--
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel
!http://xlwiki.free.fr/wikihttp://www.excelabo.net
Par exemple faire une feuille "numsociete" dans laquelle figure en colonne A la liste trié de tous les numéros appartenant à la société.
Dans la feuille principale en A n°appelant en B n°appelé en C le coût de la com en D1 =SI(ESTERREUR(RECHERCHEV(B1;numsociete!$A$1:$B$5;1;0));0;1) en E1 Ñ*C1 tout en bas de la colonne E : =SOMME(E1:E8)
Le petit +, tous les numéros de la société sont pris en compte même ceux qui n'ont pas appelé. Cordialement Michel
"FdeCourt" a écrit dans le message de news:
Salut,
Avec un un sommeprod, cela risque d'être extrement long a calculer, surtout sur les 445 171 lignes.....
Avec une macro, pour analyser 65535 lignes, dont environ 50% sont des numéros internes, cela m'a pris 1 minute 41 (attention, je me suis basé sur 3 colonne uniquement, la macro écrit dans la colonne C).
En faisant la même chose avec SOMMEPROD "=SOMMEPROD(N(B1=$A$1:$A $65535))", en 1 minute 41, excel a fait le calcul pour 3139 lignes seulement
Option Base 1
Sub test_doublon() Dim donnees Dim resultat() Dim MaCollection As New Collection Dim d As Long, i As Long, Lgn As Long
For i = 1 To Lgn On Error Resume Next MaCollection.Add Item:=donnees(i, 1), key:=donnees(i, 1) Next d = MaCollection.Count + 1 For i = 1 To Lgn On Error Resume Next MaCollection.Add Item:=donnees(i, 2), key:=donnees(i, 2) If Err <> 0 Then resultat(i) = "Interne" Else MaCollection.Remove (d) End If Next
peneloppe a écrit :> D'abord un grand merci pour votre aide
ce que je n'aie pas dit
la taille du fichier : 445 171 lignes et une quinzaine de colonnes je ne peux rien supprimer : a partir du moment ou je dois calculer le cout des appels ; si je supprime des doublons , je supprime également les données associées a cette suppression
Alors ce que je te propose au plus simple et sans macro: Une fois que tu as ajouté ta colonne C, tu fais ton calcul à l'aide de sommeprod (voir sur xlwiki dans la rubrique fonction des explications détaillées sur cette fonction magique et documentée sur un pouillème de ses capacités seulement dans l'aide d'excel.) Tu peux ainsi combiner de multiples critères de sélection de tes données.
Autre solution : tu récupères dans ta colonne C des "OK" ou "interne", tu fais un filtre sur ce terme et tu copies tes données sur une autre feuille sur laquelle tu fais tes calculs. De cette façon ta feuille initiale (après suppression du filtre) n'est pas modifiée, sauf la colonne C que tu peux toujours effacer ensuite.
Sinon encore tu fais ton calcul par macro, en testant pour chaque ligne si elle répond ou non au critère.
Y'a du choix !
-- Misange migrateuse XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki.free.fr/wikihttp://www.excelabo.net