[VBA] tableau derniere cellule

Redzen -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Voici une macro qui tri un tableau selon les dates. Seulement ce tableau est en continuelle évolution et de nouvelles lignes sont ajoutées chaque jour. Comment faire pour indiquer à la macro de sélectionner le tableau de la première cellule à la dernière. Actuellement la macro sélectionne tout letemps les cellules A25 à Q25 sans se soucier s'il ya eu de nouvelles lignes de créées depuis.

Merci de prêter attention à ce message


Sub TRIDATES()
'
' TRIDATES Macro
' Macro enregistrée le 13/02/2007 par maindron
'
' Touche de raccourci du clavier: Ctrl+é
'
Range("A5:Q25").Select
Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=12
ActiveWindow.SmallScroll Down:=13
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 26
Range("A28").Select
End Sub
A voir également:

2 réponses

ruzakruzak Messages postés 459 Date d'inscription   Statut Membre Dernière intervention   247
 
Essaie ça :

Range("B2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

en remplaçant B2 par ton début de plage (qui doit être fixe), et après ça tu cases ton tri. Attention par contre, la sélection va s'arréter à la 1re ligne vide rencontrée !
1
Redzen
 
OK merci mais VBA me demande de déboguer les deux lignes à partir de Selection.Sort

De plus je souhaiterai faire terminer ma macro sur la première cellule de ma dernière ligne du tableau.

Sub TRIDATES()
'
' TRIDATES Macro
' Macro enregistrée le 13/02/2007 par maindron
'
' Touche de raccourci du clavier: Ctrl+é
'
Range("A5").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveWindow.SmallScroll ToRight:=12
ActiveWindow.SmallScroll Down:=13
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 26
Range("A6").Select
End Sub
0
Sgt Saty > Redzen
 
Sur ce genre de problématique j'utilise une boucle type "loop until cells (x,y).value= void". J'ajoute un incrément sur x ou y dans la boucle suivant ce que je veux tester (ligne ou colonne) et à la fin de ton test ta valeur de x ou y te donne le nombre de ligne ou colonne qui te permettras de définir ta plage
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

Dim derlig As Long
derlig = Range("A65536").End(3).Row
Range("A5:Q" & derlig).Sort Key1:=Range("A6")
Range("A" & derlig).Select
1