RE,
trouvé ceci pour répondre à ta question:
à l'adresse:
http://www.excelabo.net/xl/filtris.php#trisformules
Quand je trie mes cellules, seules les valeurs sont triées mais les formules ne suivent pas. Pourquoi ? et comment faire ? Je ne pense pas qu'il s'agisse d'un bug mais d'un choix dicté par un
problème de vitesse. Si les cellules étaient réordonnées "physiquement"
ça prendrait beaucoup plus de temps que simplement remplacer les valeurs
d'origine par les valeurs triées. Le fait de déplacer une seule cellule
-et c'est ce qu'il faut faire si l'on veut que les formules suivent-
entraîne pour le tableur beaucoup plus d'opérations que le simple fait
de changer son contenu. Le tri se contente donc de modifier les valeurs
de la plage sans toucher aux cellules en tant qu'objets, c'est pourquoi
les formules ne sont pas ajustées.
J'ai fait un petit test par macro de ce que pourrait donner un tri
"physique" des cellules, qui ne perturberait pas les formules:
Sub TestTri()
Dim S, I As Integer, Calc As Long, P As Range
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set P = Application.InputBox("Référence de la plage à trier " _
& "(1 seule colonne, sans en-tête)", Type:=8)
If P.Columns.Count > 1 Then Exit Sub
S = P.Value
P.Offset(, 1).Insert xlShiftToRight
P.Offset(, 1).Value = Evaluate("""" & Left(P.Address(0, 0), _
(P.Column < 27) + 2) & """&ROW(" & P.Address & " )" )
P.Resize(, 2).Sort P.Item(1)
P.Value = S
S = P.Offset(, 1)
For I = 1 To UBound(S)
Range(S(I, 1)).Cut P.Item(I, 2)
Next I
P.Delete xlShiftToLeft
Application.Calculation = Calc
End Sub
Tant que la colonne à trier est de petite taille (une centaine de
cellules) c'est assez rapide. Mais par exemple avec une plage de 4000
cellules le tri prend déja une bonne vingtaine de secondes sur un XP+
1700 alors qu'un tri normal est quasi-instantané. Ce serait bien sûr
plus rapide se ce type de tri était codé dans Excel lui-même plutôt que
dans une procédure VBA bricolée, mais les opérations de base -déplacer
des cellules- seraient les mêmes.
Laurent Longre,
Ajouté ou modifié le 02/05/2004 (N°1373)