Lancement d'une macro lorsque je change de feuille

Anonyme
2022-04-14T10:05:49+00:00

Bonjour,

J'ai un classeur avec 4 feuilles. Sur la feuille 1, j'ai une BD. Dans cette feuille 1, j'ai une macro (qui n'utilise que les valeurs de la feuille 1 et ne fait des changements que sur la feuille 1) qui va sélectionner des enregistrements et me créer une liste qui me servira pour les 3 autres feuilles. À chaque changement sur la feuille 1 je peux lancer une macro en Private Sub Worksheet_Change, mais la macro va se lancer très souvent et elle dure plus de 2 secondes.

Ce que je voudrais, c'est que, lorsque je quitte la feuille 1, la macro se lance (l'équivalent de BeforeClose du classeur). Si je la lance à l'activation d'une nouvelle feuille la macro va revenir sur feuille 1 pour faire le traitement et donc je ne m'en sors plus.

J'espère avoir été assez clair,

Richard

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2022-04-19T16:55:22+00:00

Tu définis ce nom à au moins 3 endroits. Fais une rechercche sur Names.Add

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2022-04-18T17:27:11+00:00

Compris. Remplace la ligne :

.SetRange .Range("BA1:BJ" & NbActu)

par :

.SetRange Sheets("Adh").Range("BA1:BJ" & NbActu)

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

27 réponses supplémentaires

  1. DanielCo 107.7K Points de réputation
    2022-04-14T13:14:00+00:00

    Bonjour,

    Dans la plupart des cas, tu n'as pas à sélectionner la feuille :

    With Sheets("Feuil1")

    .range("A1)="aaa"
    
    'etc.
    

    End With

    Le "." devant Range signifie Sheets("Feuil1").Range

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2022-04-14T13:05:12+00:00

    Merci pour la réponse. J'ai besoin d'une précision. Vu que l'action de la macro a lieu dans la feuille 1, dans ThisWorkbook, dois-je rajouter la 1ère ligne en gras ?

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)

     **Sheets(1).Select**
    
     la macro pour la feuille 1
    

    End Sub

    Cordialement

    Richard

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Hecatonchire 53,870 Points de réputation Modérateur bénévole
    2022-04-14T12:29:21+00:00

    Bonjour

    Dans ThisWorkbook

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    +

    Private Sub Workbook_BeforeClose(Cancel As Boolean) si l'on quitte le classeur depuis la feuil1

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire