Comment accélérer l'exécution de ce code

Bonjour

est il possible d'accélérer le code suivant qui me semble un peu long? env 4 secondes

Merci pour votre aide

Sub Melanger()
    Dim wsData As Worksheet
    Dim wsJEU As Worksheet
    Dim rng As Range
    Dim arr As Variant
    Dim i As Integer
    Application.ScreenUpdating = False
    ' Définir les feuilles de calcul
    Set wsData = ThisWorkbook.Sheets("Data")
    Set wsJEU = ThisWorkbook.Sheets("JEU")

    ' Définir la plage à mélanger
    Set rng = wsData.Range("A1:A12")
    ' Mettre les valeurs dans un tableau
    arr = Application.Transpose(rng.Value)
    ' Mélanger le tableau
    Call ShuffleArray(arr)
    ' Placer les résultats dans la feuille JEU
    wsJEU.Range("A4").Value = arr(1)
    wsJEU.Range("A8").Value = arr(2)
    wsJEU.Range("A12").Value = arr(3)

     Set wsData = ThisWorkbook.Sheets("Data")  'code pour colonne B
    Set wsJEU = ThisWorkbook.Sheets("JEU")
    Set rng = wsData.Range("b1:b12")
    Call ShuffleArray(arr)
    wsJEU.Range("B4").Value = arr(1)
    wsJEU.Range("B8").Value = arr(2)
    wsJEU.Range("B12").Value = arr(3)

      Set wsData = ThisWorkbook.Sheets("Data")  'code pour colonne C
    Set wsJEU = ThisWorkbook.Sheets("JEU")
    Set rng = wsData.Range("C1:C12")
    Call ShuffleArray(arr)
    wsJEU.Range("C4").Value = arr(1)
    wsJEU.Range("C8").Value = arr(2)
    wsJEU.Range("C12").Value = arr(3)
    Application.ScreenUpdating = True
End Sub

Sub ShuffleArray(arr As Variant)
    Dim i As Long
    Dim j As Long
    Dim temp As Variant

    Randomize ' Initialiser le générateur de nombres aléatoires

    For i = UBound(arr) To LBound(arr) Step -1
        j = Int((i - LBound(arr) + 1) * Rnd + LBound(arr))
        ' Échanger les éléments
        temp = arr(i)
        arr(i) = arr(j)
        arr(j) = temp
    Next i
End Sub

Bonsoir,

En colonne B et C vous travaillez avec le Rng et non plus le arr... Est-ce une piste ?

@ bientôt

LouReeD

Hello,

chez moi c'est instantané

Merci pour vos réponses

Il faut dire que les cellules A4;A8;A12 . B4;B8;B12 . C4;C8;C12 appellent des images

peut etre que la perte de temps provient de là?

Bonsoir,

avez-vous ceci ?
µc'est une autre façon de voir, et c'est waard qui l'explique dans une de ses master classe ici sur le site.
Je suis en train de faire une machine à 5 roues, cela prend du retard mais la technique est bonne vu qu'il n'y a plus de téléchargement d'image...
fichier en cours d'étude :

@ bientôt

LouReeD

Bonjour LouReeD

Bien comme fichier mais hard comme codification

Crdlt

Pas tant que ça, une fois qu'on a compris le principe du décalage de l'image dans le rognage.
Et je me sert d'Excel pour créer l'image total, en insérant les différents éléments dans une feuille dont les cellules ont le format voulue pour créer la "croissance" de l'icône au mesure de sa rotation :

9feuille.zip (495.42 Ko)

Une fois cela fait je sélectionne la roue (les cellules qui la composent) puis je copie colle dans un logiciel de dessin afin de sauvegarder en Png ou bien en Jpg.

Bon le fichier fourni comporte également la partie recherche de ligne multiple de gain 243 en l'occurrence, mais cela c'est en plus.
l'idée est également de prendre des roues "physiques", c'est à dire des roues avec des images dessus dans un ordre définit et cet ordre reste, l'affichage n'est pas le résultat d'aléatoire, mais le résultat d'une rotation de ces roues qui elle est aléatoire.

J'avoue mettre arrêté, du fait que je suis partie sur une machine avec 3125 ligne gagnantes !
mais avec un jeu bonus où s'il est joué, alors une deuxième chance est là : les fruits se transforme en cerise et le code regarde de nouveau s'il y a des lignes gagnantes...

@ bientôt

LouReeD

Rechercher des sujets similaires à "comment accelerer execution code"