Bonjour,
Je me tourne vers vous, car malgré les nombreux posts traitant du sujet, et ayant l'impression d'avoir bien suivi les instructions, je n'y arrive pas. Voici la situation.
Mon but étant d'actualiser (l'ensemble) et de trier automatiquement (sur une colonne déterminée qui n'est pas la première) un TCD à l'ouverture de l'onglet. J'ai bien trouvé la méthode pour l'actualisation automatique (saisir :
Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub
dans la source de la page, mais pour la fonction trier, avant même de chercher à l'automatiser, je n'y arrive pas "à la main". Le tri s'obstine à rester uniquement sur la première colonne, quoique je fasse... Je tourne en rond sur ce problème qui est sans doute très bête (une option "cachée"??) depuis 2 jours et je deviens fou.... Auriez-vous une idée sur mon erreur potentielle ? Une fois cela résolu, comment automatiser ce tri à l'ouverture de l'onglet (rajouter un code dans la source de la page?). Je joins un extrait du fichier en exemple...
Merci beaucoup, c'est quasiment parfait, seuls 2 petits soucis persistent :
Si je dois rajouter une colonne, elle n'est pas prise en compte. Mon souhait était que le code s'adapte à la taille du tableau, jusqu'à la dernière colonne non vide, et jusqu'à la dernière ligne non vide (pour pouvoir laisser d'autres infos immobiles en bas en sautant une ligne). Sans doute avec "decaler", mais je ne sais pas comment l'utiliser ici.....
Merci beaucoup, JCGL, mais un bug subsiste. Lorsque je rajoute une ligne après en avoir sauté une (ligne que je ne veux pas trier bien sûr), ça ne fonctionne pas, et lorsque je rajoute une colonne après en avoir sauté une, ça bug....
Pour jean-pierre, j'ai compris que je ne pouvais pas trier directement une autre colonne que la première d'un TCD, je ferais donc un report sur un autre onglet et je demandais ici une méthode adaptable à toute les possibilités..
Merci beaucoup, JCGL, mais un bug subsiste. Lorsque je rajoute une ligne après en avoir sauté une (ligne que je ne veux pas trier bien sûr), ça ne fonctionne pas, et lorsque je rajoute une colonne après en avoir sauté une, ça bug....
J'ai compris que je ne pouvais pas trier directement une autre colonne que la première d'un TCD, je ferais donc un report sur un autre onglet et je demandais ici une méthode adaptable à toute les possibilités..
Je te rappelle que sur un TCD le tri se fait sur la première colonne mais que tu choisir ta première colonne en déplaçant le champ en première colonne par un simple déplacement à la souris
Je me suis sans doute mal exprimer encore. Le code ne doit pas sélectionner les lignes vides, s'arrêter à la dernière ligne non vide et dernière colonne non vide, et trier cette sélection. Et donc laisser tous ce qui est en dessous de cette ligne vide en place....
Je te rappelle que sur un TCD le tri se fait sur la première colonne mais que tu choisir ta première colonne en déplaçant le champ en première colonne par un simple déplacement à la souris
Bonsoir JCGL, et encore merci pour le temps que tu consacres à mes soucis.
Juste une question de grand ignare :
Il n'est pas possible d'inclure une formule du type :
"DECALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))"
dans le code (si oui, je ne sais pas où) pour définir "dynamiquement" le tableau sur lequel appliquer le tri ? Et en passant, si tu as encore la patience, quelle est l'utilité de 2 onglets ?
Cordialement...
EDIT :
Bonjour à tous et grand merci à JCGL et chris qui m'ont beaucoup aidé.
En continuant de fouiller un peu partout, on m'a donné le code suivant qui est "universel" et qui correspond exactement à ce que je cherchais :
Code:
=Private Sub Worksheet_Activate()
ActiveSheet.Range("A1").CurrentRegion.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
End Sub
Ce code tri donc automatiquement n'importe quel tableau de A1 jusqu'à la dernière colonne non vide-dernière ligne non vide sur les critères de la colonne C puis D....
Merci aussi à Nad-Dan qui m'a donné ce code...
Cordialement .