lancer une macro sur changement d'onglet

pascalF

XLDnaute Nouveau
Bonjour,

est-il possible de lancer une macro lorsque l'on change d'onglet ?

...et comment fait-on ?!

Edit : Ne cherchez plus j'ai trouvé la fonction RECHERCHE du Forum ! oups...
 
Dernière édition:

SergiO

XLDnaute Accro
Re : lancer une macro sur changement d'onglet

Bonsoir pascal,

Une possibilité : mettre ce code dans l'objet ThisWorkbook

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "J'ai changé d'onglet!"
'Ton code...
End Sub
@+
 

JYLL

Nous a quitté
Repose en paix
Re : lancer une macro sur changement d'onglet

Bonsoir PascalF et le Forum,

C'est possible de lancer une macro quand tu sélectionnes une feuille.

Pour faire cela tu cliques droit sur le nom de l'onglet et "Visualiser le code"
puis tu liques sur l'ascenceur du milieu pour avoir cela


Private Sub Worksheet_Activate()
ton code....
End Sub

et à l'intérieur de cela tu pourras mettre le code que tu veux ou même faire appel à une macro d'un module.

Bon test


Pardon Sergio envoi quasi simultané
 

pascalF

XLDnaute Nouveau
Re : lancer une macro sur changement d'onglet

Merci pour vos réponses, j'avais trouvé la sub worksheet_Deactivate() mais le probleme, c'est que apparemment cela s'execute après la validation du changement d'onglet, ce qui fait que ma fonction de tri ne fonctionne plus sur la bonne feuille !

Y a t il un autre evenement de deactivate qui se produirait avant, alors que l'on est toujours sur la bonne feuille.

Question subsidiaire : Je n'arrive pas a trouver la base MSDN sur VBA, avez vous un lien j'utilise VBA 6.3
 

chris

XLDnaute Barbatruc
Re : lancer une macro sur changement d'onglet

Bonjour
Attention ne pas confondre activate qui se produit quand on arrive sur un onglet de déactivate qui se produit quand on quitte l'onglet.
Si ton tri doit avoir lieu lorsque tu quittes l'onglet, il faudait préciser dans le code la feuille concernée par le tri et ne pas utiliser activesheet.
 

pascalF

XLDnaute Nouveau
Re : lancer une macro sur changement d'onglet

Comment fait-on pour ajouter une référence à la bonne feuille ?

Code:
With Worksheets("Salariés")
    Dim plage As Range

    Set plage = Range("a2").CurrentRegion
    Set plage = plage.Offset(1, 0).Resize(plage.Rows.Count - 1, plage.Columns.Count)
    plage.Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    Names("liste_salariés").Delete
    Names.Add "liste_salariés", plage
        
    Set plage = Range("a2").CurrentRegion
    Set plage = plage.Offset(1, 0).Resize(plage.Rows.Count - 1, 1)
    plage.Select
    
    Names("salariés").Delete
    Names.Add "salariés", plage
  End With

j'ai ajouté le With Worksheets("Salariés") mais cela ne change rien.

de plus à quoi correspond le .CurrentRegion ( oui j'avoue j'ai pompé :D )

j'en profite pour re poser ma question subsidiaire
HTML:
Question subsidiaire : Je n'arrive pas a trouver la base MSDN sur VBA, avez vous un lien j'utilise VBA 6.3

Merci d'avance
 

pascalF

XLDnaute Nouveau
Re : lancer une macro sur changement d'onglet

Je viens a nouveau vous demander de l'aide, car je n'arrive pas a résoudre mon problème.

J'ai une macro de tri qui doit s'executer lorsque l'on quitte un onglet, j'ai donc une sub Worksheet_Deactivate() qui appelle la macro tri().

J'obtiens une erreur d'execution 1004 : La méthode Select de la classe Range a échoué.

Code:
With Worksheets("Salariés")
    Dim plage As Range

    Set plage = Range("Salariés!a2").CurrentRegion
    Set plage = plage.Offset(1, 0).Resize(plage.Rows.Count - 1, _
    plage.Columns.Count)
    plage.Select

l'erreur se produit sur la dernière ligne (plage.select)

Lorsque je lance la macro depuis l'onglet Salariés, celle-ci fonctionne parfaitement, mais lorsqu'elle est appelée par la sub deActivated => erreur

Je sais que l'erreur provient du fait que n'etant plus sur le bon onglet, il faut préciser que le traitement doit se faire sur l'onglet "Salariés", mais je ne sais pas comment faire !

Merci de votre aide.
 

pierrejean

XLDnaute Barbatruc
Re : lancer une macro sur changement d'onglet

bonjour pascalF

a mon avis un range select n'est valable qu'apres un sheets().select
il convient donc de selecter la feuile quitte a mettre un Application.screenupdating =false pour ne pas la voir apparaitre
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 184
Membres
103 152
dernier inscrit
Karibu