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:
et de l'étirer sur 50 colonnes et 4000 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =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).
La macro ne plante pas, mais j'ai comparé les résultats que me donne ce code avec ceux que me donne la fonction SOMME.SI sur une colonne, et j'ai des différences pour 1700 lignes sur 4000, et je ne sais pas pourquoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Set wksBomSansDoublons = Worksheets("Bom Sans Doublons") Set WsReBom = Worksheets("Bom") LigFinBomSansDoublons = wksBomSansDoublons.[A65536].End(xlUp).Row LigFinReBom = WsReBom.[A65536].End(xlUp).Row Set rngReBom = WsReBom.Range("A1:A" & LigFinReBom) Dim Montab As Variant, cmpt1 As Long, cmpt2 As Long With wksBomSansDoublons Montab = .Range("G2:G" & LigFinBomSansDoublons).Value For cmpt1 = LBound(Montab, 1) To UBound(Montab, 1) For cmpt2 = LBound(Montab, 2) To UBound(Montab, 2) Montab(cmpt1, cmpt2) = WorksheetFunction.SumIf(rngReBom, .Cells(cmpt1, 1), WsReBom.Range("G2:G" & LigFinReBom)) Next cmpt2 Next cmpt1 .Range("G2:G" & LigFinBomSansDoublons).Value = Montab End With
Est-ce que vous auriez une idée, ou une manière plus simple de faire?
Partager