COUNTIF - optimisation du code
Bonjour,
Je cherche à savoir si mon code disponible ci-dessous peut être optimisé. Certes, je traite environ 40 000 lignes mais cela demande plus de 5 min de traitement sur mon PC qui ne me semble pas si mauvais. Je me dis du coup qu'il doit y avoir une meilleure syntaxe, plus efficace (voire plus propre).
Pour info, le tableau se décompose de la manière suivante:
Colonne C |
Colonne G |
Colonne K |
Colonne V |
numéro de commande |
numéro de document |
code de validation du document |
résultat de la formule |
Commande_1 |
doc_123 |
3 |
33,3% |
Commande_1 |
doc_124 |
2 |
33,3% |
Commande_1 |
doc_125 |
2 |
33,3% |
Commande_2 |
doc_126 |
3 |
100% |
L'idée est d'obtenir en colonne V le pourcentage de documents traités par commande (si traité alors code 3 dans la colonne K).
Je me suis dit qu'il fallait diviser le nombre de références par commande en code 3 PAR le nombre de références totale par commande.
Je suis même allé jusqu'à me dire qu'il fallait juste diviser le nombre d'occurences d'une commande en code 3 par le nombre total d'occurences de cette même commande (plus besoin d'utiliser le numéro de document).
Voici le code qui en découle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Sub Test_countif()
Application.ScreenUpdating = False
Dim i As Long
With Sheets("EntireList")
i = .UsedRange.Rows.Count
Range("V2:V" & i).Formula = "=COUNTIFS(C:C,C2,K:K,""3"")/COUNTIF(C:C,C2)"
End With
With Sheets("EntireList").Range("V:V")
.Value = .Value
End With
ActiveSheet.Range("V:V").NumberFormat = "0.00%"
Application.ScreenUpdating = True
End Sub |
Il fonctionne bien mais je me dis que cela peut être plus concis, plus efficace.
J'ai vu que certains utilisent l' Application.CountIf mais je n'arrive pas à savoir si une façon de faire est bien mieux conseillée que les autres.
Merci de votre attention.
Camzo