Re : Question en programmation VBA (optimisation)
Re,
Merci JB mais en fait je n'ai copié q'un seul petit bout de mon code et encore je l'ai simplifié pour seulement savoir quelle est la structure du If la plus adapté et la plus rapide. Mon code comporte bien tes 4 lignes de codes pour le raffraichissement automatique de l'écran et pour le recalcul automatique. En tout cas merci quand même : o) Cependant j'ai encore 1 ou 2 petites questions.
1) Pourquoi les 2 codes utilisant des "ElseIf" ne fonctionnent-ils pas ? : problème de syntaxe j'imagine. L'erreur qu'il me propose est "Else sans If".
2) Quel serait le meilleur code c'est à dire le plus rapide en terme d'éxécution (si les 5 codes fonctionnait) ? C'est quand même étonnant que ce soit le plus long qui soit le plus rapide !
'_____________________________________________________________________________________________
'1er code : qui ne marche pas ! l'erreur qu'il me propose est : "Else sans If" (Temps éxécution : erreur)
Dim j As Long
For j = 65536 To 1 Step -1
If Cells(j, 1) = "Operator ID" Then Rows(j + 1).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Enable status" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Re-enable date" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Approval status" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Last changed" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Last sign-on" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Calculated pwd" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "One-time password" Then Rows(j).Delete Shift:=xlUp
ElseIf Cells(j, 1) = "Active devices" Then Rows(j).Delete Shift:=xlUp
End If
Next j
'_____________________________________________________________________________________________
'_____________________________________________________________________________________________
'2eme code (Temps éxécution : 1,35 min)
Dim j As Long
For j = 65536 To 1 Step -1
If Cells(j, 1) = "Operator ID" Then
Rows(j + 1).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Enable status" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Re-enable date" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Approval status" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Last changed" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Last sign-on" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Calculated pwd" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "One-time password" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
If Cells(j, 1) = "Active devices" Then
Rows(j).Select
Selection.Delete Shift:=xlUp
End If
Next j
'_____________________________________________________________________________________________
'_____________________________________________________________________________________________
'3eme code(Temps éxécution : 2,10 min)
Dim j As Long
For j = 65536 To 1 Step -1
If Cells(j, 1) = "Operator ID" Then Rows(j + 1).Delete Shift:=xlUp
If Cells(j, 1) = "Enable status" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "Re-enable date" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "Approval status" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "Last changed" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "Last sign-on" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "Calculated pwd" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "One-time password" Then Rows(j).Delete Shift:=xlUp
If Cells(j, 1) = "Active devices" Then Rows(j).Delete Shift:=xlUp
Next j
'_____________________________________________________________________________________________
'_____________________________________________________________________________________________
'4eme code(Temps éxécution : 2,10 min)
Dim j As Long
For j = 65536 To 1 Step -1
If Cells(j, 1) = "Operator ID" Then Rows(j + 1).Delete Shift:=xlUp
If Cells(j, 1) = "Enable status" Or Cells(j, 1) = "Re-enable date" Or Cells(j, 1) = "Approval status" Or Cells(j, 1) = "Last changed" Or Cells(j, 1) = "Last sign-on" Or Cells(j, 1) = "Calculated pwd" Or Cells(j, 1) = "One-time password" Or Cells(j, 1) = "Active devices" Then Rows(j).Delete Shift:=xlUp
Next j
'_____________________________________________________________________________________________
'_____________________________________________________________________________________________
'5eme code : qui ne marche pas encore à cause des ElseIf(Temps éxécution : erreur)
Dim j As Long
For j = 65536 To 1 Step -1
If Cells(j, 1) = "Operator ID" Then Rows(j + 1).Delete Shift:=xlUp
Elseif Cells(j, 1) = "Enable status" Or Cells(j, 1) = "Re-enable date" Or Cells(j, 1) = "Approval status" Or Cells(j, 1) = "Last changed" Or Cells(j, 1) = "Last sign-on" Or Cells(j, 1) = "Calculated pwd" Or Cells(j, 1) = "One-time password" Or Cells(j, 1) = "Active devices" Then Rows(j).Delete Shift:=xlUp
Next j
'_____________________________________________________________________________________________
Merci : o)
Alphons