XL 2016 Tri de texte dans plusieurs feuilles erreur VBA

  • Initiateur de la discussion Initiateur de la discussion Mrlr
  • 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 !

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
 
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+
 
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
 
- 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
3
Affichages
769
Retour