Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 22h44   #1
Invité de passage
 
Fabrice Malnoy
Inscription : février 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Fabrice Malnoy

Informations forums :
Inscription : février 2010
Messages : 3
Points : 0
Points : 0
Par défaut Comment régler la priorité des événements ?

Bonjour,

J'ai un fichier excel avec une feuille principale et des feuilles annexes qui contiennent chacune une copie d'une colonne différente de la feuille principale. Dans ces feuilles annexes j'utilise l'événement worksheet_calculate() pour lancer des méthodes quand une colonne de la feuille principale a été mise à jour. J'utilise l'événement Worksheet_change(byval Target As Range) dans la feuille principale pour mémoriser l'adresse de la cellule qui vient d'être modifiée.
les événements des feuilles annexes sont parfois exécutées avant l'événement Worksheet_change(byval Target As Range), ce qui pose problème car l'adresse de la cellule modifiée n'a pas encore été mémorisée.
La question: comment régler les priorités entre l'exécution des événements ?
leonberg30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 23h08   #2
Membre Expert
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 279
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 279
Points : 2 377
Points : 2 377
Salut, à consulter http://www.cpearson.com/EXCEL/Events.aspx
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 09h17   #3
Invité de passage
 
Fabrice Malnoy
Inscription : février 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Fabrice Malnoy

Informations forums :
Inscription : février 2010
Messages : 3
Points : 0
Points : 0
Citation:
Envoyé par kiki29 Voir le message
Bonjour,

Je n'ai pas l'impression que l'ordre d'execution entre sheet soit géré. Il est écrit d'abord le WS, puis le WB puis l'APP. Mais que se passe-t-il quand des Events de plusieurs WS sont appelés en même temps ?
Comment gérer les priorités ??
leonberg30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 10h36   #4
Membre Expert
 
Avatar de Fvandermeulen
 
Frédéric Vandermeulen
Inscription : juillet 2007
Messages : 1 716
Détails du profil
Informations personnelles :
Nom : Frédéric Vandermeulen
Âge : 36
Localisation : Belgique

Informations forums :
Inscription : juillet 2007
Messages : 1 716
Points : 2 108
Points : 2 108
Salut,

Je suis pas certain d'avoir bien cerné l'enchainement des tes évènements, mais à priori, le "prioritaire" est le Worksheet_change.
Dans ce cas, place la ligne en début de code:
Code :
Application.enableEvents = false 'Empêche les évènements
Et réactive en fin de code avec
Code :
Application.enableEvents = true 'Empêche les évènements
Ce qui devrait lancer l'évènement lié au Calcul

A+
__________________
N'oubliez pas le si votre problème est solutionné.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 14h02   #5
Invité de passage
 
Fabrice Malnoy
Inscription : février 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Fabrice Malnoy

Informations forums :
Inscription : février 2010
Messages : 3
Points : 0
Points : 0
Bonjour,

J'ai essayé mais ca ne marche pas.
J'ai 5 feuilles:
- Feuille 1 : feuille principale qui contient l'Event Worksheet_change(byval Target As Range) pour mémoriser l'adresse de la cellule modifiée (j'utilise cet Event car on ne sait jamais si le user a appuyé sur la touceh Enter, flèche de droite ...)
- La feuille2 contient une copie de la colonne 10 de la feuille 1. Quand cette colonne est modifié, l'Event worksheet_calculate() est ensuite utilisé pour mettre à jour d'autres colonnes de la feuille1.
- La feuille3 contient une copie de la colonne 11 de la feuille 1. Quand cette colonne est modifié, l'Event worksheet_calculate() est ensuite utilisé pour mettre à jour d'autres colonnes de la feuille1.
- Et ainsi de suite ...
Le problème est que Wroksheet_Calculate de la feuille2 est parfois appelée avant Worksheet_change, ce qui pose le problème que l'adresse de la dernière cellule modifiée n'a pas été mise à jour.

J'espère que c'est un peu plus clair ...

je pourrais tout mettre dans worksheet_Change mais l'Event serait appelé pour les saisies dans toutes les colonnes.
leonberg30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h10.


 
 
 
 
Partenaires

Hébergement Web