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, 11h35   #1
Membre expérimenté
 
Date d'inscription: janvier 2007
Messages: 562
Par défaut Macro sur changement valeur cellule?

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 :
Code :
=[Fichier.xls]ONGLET!$DB$27
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 :
Code :
Worksheet_Calculate
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)
Mais ça ne fonctionne pas pourtant la valeur de la cellule change...

Merci de votre aide.
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/02/2010, 12h40   #2
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
Par défaut

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é.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/02/2010, 07h32   #3
Membre expérimenté
 
Date d'inscription: janvier 2007
Messages: 562
Par défaut

Ok, mais si la valeur change lorsque le fichier est ouvert, la macro ne sera pas utilisée...
jojo86 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/02/2010, 09h44   #4
Membre Expert
 
Avatar de Fvandermeulen
 
Nom : Frédéric Vandermeulen
Date d'inscription: juillet 2007
Localisation: Bruxelles
Âge: 34
Messages: 1 414
Par défaut

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é.
Fvandermeulen est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 07h00   #5
Expert Confirmé
 
Avatar de Qwazerty
 
Date d'inscription: avril 2002
Localisation: (03) - Allier - Chez les fous ^^
Âge: 29
Messages: 1 563
Envoyer un message via MSN à Qwazerty
Par défaut

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 méchant Qwaz sur Msn ... inutile de me rajouter sur msn pour que je fasse votre boulot (les concernés sont au courant, les autres relax )
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 10h08.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.