executer une macro depuis changement de valeur de cellule d'une autre feuille

Franck60

XLDnaute Nouveau
Bonjour,

Je suis sur excel 2007.

J'ai une macro qui fonctionne très bien sur la feuille active. Lorsque je change la valeur de la cellule B1 (par exemple) la macro fonctionne à merveille.

Maintenant dans mon classeur, j'ai 2 feuilles. ma macro s'applique sur la feuille 2. Ce que je cherche à faire, c'est que lorsque je change la valeur de la cellule A1 de la feuille 1, cela change (par égalité: A1 feuille1=B1 feuille 2) et que la macro s'applique.

En fait l'action que je faisais sur la feuille 2 (cellule B5) au début, je veux la déporter et la faire depuis la cellule A1 de la feuille 1

Pouvez vous m'aidez.
Merci par avance.
 

Franck60

XLDnaute Nouveau
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonjour,

Mon souci est que j'ai une macro que j'avais testée sur un classeur ayant une seule feuille, maintenant je voudrais l'intégrer dans un classeur ayant plusieurs feuille, afin qu'elle puisse agir sur chacune des feuilles.

La macro est actuellement sur la feuille: "Evolution Cde"

Toutes les feuilles sont liées entre elles (par égalité) à partir de la cellule A5 de la feuille: "Crépy"
Ce que je cherche à faire, c'est que la macro s'applique à toutes les feuilles (sachant qu'elles ont un dimensionnement différents puisque pas les mêmes données sur chaques feuilles.

En fait la macro fonctionne très bien lorsque je rentre manuellement la date. Je voudrais transposer cette saisie manuelle à partir de la cellule A5 de la feuille: "Crépy"

Pouvez vous m'aidez
Merci Par Avance.
 

Pièces jointes

  • Classeur 2.xlsm
    186.1 KB · Affichages: 62
  • Classeur 2.xlsm
    186.1 KB · Affichages: 72
  • Classeur 2.xlsm
    186.1 KB · Affichages: 72

Jacou

XLDnaute Impliqué
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonsoir Franck,
la macro dans ta feuille "Evolution Cde" fonctionne, mais elle n'est pas activée si en B6 tu mets la formule "=Crépy!B5" bien que la valeur de cette dernière cellule soit bien mise à jour.
J'ai modifié la macro de la feuille "Crépy" de façon qu'à la fin la première date de chaque feuille soit modifiée;
For Each sh In Sheets If sh.Name <> "Crépy" Then
sh.Activate
On Error Resume Next
ActiveSheet.Cells.Find(What:="Date", After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Select
ActiveCell.Offset(1, 0).Formula = "=Crépy!B5"
End If
Next

de la sorte, la cellule B6 de la feuille
"Evolution Cde" est modifiée et la macro est alors activée.
J'espère que cela résoudra ton souci.
Jacou
 

Pièces jointes

  • Classeur Franck60.xlsm
    196.6 KB · Affichages: 77

Franck60

XLDnaute Nouveau
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonjour Jacou,

Je te remercie beaucoup, cela fonctionne a merveille, et correspond tout à fait à ce que je voulais faire.

J'ai une petite question, Est-ce que je peux "l'étendre" de la même manière pour que cela fonctionne aussi sur toutes les autres feuilles du classeur.
 

Jacou

XLDnaute Impliqué
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonsoir Franck, bonsoir le forum
c'est déjà le cas : Pour le moment, le code que j'ai ajouté sur ta feuille "Crépy" (et que j'ai indiqué dans le post #5) active chaque feuille du classeur, puis on cherche la cellule qui contient l'intitulé "Date" et on écrit dans la cellule immédiatement en-dessous la formule "=Crépy!B5". Tu peux donc inclure sur chacune de ces feuilles une macro similaire à celle de la feuille "Crépy" ou de la feuille "Evolution Cde" (macro "Worksheet_Change").

Il faudrait d'ailleurs modifier le code de la macro de la feuille "Crépy" comme suit
For Each sh In Sheets If sh.Name <> "Crépy" Then
sh.Activate
On Error Resume Next
ActiveSheet.Cells.Find(What:="Date", After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Select
If Selection.Value = "Date" Then
ActiveCell.Offset(1, 0).Formula = "=Crépy!B5"
End If
End If
Next
Sheets("Crépy").Activate



Cela ajoute un test pour ne mettre la formule
"=Crépy!B5" que si on trouve bien une cellule dont la valeur est "Date".

Bonne soirée

 
Dernière édition:

Franck60

XLDnaute Nouveau
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonjour Jacou

Oui, je m'en suis rendu compte après, mais il y a un bug
Les feuilles n'ont pas toutes le mêmes dimensionnement, c'est à dire: sur certaines feuilles la valeur date se situe en B6, sur d'autres en B5, sur d'autres en C9, .....
Et je n'arrive pas à la faire fonctionner.

Alors j'ai contourné le problème en mettant toutes les feuilles sur le même dimensionnement, avec la valeur date en B6, et cela fonctionne à merveille.
c'est super.
Merci beaucoup
 

Franck60

XLDnaute Nouveau
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Re Bonjour Jacou

C'est super, cela fonction à merveille quand les feuilles ont toutes le même dimensionnement (classeur 2)
Mais cela bug quand elles ont un dimensionnement différents (Classeur 3)

Lorsque je change la date sur le classeur 3, excel bug, et se ferme.

Ma curiosité me pousse a chercher a comprendre pourquoi.
 

Pièces jointes

  • Classeur 3.xlsm
    196.6 KB · Affichages: 54
  • Classeur 2.xlsm
    196.5 KB · Affichages: 53
  • Classeur 3.xlsm
    196.6 KB · Affichages: 51
  • Classeur 2.xlsm
    196.5 KB · Affichages: 49
  • Classeur 3.xlsm
    196.6 KB · Affichages: 46
  • Classeur 2.xlsm
    196.5 KB · Affichages: 45

Jacou

XLDnaute Impliqué
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonsoir Franck,
Je pense que cela vient du fait que la macro sur la feuille A tourne en boucle.
J'ai fait une erreur quand je t'ai dit dans le post #7
Tu peux donc inclure sur chacune de ces feuilles une macro similaire à celle de la feuille "Crépy" ou de la feuille "Evolution Cde" (macro "Worksheet_Change").
En fait j'aurais dû dire
Tu peux donc inclure sur chacune de ces feuilles une macro similaire à celle de la feuille "Evolution Cde" (macro "Worksheet_Change").
La partie de la macro sur la feuille "Crépy"
For Each sh In Sheets If sh.Name <> "Crépy" Then
sh.Activate
On Error Resume Next
ActiveSheet.Cells.Find(What:="Date", After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Select
If Selection.Value = "Date" Then
ActiveCell.Offset(1, 0).Formula = "=Crépy!B5"
End If
End If
Next
Sheets("Crépy").Activate
ne doit figurer que dans la macro de la feuille "Crépy" et à la fin (pas au début comme tu l'as fait dans les macros des feuilles A, B, ... du classeur3). Sinon tu vas provoquer un bouclage sans fin des macros et Excel va planter.

Je ne sais pas si j'ai été assez limpide.
Bonne soirée
Jacou
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

salut

à tester : toutes les feuilles concernées sont initialisées à leur ouverture avec la première date de la première mais elles sont aussi indépendantes les unes des autres.
 

Pièces jointes

  • MultiChangeColonneOnglet.xlsm
    196.4 KB · Affichages: 45
Dernière édition:

Jacou

XLDnaute Impliqué
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

bonjour Franck, bonjour Si..., bonjour le forum
c'est astucieux et ça permet de ne pas avoir à répéter les macros pour chaque feuille.
Ne faudrait-il pas ajouter à la fin de la macro Workbook_SheetChange une instruction Application.ScreenUpdating = 1 ?

Bonne journée
 

Si...

XLDnaute Barbatruc
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

re

Ne faudrait-il pas ajouter à la fin de la macro Workbook_SheetChange une instruction Application.ScreenUpdating = 1 ?
ce n'est pas toujours obligatoire (comme ici d'ailleurs).

Il y a d'autres évènements qu'on peut traiter ainsi pour éviter les répétitions !
Regarde la pièce jointe 935001
 

Pièces jointes

  • Evènements.jpg
    Evènements.jpg
    44.4 KB · Affichages: 56

Franck60

XLDnaute Nouveau
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Bonjour Jacou

Ca fonctionne à merveille, j'ai réussi à solutionner le problème du classeur 3.

En fait cela fonctionnait très bien sur toutes les feuilles ayant un dimensionnement en B6 - (Cells(i,1))
Pour les feuilles ayant le changement de la valeur date sur une autre cellule (par exemple: en D5; en C9), cela bloquait
J'ai alors modifié la valeur:

Pour les cellules ayant un changement de la valeur date en D5, j'ai modifié toutes les valeurs cells(...), en cells(i,3), puisque je veux qu'il agisse sur la colonne C (troisième colonne).

J'ai fait de même avec les feuilles où le changement de la valeur date se produisait en C5 ou C9, j'ai modifié toutes les valeurs cells(.....), en cells(i,2), puisque je veux qu'il agisse sur le colonne B (deuxième colonne).

Après avoir effectuer ces modifications, le classeur 3 (classeur ayant des feuilles avec des dimensionnement différents, pour lequel la valeur date changeait sur des cellules ayant une adresse différents), celui-ci fonctionne à merveille.

Je te le joint avec mon message. (Classeur 3 - corrigé)

C'est super
Merci beaucoup
 

Pièces jointes

  • Classeur 3 - Corrigé.xlsm
    195.9 KB · Affichages: 37

Jacou

XLDnaute Impliqué
Re : executer une macro depuis changement de valeur de cellule d'une autre feuille

Re Franck60,
Content que tu aies réussi à faire tourner ton classeur 3.
Mais je t'invite à examiner attentivement la proposition de Si... ; elle me semble bien plus performante et simple puisqu'elle s'applique à toutes les feuilles ayant une cellule "Date" et une cellule "Plus élevé" quelle que soit leur emplacement, et que l'on n'est pas obligé de dupliquer et adapter la macro pour chacune des feuilles
bonne fin de journée
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia