Créer une macro plus rapide compte tenu du nombre de lignes qui sera trés important

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
J'ai créer une macro qui consiste à calculer le nombre de fois que le cheval est arrivé ( exemple Larno 6 fois ) de la feuille 1 vers la feuille 3 !
Il n'y a pas de doublon et le résultat est trier colonne B de la feuille 3 !
La solution serait d'utiliser :
CreateObject("scripting.dictionary")
UBound
Que je ne maitrise malheureusement pas ( je suis de la veille école ) et que certain d'entre vous maitrise !
Merci à l'avance et bonne journée !
 

Pièces jointes

  • essai_temps.xls
    290.5 KB · Affichages: 15

job75

XLDnaute Barbatruc
Bonjour JBARBE, tatiak,

Comme suggéré voici une solution classique avec le Dictionary dans le fichier joint :
VB:
Sub MAJ()
Dim tablo, resu(), d As Object, i&, x$, n&, p&
tablo = Feuil1.[A2].CurrentRegion.Resize(, 6) 'matrice, plus rapide, à adapter
ReDim resu(1 To UBound(tablo), 1 To 3)
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(tablo)
    x = tablo(i, 1)
    If Not d.exists(x) Then
        n = n + 1
        d(x) = n 'mémorise le numéro
        resu(n, 1) = x
    End If
    p = d(x)
    resu(p, 2) = resu(p, 2) + 1
    resu(p, 3) = resu(p, 3) - (tablo(i, 6) = 1)
Next
'---restitution---
Application.ScreenUpdating = False
With Feuil3 'à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A1] 'à adapter
        .Cells(2).Resize(.Parent.Rows.Count - .Row, 3).Delete xlUp 'RAZ
        If n Then .Cells(2).Resize(n, 3) = resu
        .Resize(n + 1, 3).Sort .Cells(1, 2), xlDescending, .Cells(1, 3), , xlDescending, .Cells(1), xlAscending, Header:=xlYes 'tri
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
Utilisant des tableaux VBA elle est très rapide, mais il sera intéressant de comparer les temps avec la requête SQL.

Nota : il y a un caractère de tabulation CAR(9) devant le nom Cressida, il vaut mieux le supprimer.

A+
 

Pièces jointes

  • essai_temps(1).xls
    183.5 KB · Affichages: 19

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 115
Membres
103 477
dernier inscrit
emerica