XL 2016 [RESOLU] Remplacer SommeProd par VBA

roybaf

XLDnaute Occasionnel
Bonsoir à tous,
Meilleurs vœux pour cette nouvelle année!!

Je joint un fichier pour le post suivant.

Ce que je voudrais c'est remplacer une sommeprod écrite en VBA par un code si possible, car la formule fait ramer ma procédure.

J'ai un tableau qui peux contenir jusqu'à 300 000 lignes et j'ai besoins de savoirs si dans la colonne A si commence par 6 ou 7 alors voir si j'ai un doublon en colonne ...

Ci joint ma formule :

Code:
=SI(SOMMEPROD((OU(GAUCHE(BD!$E$1:$E$20681)="6";GAUCHE(BD!$E$1:$E$20681)="7")*(BD!$Y$1:$Y$20681=Y2)))>=2;"Doublon";"")

Ci joint mon code qui permet de l'incrémenter (et qui fait ramer ma procédure)

Code:
Sub traitement_des_données()
Dim LstRow&
LstRow = Sheets("BD").Cells(Rows.Count, 1).End(xlUp).Row
    Sheets("BD").Activate
    Range("z2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(SUMPRODUCT((OR(LEFT(BD!R1C5:R" & LstRow & "C5)=""6"",LEFT(BD!R1C5:R" & LstRow & "C5)=""7"")*(BD!R1C25:R" & LstRow & "C25=RC[-1])))>=2,""Doublon"","""")"
    Range("z2").Select
    Selection.AutoFill Destination:=Range("z2:z" & LstRow)
End Sub

Vous verrez sur le fichier que la formule et la macro fonctionne mais je pense que l'on peut faire plus rapide...

Merci d'avance pour votre aide.
 

Pièces jointes

  • Test excel .xlsm
    2.6 MB · Affichages: 76

Dranreb

XLDnaute Barbatruc
Bonsoir.
VB:
Sub traitement_des_données()
Dim F As Worksheet, LMax&, TCE(), TCY(), L&, D As New Dictionary
Set F = Sheets("BD")
LMax = F.Cells(Rows.Count, 1).End(xlUp).Row - 1
TCE = F.[E2].Resize(LMax).Value
TCY = F.[Y2].Resize(LMax).Value
For L = 1 To UBound(TCY)
   D(TCY(L, 1)) = D(TCY(L, 1)) - (Left$(TCE(L, 1), 1) = "6" Or Left$(TCE(L, 1), 1) = "7")
   Next L
For L = 1 To UBound(TCY)
   If D(TCY(L, 1)) > 1 Then TCY(L, 1) = "Doublon" Else TCY(L, 1) = Empty
   Next L
F.[Z2].Resize(LMax).Value = TCY
End Sub
Cochez la référence Microsoft Scripting Runtime pour que le type Dictionay soit défini par la scrrun.dll
 

Discussions similaires

Réponses
12
Affichages
245
Réponses
14
Affichages
643

Statistiques des forums

Discussions
312 178
Messages
2 085 980
Membres
103 079
dernier inscrit
sle