[VBA] tableau derniere cellule

Fermé
Redzen - 20 févr. 2007 à 13:42
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 16 oct. 2009 à 11:31
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 vendredi 9 février 2007 Statut Membre Dernière intervention 31 mai 2007 246
20 févr. 2007 à 13:50
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
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
16 oct. 2009 à 09:24
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 oct. 2009 à 11:31
Bonjour,

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