Comment accélérer une boucle ?

nak

XLDnaute Occasionnel
Bonjour le forum,

J'avais déjà demandé de l'aide pour importer un grand nombre de données le plus rapidement possible. Le poste avez eu un énorme succès. J'espère qu'il en sera de même aujourd'hui. ;)

Je veux réaliser un truc tout simple. Pour chaque cellule de ma colonne "A", je veux compter le nombre de fois que la valeur apparait dans la colonne.
Je suis parti sur un code avec deux boucles. Je compare A1 avec A2:Ax et j'incrémente B1, en suite je passe en A2 pour faire la même chose, A3 etc...
Malheureusement ces deux boucles sont trop longues à s'exécuter (76000 secondes sur mon processeur i7 :p ).

Voici le détail :
VB:
Sub compter()
Application.ScreenUpdating = False
Sheets("Feuil1").Columns("B:B").ClearContents
x = Timer
'Compter les cellules identiques
ligne = Sheets("Feuil1").Range("A1000000").End(xlUp).Row
    NbCodes = 0
    For i = 1 To ligne
    doc = Sheets("Feuil1").Cells(i, 1).Value
        For j = 2 To ligne
            If Sheets("Feuil1").Cells(j, 1).Value = doc Then NbCodes = NbCodes + 1
        Next j
    Sheets("Feuil1").Cells(i, 2).Value = NbCodes
    NbCodes = 0
    Next i
Application.ScreenUpdating = True
MsgBox x
End Sub

Avez vous une solution plus rapide pour le même résultat ?

Je vous joins le petit fichier.

Merci

A+
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Comment accélérer une boucle ?

Bonsoir à tous,

Juste pour le fun, j'ai essayé de réduire le temps de traitement par formules injectées dans la feuille "Feuil1" à partir d'un code VBA (donc forcément sans utiliser l'objet dictionary qui est bien sûr la méthode la plus rapide).

La méthode la plus rapide que j'ai trouvée pour l'instant est l'utilisation de la fonction Frequence sur une plage en tant que matricielle suivie de fonctions Recherchev.

Sur ma vieille bécane (sentimental, j'y tiens!) cela donne: Comptage-v01.jpg

rem: @ Lone-wolf. Dans ton code il y a la ligne For i = 1 To 7, pourquoi le 7 ?
 

Pièces jointes

  • Comtage cellule formules via VBA v1.xlsm
    25.1 KB · Affichages: 45
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 534
dernier inscrit
Kalamymustapha