Bonsoir,
Initialement j'ai ce code en bleu dans la feuille mais qui recalcule trop lentement les cellules,
et le code qui est en vert normalement accélère ce recalcul; mais je ne sais pas écrire sur le modèle du second, en respectant les conditions du code en bleu.
J'ai besoin de votre aide.
Merci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim CelluleAvant
CelluleAvant = Target.Address
If Not IsEmpty(CelluleAvant) Then
If Not Intersect(Range(CelluleAvant), [E5:LV30]) Is Nothing Then Calculate
End If
ActiveSheet.Unprotect
If Not Application.Intersect(Target, Range("E5:LV30")) Is Nothing And Target.Count = 1 Then 'Adapter la plage
UserForm1.Show
End If
Calculate
ActiveSheet.Protect
End Sub
Sub Liretraitercellules_2()
Dim datarange as variant
Dim irow as long
Dim icol as integer
Dim myvar as double
'Lire les données d'un seul coup
Datarange = Range("A1:C10000").Value
For irow = 1 to 10000
For Icol = 1to 3
Myvar = Datarange(Irow, Icol)
If Myvar > 0 then
'changer la valeur
MyVar = Myvar * Myvar
'si changement, le faire dans le tableau
Datarange(Irow, Icol) = Myvar
End if
Next Icol
Next Irow
' transcrire le tout dans la feuille excel
Range ("A1:C10000") .Value = Datarange
End sub
Initialement j'ai ce code en bleu dans la feuille mais qui recalcule trop lentement les cellules,
et le code qui est en vert normalement accélère ce recalcul; mais je ne sais pas écrire sur le modèle du second, en respectant les conditions du code en bleu.
J'ai besoin de votre aide.
Merci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim CelluleAvant
CelluleAvant = Target.Address
If Not IsEmpty(CelluleAvant) Then
If Not Intersect(Range(CelluleAvant), [E5:LV30]) Is Nothing Then Calculate
End If
ActiveSheet.Unprotect
If Not Application.Intersect(Target, Range("E5:LV30")) Is Nothing And Target.Count = 1 Then 'Adapter la plage
UserForm1.Show
End If
Calculate
ActiveSheet.Protect
End Sub
Sub Liretraitercellules_2()
Dim datarange as variant
Dim irow as long
Dim icol as integer
Dim myvar as double
'Lire les données d'un seul coup
Datarange = Range("A1:C10000").Value
For irow = 1 to 10000
For Icol = 1to 3
Myvar = Datarange(Irow, Icol)
If Myvar > 0 then
'changer la valeur
MyVar = Myvar * Myvar
'si changement, le faire dans le tableau
Datarange(Irow, Icol) = Myvar
End if
Next Icol
Next Irow
' transcrire le tout dans la feuille excel
Range ("A1:C10000") .Value = Datarange
End sub