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

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa