vba variable publique + private sub
Le
j-pascal
Bonjour,
Dans ce qui suit, je pensais mettre le calcul de "MaPlage" en dehors de
chaque Sub avec une variable déclarée "Publique", mais apparemment ça
ne fonctionne pas. Est-ce du fait qu'il s'agisse de "Private Sub" ?
'
Private Sub Tri_ColA_Click() 'Ordre
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
Range(MaPlage).Sort Key1:=[a3], Order1:=xlAscending
End Sub
Private Sub Tri_ColB_Click() 'Arrivée
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
Range(MaPlage).Sort Key1:=[b3], Order1:=xlAscending
End Sub
Private Sub Tri_ColC_Click() 'Courrier
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
Range(MaPlage).Sort Key1:=[c3], Order1:=xlAscending
End Sub
'
Merci pour vos lumières,
JP
Dans ce qui suit, je pensais mettre le calcul de "MaPlage" en dehors de
chaque Sub avec une variable déclarée "Publique", mais apparemment ça
ne fonctionne pas. Est-ce du fait qu'il s'agisse de "Private Sub" ?
'
Private Sub Tri_ColA_Click() 'Ordre
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
Range(MaPlage).Sort Key1:=[a3], Order1:=xlAscending
End Sub
Private Sub Tri_ColB_Click() 'Arrivée
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
Range(MaPlage).Sort Key1:=[b3], Order1:=xlAscending
End Sub
Private Sub Tri_ColC_Click() 'Courrier
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
Range(MaPlage).Sort Key1:=[c3], Order1:=xlAscending
End Sub
'
Merci pour vos lumières,
JP

Poser une question


macros :
Private Sub test1()
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address
End Sub
Private Sub test2()
Range(MaPlage).Sort Key1:=[c3], Order1:=xlAscending
End Sub
Pas de problème.
Pour déboguer, ajoute :
MsgBox MaPlage avant tri.
Daniel
plusieurs sub et private sub
'---------------------
'Dans un module standard :
Option Explicit
Public Maplage as string
'---------------------
'dans ton private module
Option Explicit
Private Sub Tri_ColA_Click() 'Ordre
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) + 2).Address
Range(MaPlage).Sort Key1:=[a3], Order1:=xlAscending
End Sub
Private Sub Tri_ColB_Click() 'Arrivée
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) + 2).Address
Range(MaPlage).Sort Key1:=[b3], Order1:=xlAscending
End Sub
Private Sub Tri_ColC_Click() 'Courrier
MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) + 2).Address
Range(MaPlage).Sort Key1:=[c3], Order1:=xlAscending
End Sub
'---------------------
j-pascal a écrit :
En fait, j'avais mis la "Public MaPlage" dans le module de feuille au
lieu d'un module standard ...
Mais ce que je voulais, c'est éviter la répétition de :
"MaPlage = Range("A3:K" & Application.CountA(Range("G:G")) +
2).Address"
et donc juste derrière la déclaration de la variable, j'avais mis la
formule ci-dessus. Apparemment ça n'avait pas fonctionné !
JP