XL 2013 Amélioration d'un code Excel

  • Initiateur de la discussion Lucko
  • Date de début
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.
 
L

Lucko

Guest
Re : Amélioration d'un code Excel

Hieu,

Tel que demandé. Ci-joint le fichier qui me sert à expérimenter les codes en question.

A+
 

Pièces jointes

  • K2016.xlsm
    157.7 KB · Affichages: 26
  • K2016.xlsm
    157.7 KB · Affichages: 25

Hieu

XLDnaute Impliqué
Re : Amélioration d'un code Excel

Yop,

Ceci t'évitera d'archiver en double :

Code:
Sub Archiver()
Application.ScreenUpdating = False
If Range("z17") <> Range("p12") Then
    Range("e17:x1000").Copy
    Range("e18").PasteSpecial xlValues
    Range("e17:x17").ClearContents
    
    Range("e14:x14").Copy
    Range("e17").PasteSpecial xlValues
   
    Range("p12").Copy
    Range("z17").PasteSpecial xlValues
End If
End Sub
 
L

Lucko

Guest
Re : Amélioration d'un code Excel

Hieu et thebenoit59,

Je suis entrain de tester le code. C'est du costaud! Je ne sais pas si je gagne en rapidité mais en fluidité, c'est certain. Merci.
 
L

Lucko

Guest
Re : Amélioration d'un code Excel

Bonjour,

J'ai finalement adapté le code à mes besoins opérationnels. Ça fonctionne parfaitement. Le problème est résolu. Ce n'est jamais de trop de souligner la compétence et le professionnalisme des gens de ce forum qui s'y connaissent en matière d'Excel et qui prennent de leur temps pour nous aider. Merci.
 

Discussions similaires

Réponses
7
Affichages
367

Statistiques des forums

Discussions
312 594
Messages
2 090 080
Membres
104 369
dernier inscrit
bolthorn