lancer une macro sur changement d'onglet

  • Initiateur de la discussion Initiateur de la discussion pascalF
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

pascalF

Guest
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 modification par un modérateur:
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
@+
 
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é
 
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
 
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.
 
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é 😀 )

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
 
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.
 
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
 
Re : lancer une macro sur changement d'onglet

merci pour ta réponse pierrejean, j'ai résolu mon probleme en supprimant le plage.select et en remplaçant le selection.sort par plage.sort.

Merci encore.

pascalF
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
249
Didierpasdoué
D
Réponses
4
Affichages
481
Retour