Rechercher : dans
Par :

[VBA] tableau derniere cellule

Dernière réponse le 16 oct 2009 à 11:31:47 Redzen, le 20 fév 2007 à 13:42:06 
 Signaler ce message aux modérateurs

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

Configuration: Windows 2000
Internet Explorer 6.0

1

ruzakruzak, le 20 fév 2007 à 13:50:09

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 !

Répondre à ruzakruzak

2

Redzen, le 20 fév 2007 à 17:16:19

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

Répondre à Redzen

3

Sgt Saty, le 16 oct 2009 à 09:24:07

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

Répondre à Sgt Saty

4

 michel_m, le 16 oct 2009 à 11:31:47

Bonjour,

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

Répondre à michel_m
Collection CommentÇaMarche.net