Macro de tri ne fait absolument rien Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 15:18

Salut à tous,

Bon j'ai un peu honte de venir pour une telle question mais là, je ne vois pas du tout ce qui cloche...
J'ai un tableau de ma colonne A à ma colonne N et les en-têtes sont ligne 13.

Je veux le trier avec la colonne D.

Du coup j'ai fait ceci
With Sheets("export actu_mobile")
        .Range("A13:N" & .Range("A" & Rows.Count).End(xlUp).Row).Sort key1:=.Range("C13"), order1:=xlDescending, Header:=xlYes
    End With
Sauf que quand j'exécute mon code bah... il ne se passe rien, mais alors rien du tout.

Des idées ?

Merci d'avance :)
Modifié en dernier par PascalAubistro le 24 mai 2019, 15:33, modifié 1 fois.
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'199
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 24 mai 2019, 15:24

::o c'est une question politique ?
"Macron de tri" :mrgreen:
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 15:33

Xmenpl a écrit :
24 mai 2019, 15:24
::o c'est une question politique ?
"Macron de tri" :mrgreen:
Macro*
C'est ça de bosser dans les médias, on entend son nom 20 fois par jour, il s'incruste dans votre tête :mrgreen:
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'199
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 24 mai 2019, 15:50

Je suis pas certains que la référence "A13:N" fonctionne

Quand je fais la macro en manuel j'ai :
Sub Macro1()
'
' Macro1 Macro
    Range("A13:N600").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C14:C600") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A13:N600")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A11").Select
End Sub
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 16:01

En utilisant ton code avec mes plages, ce qui a donné :
Range("A13:N13").Select
    ActiveWorkbook.Worksheets("export actu_mobile").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("export actu_mobile").Sort.SortFields.Add Key:=Range("D13") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("export actu_mobile").Sort
        .SetRange Range("A13:N13")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Eh bah pareil, absolument rien ne se passe :/
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'199
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 24 mai 2019, 16:13

PascalAubistro a écrit :
24 mai 2019, 16:01
En utilisant ton code avec mes plages, ce qui a donné :
Range("A13:N13").Select
    ActiveWorkbook.Worksheets("export actu_mobile").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("export actu_mobile").Sort.SortFields.Add Key:=Range("D13") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("export actu_mobile").Sort
        .SetRange Range("A13:N13")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Eh bah pareil, absolument rien ne se passe :/
Key:=Range("D13") ??? le Key c'est la ligne d'en dessous sinon tu vas trier les titres avec
Key:=Range("D14:D600")
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 16:23

Au temps pour moi mais même avec ta correction, cela ne fonctionne toujours pas :/
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'199
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 24 mai 2019, 16:27

PascalAubistro a écrit :
24 mai 2019, 16:23
Au temps pour moi mais même avec ta correction, cela ne fonctionne toujours pas :/
Les autres références aussi à corriger
Range("A13:N13").Select le N13 ? tu restes sur la même ligne mon exemple c'était Range("A13:N600").Select


j'ai mis 600 sans savoir la longeur du tableau mais au moins si tu ajoutes des lignes elle devraient être dans cette plage ? sinon tu mets plus que 600 ( ou moins si tu as des données en dessous de ton tableau ? )
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 16:41

Ok donc j'ai modifié un peu, comme ceci :

y = Sheets(export actu_mobile).Cells(13, 4).End(xlDown).Row

Range("A13:N" & y).Select
    ActiveWorkbook.Worksheets("export actu_mobile").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("export actu_mobile").Sort.SortFields.Add Key:=Range("D14:D" & y) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("export actu_mobile").Sort
        .SetRange Range("A13:N" & y)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
si je lance depuis la feuille qui contient le classement, ça fonctionne. Cool !
Maintenant, je voudrais la lancer depuis une autre feuille et évidemment ça coince à cause du "Range("A13:N" & y).Select" au début :/

Tu sais comment je peux faire pour trier ces données sans être sur la feuille ?
Merci pour ton aide !
P
PascalAubistro
Jeune membre
Jeune membre
Messages : 13
Inscrit le : 16 mai 2019
Version d'Excel : 2013

Message par PascalAubistro » 24 mai 2019, 16:55

En fait c'est bon j'ai trouvé...
Il faut également indiqué la feuille concerné quand il demande "key1", sinon ça plante...

Voici donc mon tout bête code
y = Sheets("export actu_mobile").Cells(13, 4).End(xlDown).Row


Sheets("export actu_mobile").Range("A13:N" & y).Sort key1:=Sheets("export actu_mobile").Range("D14"), order1:=xlDescending
Et ça fait super bien le taf :)

Merci à toi en tous cas, bon we :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message