L
Lucko
Guest
J'aurais besoin de vos connaissances pour deux autres macros.
Maintenant, j'aimerais savoir si on peut augmenter la vitesse d'un code sans l'utilisation de l'Application.ScreenUpdating = false. J'ai trouvé ce code ici-même et j'aimerais améliorer sa vitesse d'exécution.
Private Sub Tirage()
Dim i&, j&, n&, t, p(), v(), Cel As Range
Randomize
p = Array(Array("j2:s8", "j10:s10"))
For j = 0 To UBound(p)
For Each Cel In Range(p(j)(0))
If Not IsEmpty(Cel) Then n = n + 1: ReDim Preserve v(1 To n): v(n) = Cel.Value
Next
For i = n To 2 Step -1
t = v(1): v(1) = v(1 + Int(n * Rnd)): v(1 + Int(n * Rnd(0))) = t
Next
ReDim Preserve v(1 To 10)
Range(p(j)(1)).Offset = v
Erase v
n = 0
Next
End Sub
Finalement, je me suis rabattu sur ce macro pour archiver et déplacer les lignes du haut vers le bas et ligne par ligne. Lorsque j'ai archivé une ligne, j'aimerais que l'on ne puisse plus l'archiver de nouveau que ce soit par inadvertance ou oublie. Autrement dit, si j'ai déjà archivé une série de numéros ( 20 au total sur une seule ligne) je ne peux plus le refaire avant la nouvelle série de numéros identifiée par une date.
Sub Archiver()
Application.ScreenUpdating = False
Range("e17:x1000").Copy
Range("e18:x1000").PasteSpecial xlValues
[E17:X17].ClearContents
Range("E14:X14").Copy
Range("e17").PasteSpecial xlValues
Range("p12").Copy
Range("z17").PasteSpecial xlValues
Range("U10").Select
End Sub
Une grand merci pour vos efforts de recherche. Cela m'est très instructif.
Maintenant, j'aimerais savoir si on peut augmenter la vitesse d'un code sans l'utilisation de l'Application.ScreenUpdating = false. J'ai trouvé ce code ici-même et j'aimerais améliorer sa vitesse d'exécution.
Private Sub Tirage()
Dim i&, j&, n&, t, p(), v(), Cel As Range
Randomize
p = Array(Array("j2:s8", "j10:s10"))
For j = 0 To UBound(p)
For Each Cel In Range(p(j)(0))
If Not IsEmpty(Cel) Then n = n + 1: ReDim Preserve v(1 To n): v(n) = Cel.Value
Next
For i = n To 2 Step -1
t = v(1): v(1) = v(1 + Int(n * Rnd)): v(1 + Int(n * Rnd(0))) = t
Next
ReDim Preserve v(1 To 10)
Range(p(j)(1)).Offset = v
Erase v
n = 0
Next
End Sub
Finalement, je me suis rabattu sur ce macro pour archiver et déplacer les lignes du haut vers le bas et ligne par ligne. Lorsque j'ai archivé une ligne, j'aimerais que l'on ne puisse plus l'archiver de nouveau que ce soit par inadvertance ou oublie. Autrement dit, si j'ai déjà archivé une série de numéros ( 20 au total sur une seule ligne) je ne peux plus le refaire avant la nouvelle série de numéros identifiée par une date.
Sub Archiver()
Application.ScreenUpdating = False
Range("e17:x1000").Copy
Range("e18:x1000").PasteSpecial xlValues
[E17:X17].ClearContents
Range("E14:X14").Copy
Range("e17").PasteSpecial xlValues
Range("p12").Copy
Range("z17").PasteSpecial xlValues
Range("U10").Select
End Sub
Une grand merci pour vos efforts de recherche. Cela m'est très instructif.