Trier en conservant les formules

Dans une colonne j'ai des formules. Je voudrais trier cette colonne en fonction des résultats mais sans perdre les formules. Je n'y parviens pas. Est-ce un bug ?

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.

Auteur :

Mots clefs associés à cette page : , ,