XL 2016 Tri de texte dans plusieurs feuilles erreur VBA

Mrlr

XLDnaute Nouveau
Bonjour à tous,

Je m'explique :
J'ai créer plusieurs feuilles dans lesquelles j'ai besoin de trier le contenu des cellules de B30 à B47 par ordre alphabétique. Cependant une erreur s'affiche : "La méthode Select de la case Range a échouée"
J'ai préalablement rangé le nom des feuilles dans un tableau pour pouvoir faire des opérations dessus plus facilement, d'où le tab1(l, 1). Je prends chaque feuille (de la feuille "ligne 1 du tableau" à la "nieme ligne du tableau") je sélectionne la zone qui m'intéresse (B30:B47) et j'effectue le tri. Cependant je me suis servi de l'enregistreur de Macros pour déterminer ces fonctions et je ne pense pas qu'elles s'intègrent bien dans une boucle.
Quelqu'un aurait une idée de comment régler ce problème de méthode select ?

Merci d'avance !

Le code :

VB:
    For l = 1 To longueur_tableau
        Worksheets(tab1(l, 1)).Range("B30:B47").Select
        Worksheets(tab1(l, 1)).Range("B30:B47").Sort.SortFields.Clear
        Worksheets(tab1(l, 1)).Sort.SortFields.Add Key:=Range("B30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets(tab1(l, 1)).Sort
            .SetRange Range("B30:B47")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next l
 

Paf

XLDnaute Barbatruc
Bonjour,

Il faut bien "rattacher" les range à la feuille sur laquelle il doivent opérer. Sinon, par défaut, action sur la feuille courante.

proposition sans certitude puisque ma version XL ne connait pas toutes les instructions utilisées:

VB:
    For l = 1 To longueur_tableau
       With  Worksheets(tab1(l, 1))
      .Range("B30:B47").Sort.SortFields.Clear
       .Sort.SortFields.Add Key:=.Range("B30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _  ' point devant range("B30")
            xlSortNormal
       End With
        With ActiveWorkbook.Worksheets(tab1(l, 1)).Sort
            .SetRange Range("B30:B47")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next l

A+
 

Mrlr

XLDnaute Nouveau
Bonjour,

Il faut bien "rattacher" les range à la feuille sur laquelle il doivent opérer. Sinon, par défaut, action sur la feuille courante.

proposition sans certitude puisque ma version XL ne connait pas toutes les instructions utilisées:

VB:
    For l = 1 To longueur_tableau
       With  Worksheets(tab1(l, 1))
      .Range("B30:B47").Sort.SortFields.Clear
       .Sort.SortFields.Add Key:=.Range("B30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _  ' point devant range("B30")
            xlSortNormal
       End With
        With ActiveWorkbook.Worksheets(tab1(l, 1)).Sort
            .SetRange Range("B30:B47")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    Next l

A+

Merci pour ta réponse mais ça ne fonctionne toujours pas… Excel m'affiche "Impossible de lire la propriété Sort de la classe Range" pour cette ligne :
VB:
.Range("B30:B47").Sort.SortFields.Clear
 

Discussions similaires

Statistiques des forums

Discussions
314 633
Messages
2 111 404
Membres
111 124
dernier inscrit
presa54