Bonjour,
J'ai un XLSX de 975473 lignes répertoriant les tarifs à date d'une BDD articles.
Pour chaque article, je cherche à identifier le tarif en application : c-à-d, dont la date d'effet est la plus récente.
Exemple
Date effet | Code article | Statut |
11/06/2020 11/06/2023 11/05/2022 | 123456 789012 123456 | NOK OK OK |
Après avoir trié les dates du plus ancien au plus récent, je cherche à établir le numéro position de chaque occurrence article.
Ainsi, je serai en mesure d'établir le tarif en application.
Date effet | Code article | Position |
11/06/2020 11/05/2022 11/06/2023 | 123456 123456 789012 | 1 (NOK, car position non max) 2 (OK, car position max) 1 (OK, car position max) |
Je connais la formule Excel : NB.SI($B$2:$B2;$B2).
J'ai développé une macro qui fonctionne correctement :
Sub Macro()
Dim Wbk As Workbook
Dim Tar As Worksheet
Dim Rge As Range
Dim LRo, RowID As Long
Set Wbk = Application.ThisWorkbook
Set Tar = Wbk.Sheets("ATARPAP1")
LRo = Tar.Cells(1, 1).End(xlDown).Row
For Index = 2 To LRo
Tar.Activate
Set Rge = Tar.Range(Cells(Index, 3), Cells(Index, 3))
With Rge.Select
RowID = WorksheetFunction.CountIf(Range(Cells(2, 2), Cells(Index, 2)), Cells(Index, 2))
Rge.Value = RowID
End With
Next
MsgBox "Fin"
End Sub
Mais au vu du nombre de lignes, les calculs sont très longs.
Une idée pour optimiser les calculs ? Voire une autre solution pour répondre au besoin ?
Merci par avance,
ATB