comment executer une macro sur une zone selectionnée

comment executer une macro sur une zone selectionnée - VB/VBA/VBS - Programmation

Marsh Posté le 28-01-2008 à 14:00:24    

bonjour
 
je commence à faire quelques macro sous excell 2007. J ai fait une macro de tri avec plusieures criteres. Cette macro s'apllique à une zone définie  Range("AH400" ). Pour aller plus vite, j aimerai appliquer ma macros à partir d'une cellule selectionnée:
exemple  
au lieu d appliquer toujours a la zone A4:AH400 je desire sois commencer à la cellule a6 ou a8, .... suivant les cas
comment puis je modofier ma macro pour prendre en compte le debut de ma zone à selectionner pour effectuer mon tri. Voici ma macro
--------------------------------------------------------------------------------
Sub TRI_STATUT_POSITION14()
 
' SELECTION ZONE A TRIER
    Sheets("POS 14" ).Select
    Range("A4:AH400" ).Select
    Range("AH400" ).Activate
     
' TRI_SUR_FEUILLE Macro
    ActiveWorkbook.Worksheets("POS 14" ).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("POS 14" ).Sort.SortFields.Add Key:=Range( _
        "AA4:AA400" ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("POS 14" ).Sort.SortFields.Add Key:=Range( _
        "X4:X400" ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("POS 14" ).Sort.SortFields.Add Key:=Range( _
        "E4:E400" ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("POS 14" ).Sort
        .SetRange Range("A4:AH400" )
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
' RETOUR CELLULE DEBUT
    Range("A4" ).Select
     
End Sub
------------------------------------------------------------------------------
 
 j espére avoir été assez clair et merci d'avance
a+ gilbs

Reply

Marsh Posté le 28-01-2008 à 14:00:24   

Reply

Marsh Posté le 01-02-2008 à 12:52:17    

personne ne peut m aider ?

Reply

Marsh Posté le 02-02-2008 à 13:09:58    

Plusieurs remarques :
1) tes select/activate au début ne servent à rien...
2) Evite la redondance. Fait un :

Code :
  1. Dim curr_worksheet as Worksheet
  2. Set curr_worksheet = Sheets("POS 14" )


et remplace tes activeWorkbook.Worksheets("POS 14" ) par curr_worksheet...
3) Pour récupérer la ligne de la cellule active, fait un

Code :
  1. Dim num_ligne as Integer
  2. num_ligne = ActiveCell.Row


et utilise cette variable dans tes Range("AA" & num_ligne & ":AA400" )
 
Voilà en espérant avoir bien compris

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed