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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #17994371
J'ai mis les trois macros dans un module feuille; j'ai testé les deux
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

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


LSteph
Le #17995141
Pour déclarer proprement si tu as besoin d'y faire appel depuis
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 :
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




j-pascal
Le #17995921
Bonjour Stéphane,

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

Pour déclarer proprement si tu as besoin d'y faire appel depuis 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 :
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






Publicité
Poster une réponse
Anonyme