Sort qui marche... un temps

salut tout le monde.

j'ai un problème avec deux fonctions me permettant de trier une plage par ordre alphabétique, utilisant la procédure sort.

Ce sont les mêmes fonctionnements, avec simplement une plage différente et un critère en plus pour la 2e, voici les codes :

Sub TriListFam()

shList.Activate

TargetCol = 2

With ActiveSheet.Sort
    .SortFields.Add Key:=Range(Cells(1, TargetCol), Cells(1, TargetCol)), order:=xlAscending
    .SetRange Range(Cells(1, TargetCol), Cells(1, TargetCol)).CurrentRegion
    .Header = xlYes
    .Apply
End With

End Sub
Sub TriListIng()

shList.Activate

TargetCol = 4

With ActiveSheet.Sort
    .SortFields.Add Key:=Range(Cells(1, TargetCol), Cells(1, TargetCol)), order:=xlAscending
    .SortFields.Add Key:=Range(Cells(1, TargetCol + 1), Cells(1, TargetCol + 1)), order:=xlAscending
    .SetRange Range(Cells(1, TargetCol), Cells(1, TargetCol)).CurrentRegion
    .Header = xlYes
    .Apply
End With

End Sub

ça marche bien comme il faut, jusqu'à un moment donnée, excel me renvoie une erreur d’exécution 1004.

j'ai l'impression que ça marche bien tant que je lance la même macro, et que ça commence à déconner quand je lance l'autre. A partir de là, ça me renvoie le message d'erreur à chaque fois, jusqu'à ce que je relance excel, et là ça remarche.

je joins un extrait du fichier.

Quelqu'un à déjà rencontré ce problème, ou aurait une piste ?

Merci d'avance

10migul.xlsm (125.52 Ko)

Bonjour,

A quoi correspond shList ?

Cdlt.

Bonjour,

shList est le code donné à la feuille contenant les listes

Bonjour,

Essaie ainsi :

Sub TriListFam()
Dim TD As Range
    Set TD = Range("Tableau6")
    With TD.ListObject.Sort
        .SortFields.Clear
        .SortFields.Add Key:=TD(0, 1)
        .Header = xlYes
        .Apply
    End With
End Sub

Sub TriListIng()
Dim TD As Range
Set TD = Range("Tableau2")
    With TD.ListObject.Sort
        .SortFields.Clear
        .SortFields.Add Key:=TD(0, 1)
        .SortFields.Add Key:=TD(0, 2)
        .Header = xlYes
        .Apply
    End With
End Sub

Merci Jean-Eric, ça marche parfaitement.

Pour pousser un peu et essayer de comprendre, j'ai fait un test en rajoutant la ligne ".SortFields.clear" à mon code initial, et ça à l'air de marcher aussi.

Dans l'idéal je crois que je préférerais ne pas utiliser les tableaux pour rendre le code plus flexible.

Est ce que t'y vois un inconvénient ? Une raison particulière pour laquelle tu as utilisé les tableaux plutôt qu'une plage ? (outre que le code est plus clair)

Re,

C'est moi ou toi qui a mis les données sous forme de tableaux structurés ?

Si tu voulais travailler avec des plages, tu nommais des plages.

Dans la mesure ou tu as crée des tableaux, travaille avec les tableaux.

En VBA, les propriétes et méthodes sont différentes !...

Cdlt.

OK, je comprends la logique.

J'essaie de structurer mes codes de manière cohérente et claire, mais j'apprends sur le tas.

Merci beaucoup d'avoir pris le temps de résoudre le problème et de l'expliquer.

bonne journée

Rechercher des sujets similaires à "sort qui marche temps"