[VBA] tableau derniere cellule
Redzen
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 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
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
Configuration: Windows 2000 Internet Explorer 6.0
2 réponses
-
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 !-
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- 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
-
-
Bonjour,
Dim derlig As Long derlig = Range("A65536").End(3).Row Range("A5:Q" & derlig).Sort Key1:=Range("A6") Range("A" & derlig).Select