Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Garder en mémoire une feuille sélectionnée pour revenir dessus

  • Initiateur de la discussion Initiateur de la discussion isa44
  • 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 !

isa44

XLDnaute Occasionnel
Bonjour , j'ai une question un peu compliquée mais c'est la seule idée que j'ai eu pour pour exécuter un contrôle sur une feuille avant de la quitter :

J'ai pensé quand je quitte la feuille B pour la feuille A , revenir sur la feuille B pour que se lancent les codes dans Worksheet_Activate. Une fois les codes exécutés sur la feuille B revenir sur la feuille choisie au dépard ( dans l'exemple feuille A)

Cela consisterais à garder en mémoire la feuille qui se désactive B et celle activée A.

C'est là que j'ai besoin de votre aide pour rédiger un code VBA.
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

Bonjour,

Cela est possible, en utilisant ou des objets feuilles ou des données variant.

Reste à savoir ce que tu stock dans ces feuilles afin de choisir la meilleure méthode.

Un exemple dans un fichier de tes données serait évidement un plus pour la résolution de ton problème .
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

Bonjour,

Si tu souhaites exécuter un contrôle sur la feuille B avant de la quitter, pourquoi ne pas utiliser simplement l’évènement Worksheet_Deactivate ?

A+
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

J'ai déja essayé Worksheet_Deactivate et cela ne fonctionne pas. Manuellement je réussi à faire ce que je veux en sélectionnant la feuille A puis feuille B et revenir sur A.

Mon classeur est très lourd , il contient de nombreuses données , et je veux contrôler qu'il n'en manque pas une en quittant la feuille B.

Je ne vois pas comment faire un début de code : mémorisant feuille B avant d'activer la feuille A , revenir sur la feuille B . Une fois les codes exécutés revenir sur la feuille choisie feuille A
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

Bonjour tout le monde,

Selon la façon dont tu a écris ton code dans la proc "Worksheet_Deactivate" tu peux avoir effectivement un résultat surprenant car le compilateur peux faire référence à un Range dans la feuille qui est devenue active alors que toi tu pense qu'il fait encore référence à la feuille que tu viens de quitter. Pour cette raison, il ne faut pas faire référence à des objets du style "ActiveSheet", "ActiveCell", "Range("A1"), etc... mais définir des variables explicitement :
Code:
Private Sub Worksheet_Deactivate()

    Dim Fe As Worksheet
    Dim Cel As Range
    
    Set Fe = Worksheets("Feuil1")
    Set Cel = Fe.Range("A1")
    'etc...

End Sub

Hervé.
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

Oui mais c'est inutile: le mot clé Me désigne l'objet qui contient le code. Donc ton Fe peut être remplacé tout simplement par Me
Cordialement.
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

Bonsoir j'ai essayé cela :

Code:
 Sub Worksheet_Deactivate()


Application.EnableEvents = False 'Bloque l'exécution des autres macros
Application.ScreenUpdating = False


     Dim Fe As Worksheet
    Dim Cel As Range
    
    Set Fe = Worksheets("A")
    Set Cel = Fe.Range("A1")


Sheets("B").Select

            Macro_Control 'Control les N°


Sheets("A").Select


Application.EnableEvents = True 'Remet l'exécution des autres macros
Application.ScreenUpdating = True
End Sub

Je reviens toujours sur la feuille B.

Alors que je voudrais faire un tour sur le feuille A , puis revenir en feuille B pour exécuter la macro_control sur la feuille B et ensuite revenir sur la feuille A
 
Re : Garder en mémoire une feuille sélectionnée pour revenir dessus

Mais… Prenez l'habitude de toujours préfixer vos Range et Cells du CodeName de la feuille. Parce que la méthode Range de l'objet Application (qui est d'ailleurs appelé "Global" dans le message qui dit qu'elle échoue, allez savoir pourquoi) cette méthode Range là c'est une vraie saloperie à coté de celle de l'objet Worksheet !
Alors vous n'aurez plus besoin que la bonne feuille soit active pour travailler dessus par macro !
P.S. Et, encore une fois la feuille dans laquelle se trouve votre Worksheet_Deactivate, et qui intervient probablement (c'est l'une des deux , la A ou la B probablement, mais je ne sais pas laquelle dans votre logique) et bien cette feuille la vous n'avez pas besoin de la déclarer : elle est connue sous le nom de "Me"
 
Dernière édition:
- 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

Discussions similaires

Réponses
5
Affichages
779
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…