|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 224 ![]() |
Bonjour le forum,
J'ai une feuille d'environ 4000 lignes et 50 colonnes (Bom Sans Doublons). Pour faire simple, j'aurais besoin d'écrire la formule suivante en G2 de ma feuille sans doublons: Code :
=SOMME.SI('BOM'!$A$2:$A$7446;'Bom Sans Doublons'!$A2;'BOM'!G$2:G$7446) Comme vous pouvez l'imaginer, si je le fais manuellement, Excel plante sous la quantité de calculs. J'ai essayé de passer par une variable tableau en adaptant le code que j'ai trouvé dans le tuto de Silkyroad (je fais l'essai sur une seule colonne). Code :
Est-ce que vous auriez une idée, ou une manière plus simple de faire? |
||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Mets : Code :
Set rngReBom = WsReBom.Range("A2:A" & LigFinReBom) Code :
Set rngReBom = WsReBom.Range("A1:A" & LigFinReBom)
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
De plus, tu dois pouvoir simplifier le code (non testé, toutefois) :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() Inscription : octobre 2006 Messages : 541 ![]() |
Bonjour à tous
Une variante (avec création de la liste des uniqies) sous forme de maquette à adapter le code: Code :
__________________
Michel_M |
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 224 ![]() |
Bonjour à tous,
Merci pour vos réponses. Bon, je ne suis pas encore à l'aise avec les variables tableaux, ni avec Transpose (évidemment... ), mais j'ai testé tes suggestions Daniel.La première ne change rien. J'ai toujours un écart sur sur 1700 lignes que je ne m'explique pas. A la ligne 8 par exemple, le code me donne un total de 182 alors que je devrais trouver 3... même en contrôlant visuellement, je ne vois pas. La deuxième suggestion donne le même résultat (celui de la première ligne) sur toute les lignes. Je vais essayer de comprendre pour vois ce qui ne va pas. Je vais également tâcher de tester la suggestion de Michel. |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Regarde l'aide sur la fonction SOMME.SI en cas de plages de longueurs inégales.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : octobre 2008 Messages : 224 ![]() |
Argh, je ne sais pas lire non plus. J'avais mal lu ta suggestion. La macro fonctionne maintenant (et les plages sont bien de longueur égale).
Le code s'effectue maintenant en 12/13 minutes, ce qui n'est déjà pas si mal... par contre, j'aimerais bien comprendre comment tu te sers de transpose. |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Transpose fonctionne comme la fonction Excel. Quand tu envoies une colonne dans un tableau comme tu l'as fait au début, tu récupères un tableau bi-dimensionnel (une dimension pour la ligne et une pour la colonne), d'où l'obligation de faire une double boucle. En utilisant Transpose, tu ne récupères qu'un tableau simple chaque entrée du tableau correspond à une cellule de la colonne.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com