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

Bonsoir Jacou

Ca fonctionne a merveille, j'ai également essayer la proposition de Si... ça fonctionne super bien.
C'est génial
Merci beaucoup à tous les deux pour votre aide.

Je vais maintenant passer à la dernière étape de mon projet, mais je ne vais pas vous embetter avec ça.
Je vous l'expose quand même (ça peut donner des idées de projet)

1) verrouiller les feuilles de calcul, le problème qui se présente quand la feuille est protéger, la macro ce met en erreur.
Mais j'ai résolu le problème, lorsque je change la valeur date, la feuille se déprotège, la macro s'applique, puis la feuille se reprotège.
Problème résolu, cela fonctionne très bien.

2) La ca devient plus compliquer: en fait, je voudrais que lorsque je change la valeur date (en B5 sur la feuille "Crépy") la macro gère les mois à 30 jours, les mois à 31 et le mois de février (bisextile); de sorte que les cellules des lignes vides (sur les mois à 30 jours par exemple - de même avec le mois de février) soient verrouillées.

Afin qu'il n'y ait que les dates de mois étudié.
si je prends le mois de février (mois bisextile), j'ai la date du 01/03 ; 02/03 ; 03/03/15 qui apparraissent, ce que je veux faire c'est qu'il n'y ait que les dates du mois de février par exemple.

Je vais commencer à réfléchir à comment je vais aborder la question, par quel biais et sous qu'elle forme (macro ou seulement des formules de mises en formes conditionnelles).

Merci beaucoup pour votre aide,
 

Jacou

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

bonsoir Franck,
Je te suggère de changer tes formules pour les dates à partir de la ligne 31 (en général).
au lieu de = B30 + 1 mettre =SI(B30="";"";SI(MOIS(B30+1)=MOIS(B30);B30+1;"")).
Ensuite il suffira que dans ta macro tu masques les lignes où la date est vide.
Bon courage
 

Franck60

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

Bonsoir Jacou

J'ai changé les formules (au lieu de =B30+1 j'ai placé une formule qui me permet de gérer les mois à 30 jours, les mois à 31 jours, et le mois de février (bisextile)) - Je l'ai tester sur un autre classeur ca marche à merveille, ensuite je l'ai intégrer dans mon classeur (sur la feuille Crépy pour commencer), mais....

Mais cela créer un conflit avec la macro dans l'exécution de sa boucle par rapport à la fusion et défusion des cellules.Pour les mois à 30 jours et le mois de février.
Les mois a 31 jours pas de souci.

Je Coince, peux-tu m'aider
 

Pièces jointes

  • Suivi - Crépy - Février 2015 - 1.xlsm
    214.6 KB · Affichages: 31

Jacou

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

Bonsoir Franck,
Première remarque : la formule que tu utilises pour gérer les mois de 28, 29 ou 30 jours est juste mais bien compliquée.
as-tu essayé celle que je te proposais dans le post #17 ?
ceci étant, avec ta formule comme avec la mienne, la cellule qui contient une "date" vide, provoque une erreur quand tu appliques la formule NO.SEMAINE (ou WEEKNUM) dans tes macros.
aussi je te suggère d'ajouter entre la ligne
FOR ... to ...
et la ligne
If Cells(i, 1) = Cells(i + 1, 1) Then
les instructions suivantes
If IsError(Cells(i + 1, 1)) Then Cells(i + 1, 1) = ""
ça devrait fonctionner.
bonne nuit
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 087 952
Membres
103 686
dernier inscrit
maykrem