Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 03/06/2010
Messages:
21
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 08-06-2010 14h32
Bonjour à tous,
Je reviens à la charge avec mes questions de débutant ;) Suite à un calcul, la valeur de la cellule C1 de la feuille "Feuil1" est modifiée. Lorsque cette cellule est modifiée, le code ci dessous affiche un message: "coucou" ;) Ce que je voudrai faire, c'est qu'à la place du message sympathique "coucou" se lance une Macro. J'ai essayé de remplacer Msgbox par Call Macro1, application.run "macro1" et d'autres syntaxes, la macro se lance mais un message d'erreur apparait et fait planter Excel: "la méthode select range a échoué" ou "espace pile insuffisant" etc. Quelle ligne de code faudrait-il mettre à la place de Msgbox pour lancer une Macro? Cette fonction semble etre très utile pour détecter le changement de valeur d'une cellule suite à un calcul, apparemment avec la fonction Target ça ne marche pas, sauf si on modifie la cellule manuellement, ce qui n'est pas le cas ici. Public ValPrec Private Sub Worksheet_Calculate() Verif End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Intersect(Target, Range("c1")) Is Nothing Then Exit Sub Verif End Sub Private Sub Verif() If VarType(Range("c1")) = VarType(ValPrec) Then _ If ValPrec = Range("c1") Then Exit Sub MsgBox "coucou" ValPrec = Range("c1") End Sub Private Sub Workbook_Open() Feuil1.ValPrec = Feuil1.Range("c1") End Sub Merci à tous pour votre aide! |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 09/01/2008
De Montréal, Québec
Messages:
463
Système d'exploitation: PC Version Excel utilisée: 97 à 2016 |
Posté le : 08-06-2010 15h43
Bonjour lunebleue91, Mireille, Didier, le forum,
J'ai modifié le code présenté ainsi : ' Cette directive est requise dans tous les modules. À noter que l'écriture originale de la portion de code If VarType(Range("c1")) = VarType(ValPrec) Then _ Sub Perlinpinpin() Si nous développons cette ligne en : Sub Perlinpinpin() Noter dans le code original le caractère de soulignement "_" à la fin de la ligne : If VarType(Range("c1")) = VarType(ValPrec) Then _ Avant de poursuivre il est tout à fait indiqué de lire le document suivant : Cours Excel VBA Cordialement, Guy
Edité par Guy le 08/06/2010 21:05:35
|
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 03/06/2010
Messages:
21
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 08-06-2010 16h20
Bonjour,
merci d'avoir pris le temps d'expliquer toutes les étapes et d'avoir corrigé le code! Si je te suis bien, il va falloir créer à présent à la suite de ton code, un module Modproc qui va permettre au programme d'ouvrir la macro voulu? Comme tu le vois, je suis un grand débutant, ton lien est très bien mais il va falloir des semaines pour aborder tout ça. Je compte bien le faire car c'est très intéressant et on évite aussi comme ça d'embeter tout le monde :):) Merci encore pour ta disponibilité! |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 09/01/2008
De Montréal, Québec
Messages:
463
Système d'exploitation: PC Version Excel utilisée: 97 à 2016 |
Posté le : 08-06-2010 16h34
Oups,
Désolé j'ai oublié le code pour l'exécution : Option Explicit Si tu laisses le nom par défaut, Module1 par exemple, il suffira de corriger en conséquence l'appel de la procédure. Cordialement, Guy |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 03/06/2010
Messages:
21
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 08-06-2010 17h40
merci pour la suite ;) cependant, désolé pour le niveau de mes questions, mais comment faire pour que le nom du module porte le nom modProc? doit-on écrire: Private sub modProc()? puis la fin de ton code? Ou alors, pourrais tu poster l'intégralité du code s'il te plait? ça sera un peu plus simple pour moi ;) Car là, il me met "erreur de compilation, variable non définie" pour modProc. Encore désolé et merci pour ta patience! |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 03/06/2010
Messages:
21
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 08-06-2010 17h46
et puis aussi dernière petite requete, que dois-je mettre à la place de Msgbox "coucou" pour lancer la "macro1", simplement call "macro1" par exemple?
merci encore ;) |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 09/01/2008
De Montréal, Québec
Messages:
463
Système d'exploitation: PC Version Excel utilisée: 97 à 2016 |
Posté le : 08-06-2010 18h42
Bonjour,
Effectivement j'ai forcé un peu avec le nom complet des procédures. Quel que soit le nom du module il suffit de poser ExecutionC1 au lieu de modProc.ExecutionC1. Citation :
Non. La procédure ExecutionC1 est là pour recevoir le code que tu veux exécuter. Suffit d'effacer MsgBox "Coucou" et de remplacer par le code que tu désires. Petit classeur joint. Cordialement, Guy |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 03/06/2010
Messages:
21
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 08-06-2010 19h11
Merci pour le fichier ;)
Mais désolé, ça ne semble pas fonctionner... En fait, le code tel quel du fichier joint n'affiche plus la fenetre "coucou" lorsque C1 est modifié. J'ai fait un test (juste pour voir) en remplaçant cette ligne de code: If VarType(Range("c1")) = VarType(ValPrec) And Not (ValPrec = Range("c1")) Then par l'ancienne et la fenetre "coucou" réapparait bien à chaque modification de C1. Avec ce code modifié, par contre toujours le meme probleme du lancement de la macro, dans le module modproc, lorsque je remplace Msgbox par Macro1: Option Explicit Public Sub ExecutionC1() ' Placer ici le code à exécuter en lieu et place du message "coucou" macro1 'Ou call macro1 End Sub les messages de bug réapparaissent et je retourne au meme point qu'au premier message :( Première question: peux tu tester le fichier que tu m'as joint pour voir si ça marche chez toi et que tu vois la fenetre "coucou" s'afficher à chaque changement de C1? Seconde question: qu'elle est la ligne de commande exacte qu'il faut marquer à la place de Msgbox pour lancer une macro dont le lom est "Macro1"? merci infiniment pour ta patience! cordialement |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 09/01/2008
De Montréal, Québec
Messages:
463
Système d'exploitation: PC Version Excel utilisée: 97 à 2016 |
Posté le : 08-06-2010 19h27
Re-bonjour,
Guy |
|
|
Re: Executer une macro suite à un calcul avec worksheet calculate | ||
---|---|---|
Inscription: 03/06/2010
Messages:
21
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 08-06-2010 20h19
Re ;)
merci encore, mais malheureusement il ne se passe toujours rien quand on modifie C1 :( La fenetre ne s'affiche pas... ça marche bien chez toi? cordialement ;) |
|
|
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
Qui consulte actuellement ce sujet ?
2 Utilisateur(s) anonymes