|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 852 ![]() |
Bonjour à tous,
Voici mon souci, J'ai une cellule dans laquelle j'ai un lien vers une cellule d'un autre fichier, la formule est du type : J'aimerais executer un code lorsque la valeur de la cellule de l'autre fichier change Mais ce code ne dois s'executer que lorsque cette cellule change de valeur et pas les autres. Il faud donc tenir compte du "Range" qui est modifié. j'ai essayé avec la fonction : Mais comme a l'ouverture du fichier j'ai au moin une 50ène de lien qui sont réactualisé, le code est executé à chaque fois donc c'est super long. Je voudrais donc un code comme Calculate mais qui tienne compte du range, j'ai aussi essayé : Code :
Worksheet_Change(ByVal Target As Range) Merci de votre aide. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric VandermeulenInscription : juillet 2007 Messages : 1 716 ![]() |
Salut,
Sauf erreur de ma part le Worksheet_Change ne fonctionne qui si un changement manuel intervient => pas cool dans ton cas... Pas vraiment le temps de creuser mais un première piste pourrait être de stocker la valeur de cette cellule dans une feuille masquée par exemple. A l'ouverture, comparaison de cette valeur à la valeur de la cellule liée dans l'autre fichier (j'espère être clair...) Une autre option serait de désactiver la mise à jour automatique des liaison, de vérifier si les valeurs sont identiques entre les deux fichiers, si non, lancer la mise à jour des liens. A+
__________________
N'oubliez pas le si votre problème est solutionné.
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : janvier 2007 Messages : 852 ![]() |
Ok, mais si la valeur change lorsque le fichier est ouvert, la macro ne sera pas utilisée...
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Frédéric VandermeulenInscription : juillet 2007 Messages : 1 716 ![]() |
Là je te suis plus, quel fichier ouvert? Le source ou le cible?
Quoi qu'il en soit, avec la deuxième piste, rien t'empêche de relancer la "vérification" sur un autre évènement... A+
__________________
N'oubliez pas le si votre problème est solutionné.
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() |
Salut
A mon avis la 1er idée de Fvandermeulen me semble la plus adapté. Imagine cellule A1 lié a un autre fichier, la cellule A2 est utilisé comme cellule de teste. Dans ton code (Calculate) tu compares le contenu de A1 et A2: -si A2<>A1 le lien a été mis a jour: tu exécutes alors le code que tu souhaites voir être déclenché (une Sub ou une function), puis tu mets la valeur de A1 dans A2 -si A1=A2 pas eu de changement: la cellule A1 n'a pas été mise a jour lors de ce recalcul. Au 1er lancement A1 contient une valeur A2 est vide, donc ta sub/function est exécutée et A2 est mise a jour. Si A1 est mis a jour via l'autre fichier, A1 est diffèrent de A2 -> exécution sub/function + mise a jour A2 Si un autre cellule est recalculée mais que A1 n'a pas été modifié, le code n'est pas exécute. Attention quand même avec ce type de structure, la sub/function appelée ne doit pas être trop lourde si tu veux faire le teste sur un grand nombre de cellule, par ce que Calculate est appelé sur n'importe quel calcul de la feuille. A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com