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

  • Initiateur de la discussion Initiateur de la discussion JBARBE
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour