Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comparer deux codes après modif.

2 réponses
Avatar
Guy85
Bonjour,
J'ai modifier un code, je souhaiterais savoir, si j'ai bien modifier ce
qu'il fallait, ça a l'air de fonctionner, mais beaucoup plus lent ?
J'ai supprimer 6 rangées.
Merci de votre aide.

Code Original :
Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Set Plage = Range("D14:AB14")
For I = 1 To 12 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes P, Q et R
For I = 16 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
End Sub

Voici les lignes que j'ai modifiées.
Ligne 4 ==> Set Plage = Range("D14:V14")
Ligne 5 ==> For I = 1 To 8 Step 2
Ligne 8==> 'saute les colonnes L, M et N (pour indication)
Ligne 9 ==>For I = 12 To Plage.Count Step 2


Code modifier :
Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Set Plage = Range("D14:V14")
For I = 1 To 8 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes L, M et N
For I = 12 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
End Sub

Cordialement
Guy

2 réponses

Avatar
Hervé
Bonsoir Guy,

A priori c'est bon, teste la durée entre ces deux proc (API GetTickCount
pour la mesure de temps en millisecondes) :

Private Declare Function GetTickCount Lib "Kernel32" () As Long

Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Dim Debut As Long
Dim J As Long

Debut = GetTickCount()

Set Plage = Range("D14:AB14")
For I = 1 To 12 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes P, Q et R
For I = 16 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I

MsgBox (GetTickCount() - Debut)

End Sub


Sub Tri_Janvier_2()
Dim Plage As Range
Dim I As Integer
Dim Debut As Long
Dim J As Long

Debut = GetTickCount()

Set Plage = Range("D14:V14")
For I = 1 To 8 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes L, M et N
For I = 12 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I

MsgBox GetTickCount() - Debut

End Sub


Hervé.


"Guy85" a écrit dans le message de
news:
Bonjour,
J'ai modifier un code, je souhaiterais savoir, si j'ai bien modifier ce
qu'il fallait, ça a l'air de fonctionner, mais beaucoup plus lent ?
J'ai supprimer 6 rangées.
Merci de votre aide.

Code Original :
Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Set Plage = Range("D14:AB14")
For I = 1 To 12 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes P, Q et R
For I = 16 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
End Sub

Voici les lignes que j'ai modifiées.
Ligne 4 ==> Set Plage = Range("D14:V14")
Ligne 5 ==> For I = 1 To 8 Step 2
Ligne 8==> 'saute les colonnes L, M et N (pour indication)
Ligne 9 ==>For I = 12 To Plage.Count Step 2


Code modifier :
Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Set Plage = Range("D14:V14")
For I = 1 To 8 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes L, M et N
For I = 12 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
End Sub

Cordialement
Guy

Avatar
Guy85
Bonjour Hervé,
Ok je vais contrôler.
Merci de ton aide
Cordialement
Guy

"Hervé" a écrit dans le message de news:

Bonsoir Guy,

A priori c'est bon, teste la durée entre ces deux proc (API GetTickCount
pour la mesure de temps en millisecondes) :

Private Declare Function GetTickCount Lib "Kernel32" () As Long

Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Dim Debut As Long
Dim J As Long

Debut = GetTickCount()

Set Plage = Range("D14:AB14")
For I = 1 To 12 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes P, Q et R
For I = 16 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I

MsgBox (GetTickCount() - Debut)

End Sub


Sub Tri_Janvier_2()
Dim Plage As Range
Dim I As Integer
Dim Debut As Long
Dim J As Long

Debut = GetTickCount()

Set Plage = Range("D14:V14")
For I = 1 To 8 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes L, M et N
For I = 12 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I

MsgBox GetTickCount() - Debut

End Sub


Hervé.


"Guy85" a écrit dans le message de
news:
Bonjour,
J'ai modifier un code, je souhaiterais savoir, si j'ai bien modifier ce
qu'il fallait, ça a l'air de fonctionner, mais beaucoup plus lent ?
J'ai supprimer 6 rangées.
Merci de votre aide.

Code Original :
Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Set Plage = Range("D14:AB14")
For I = 1 To 12 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes P, Q et R
For I = 16 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
End Sub

Voici les lignes que j'ai modifiées.
Ligne 4 ==> Set Plage = Range("D14:V14")
Ligne 5 ==> For I = 1 To 8 Step 2
Ligne 8==> 'saute les colonnes L, M et N (pour indication)
Ligne 9 ==>For I = 12 To Plage.Count Step 2


Code modifier :
Sub Tri_Janvier()
Dim Plage As Range
Dim I As Integer
Set Plage = Range("D14:V14")
For I = 1 To 8 Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
'saute les colonnes L, M et N
For I = 12 To Plage.Count Step 2
Plage(I).Resize(7, 2).Sort Plage(I).Offset(0, 1), 2
Next I
End Sub

Cordialement
Guy