Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…