Optimiser tri d'une feuille contenant des liens Hypertext

  • Initiateur de la discussion Initiateur de la discussion Kazimir
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kazimir

XLDnaute Nouveau
Bonjour à tous,

voici mon souci: j'ai une macro permettant de trier 4 feuilles suivant une même colonne dans chaque feuille, j'ai donc bouclé sur une même macro comme suit:
Code:
Sub Tri_feuilles()
    Feuill = Array("Fiches", "Suivi", "Diplomes", "Commentaires")

    For zz = 0 To 3

        ActiveWorkbook.Worksheets(Feuill(zz)).AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets(Feuill(zz)).AutoFilter.Sort.SortFields.Add Key:=Range _
            ("D2:D300"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets(Feuill(zz)).AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next

End Sub

le problème c'est que cette macro prend ~5 sec a s’exécuter et je l'appelle à chaque modification de l'une des 4 feuilles...

je pensais l'optimiser en passant par des variables tableaux ( copie dans tableau -> tri tableau -> coller dans la feuille) mais le problème c'est que les cellules a trier comportent des liens hypertexte.
je ne vois pas comment faire pour que le tri n’omette pas ces liens.

des idées ?

merci d'avance de votre aide
 
Re : Optimiser tri d'une feuille contenant des liens Hypertext

Bonsoir Kasimir et bienvenue sur XLD 🙂,

Un petit fichier joint eut été aussi le bienvenu. Un essai dans le fichier joint. Les codes sont dans Module1 et dans le module de code de ThisWorkbook. On ne trie que la feuille qui a fait l'objet d'une modif.

ThisWorkbook:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Trier Sh
End Sub
Module1:
Code:
Option Explicit
Const Feuilles = "Feuil1;Feuil2;Feuil3;Feuil4"

Sub Trier(x As Worksheet)
If InStr(";" & Feuilles & ";", ";" & x.Name & ";") > 0 Then _
  x.Range("d1").CurrentRegion.Sort x.Range("d1"), xlAscending, Header:=xlYes
End Sub
 

Pièces jointes

Dernière édition:
Re : Optimiser tri d'une feuille contenant des liens Hypertext

Bonjour,

merci pour la réponse rapide, ça marche bien, j'ai adapté a mon besoin.
Par contre, je rencontre un souci car j'ai des cellules fusionnées et la macro ne sait manifestement pas en tenir compte 🙁


Je ne peux malheureusement pas diffuser un fichier pour des raisons de confidentialité mais je vais essayer de faire un modèle pour que vous puissiez m'aider.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
780
Réponses
6
Affichages
1 K
Réponses
1
Affichages
821
Retour