Tri sur une colonne par Macro

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

gimli

XLDnaute Occasionnel
Bonjour à tous,

je cherche à faire un tri (par ordre croissant) sur la dernière colonne non vide, dans mon fichier exemple on voit que c'est la colonne "# DiffusionKey".

Voici mon code :
Code:
Dim col As String
With ResWkb.Sheets("TableauQO")
    col = Split(.Cells.Find("*", , xlValues, , 2, 2, 0).Address, "$")(1) 'cherche le nom (la lettre) de la dernière colonne non vide
End With

    nbColonnes = ResWkb.Sheets("TableauQO").[B2].End(xlToRight).Column 'cherche le numéro de la dernière colonne non vide

        [COLOR="Red"]ResWkb.Sheets("TableauQO").Range("A1:col" & dernligneTableauQO).Sort Key1:=Cells(1, 8), _
        Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal[/COLOR]

La partie en rouge est l'endroit ou il y a l'erreur "erreur définie par l'application ou l'objet".
Le fichier que je joint ne s'appelle pas ResWkb, et certaines variables comme dernligneTableauQO ne sont pas définies dans ce classeur exemple, mais il peut donner une idée de mon projet 😉

merci à vous,

Gimli
 

Pièces jointes

Re : Tri sur une colonne par Macro

Bonjour Gimli 🙂,
Belle erreur de syntaxe 😛...
Code:
        [COLOR=red]ResWkb.Sheets("TableauQO").Range("A1:[COLOR=seagreen]" & "[/COLOR]col" & dernligneTableauQO).Sort Key1:=Cells(1, 8), _
        Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal[/COLOR]
Bonne journée 😎
Ajout : Salut EfGé
 
Dernière édition:
Re : Tri sur une colonne par Macro

Bonjour JNP, Efgé,

@JNP : en effet c'est une belle erreur ^^ mais après essai le même message s'affiche 🙁

@Efgé : ta modification n'étant pas exactement la même que celle effectuée par JNP, j'ai également essayé mais cette fois il m'affiche "Erreur 1004: Référence de tri non valide. Vérifier qu'elle se trouve bien parmi les données à trier et que la zone Trier Par n'est pas identique ou vide" 🙁

Merci à vous deux 🙂

Gimli
 
Re : Tri sur une colonne par Macro

Re 🙂,
Effectivement, moi-même, j'ai dérapé, et c'est bien sûr col sans "" qui est juste 😱...
Je suis pas sur que Key accepte Cells, il vaudrait peut-être mieux utiliser Range("H1")...
D'autre part, le message que tu obtiens signifie que Cells(1, 8) serait en dehors de la zone. Donc il faudrait vérifier que col est au delà de H...
A + 😎
 
Re : Tri sur une colonne par Macro

Bonjour à tous,

Peux-tu essayer avec :

Code:
Sub Test()
    Dim DerC As String
    With Sheets("TableauQO")
        DerC = Split(.Cells.Find("*", , xlValues, , 2, 2, 0).Address, "$")(1)    'cherche le nom (la lettre) de la dernière colonne non vide
        DerL = .Range("A65536").End(xlUp).Row
        nbColonnes = Sheets("TableauQO").[A2].End(xlToRight).Column    'cherche le numéro de la dernière colonne non vide
        Sheets("TableauQO").Range("A1:" & DerC & DerL).Sort Key1:=Cells(1, DerC), _
                                                                         Order1:=xlAscending, Header:=xlGuess
    End With
End Sub

A+ à tous

Edition 1 : Salut JNP
Edition 2 : Salut FG ;-)
 

Pièces jointes

Dernière édition:
Re : Tri sur une colonne par Macro

Code:
Bonjour JCGL, re,

j'ai essayé ton code JCGL (sur mon vrai fichier) , j'obtiens la même erreur qu'avec le code d'Efgé :
"Erreur 1004: Référence de tri non valide. Vérifier qu'elle se trouve bien parmi les données à trier et que la zone Trier Par n'est pas identique ou vide"

la partie surligné en jaune est cette partie du code :

Code:
Sheets("TableauQO").Range("A1:" & DerC & DerL).Sort Key1:=Cells(1, DerC), _
                                                                         Order1:=



@JNP : c'est possible qu'il n'aime pas le cells(1,8) et qu'il faudrait remplacer par range("H1") mais dans ce cas là il faut pas mettre H mais "col" donc faudrait que je mette: range(col & 1) ?

merci 🙂

Gimli
 
Dernière édition:
Re : Tri sur une colonne par Macro

Re Gimli, Bonjour JNP 🙂,Bonjour JCGL 🙂,
J'ai testé l'exemple de JC et chez moi il n'y a aucun problème (2003, Win XP).
Pour modifier cell par Range et toujours dans l'exemple de JC, utilise :
Code:
Range(DerC & "1")
Cordialement
 
Re : Tri sur une colonne par Macro

EUREKA ! 🙂

c'était un truc tout bête ! Voici le code qui fonctionne chez moi :

Code:
Dim DerC As String
    Dim DerL As String
    With ResWkb.Sheets("TableauQO")
        DerC = Split(.Cells.Find("*", , xlValues, , 2, 2, 0).Address, "$")(1)    'cherche le nom (la lettre) de la dernière colonne non vide
        DerL = .Range("A65536").End(xlUp).Row
        nbColonnes = .[A2].End(xlToRight).Column    'cherche le numéro de la dernière colonne non vide
        .Range("A3:" & DerC & DerL).Sort Key1:=[SIZE="6"][COLOR="Red"].[/COLOR][/SIZE]Cells(1, DerC), _
        Order1:=xlAscending, Header:=xlGuess
    End With

c'était simplement le point avant le cells qui manquait ^^ un grand merci à vous tous, JCGL,JNP et Efgé !

Bonne journée 🙂

Gimli
 
Re : Tri sur une colonne par Macro

salut

tu dois lancer la macro en dehors de la feuille à trier donc il manque des points.
A tester :
Code:
Sub ORDRE()
  Dim col As String, dernligneTableauQO As Integer
  With Sheets("TableauQO")
    col = Split(.Cells.Find("*", , xlValues, , 2, 2, 0).Address, "$")(1)
    dernligneTableauQO = .Cells(65000, 1).End(xlUp).Row
    .Range("A2:" & col & dernligneTableauQO).Sort Key1:=[B].[/B]Cells(1, col), Order1:=xlAscending
  End With
End Sub
 
- 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

B
  • Question Question
Réponses
2
Affichages
776
Benjy51190
B
Retour