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 actif
 
Inscription : janvier 2007
Messages : 852
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 852
Points : 177
Points : 177
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 : 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 00
Vieux 03/02/2010, 12h40   #2
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,
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 00
Vieux 04/02/2010, 07h32   #3
Membre actif
 
Inscription : janvier 2007
Messages : 852
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 852
Points : 177
Points : 177
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 00
Vieux 04/02/2010, 09h44   #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
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 00
Vieux 05/02/2010, 07h00   #5
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
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
Qwazerty 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 12h51.


 
 
 
 
Partenaires

Hébergement Web