Déclencher une macro depuis une autre feuille

Résolu
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015 - Modifié par Whismeril le 28/01/2015 à 22:33
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015 - 1 févr. 2015 à 14:04
Bonjour,


Je suis sur excel 2007, J'ai un petit souci, j'ai une macro qui se déclenche lorsque je change la valeur d'une cellule.
Le problème est que cela ne fonctionne uniquement avec la feuille active.

Mon souci c'est de la faire se déclencher depuis le changement de la valeur d'une cellule d'une autre feuille (en cascade).

Ainsi en changeant la valeur de A5 de la feuille 1
Avec b6 feuille 2 = a5 feuille 1
la macro qui fonctionne sur la feuille 2, je voudrais pourvoir la déclencher depuis la feuille 1 (cellule A5).



La macro qui fonctionne débute ainsi:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Byte, R As Range
  If Cells(b6) <> "$B$6" Then Exit Sub
  Application.ScreenUpdating = 0
  Application.DisplayAlerts = 0
  With [A6:A36]
    .UnMerge
    .FormulaR1C1 = "=WEEKNUM(RC[1])"



Moi je voudrais pouvoir la déclencher depuis une autre feuille cellule A5


sachant que B6 en feuille 2 = A5 feuille 1

Pouvez vous m'aider
Merci par avance

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/01/2015 à 21:49
Bonjour,
et ?
Qu'est-ce qui t'empêche alors d'utiliser l'évènement Workbook_SheetChange de ton classeur ?
- Il concerne toutes les feuilles de ton classeur
- le paramètre sh concerne la feuille impactée
- le paramètre target concerne la plage impactée
Veux-tu bien t'y mettre, s'il te plait ?

PS : je te rappelle par ailleurs qu'un évènement Change n'est pas déclenché depuis telle ou telle autre feuille, active ou non, mais lorsqu'une plage de la feuille en cause est modifiée (pour quelque raison que ce soit, manuellement ou par code, depuis cette feuille ou depuis le code, quel que soit l'endroit où se situe ce code) !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 janv. 2015 à 22:56
Oui mais avec Workbook_SheetChange, la macro ne fonctionne pas

Montre ce que tu as écrit dans cet évènement (depuis la ligne Sub ... jusqu'à la ligne End Sub incluses, en exposant :
- l'erreur éventuellement dénoncée
- ce que tu veux que tes instructions fassent exactement.

De manière générale : "ne fonctionne pas" ne nous apprend rien ...
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 janv. 2015 à 23:40
Relis-moi, ce que je t'ai demandé, c'est ce que tu as écrit dans l'évènement Workbook_SheetChange et dont tu dis que cela ne "fonctionne pas" !
Par ailleurs :
En fait quand j'utilise Workbook_SheetChange, mes dates changent sur toutes les feuilles (normale), mais l'affichage des numéros de semaine lui ne change pas, rien ne ce passe.

Que sont ces "dates", qui "arrivent" ici sans que l'on sache ce que c'est ?
Comment "changent-elles sur toutes les feuilles" ? Par quels gestes ou code exactement ?

Et que sont ces "numéros de semaine" (qui "arrivent" également ici d'un seul coup, sans que l'on sache ce que c'est) ?

Evite de nous parler de "dates", "numéros de semaine", etc ... qui ne nous disent rien, à nous ! Parle-nous de cellules, de plages, etc ...
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 janv. 2015 à 01:10
Ah !
essayons de rester très techniques ===>>
ceci :
La cellule B5 de la feuille 2 = La cellule B5 de la feuille 1

accompagné de ceci :
C'est pour cela que lorsque je rentre une valeur (une date) dans la cellule B5 de la feuille 1, toutes les dates changent pour les deux feuilles

ne nous dit pas comment s'établit cette égalité.
Or, les choses (et donc le traitement) sont très très très différentes selon qu'elle s'établit par application d'une formule en B5 de la feuille 2 ou si elle s'établit par un code dans le module de code de la feuille 1.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 janv. 2015 à 11:09
Désolé, mais je ne peux te répondre VALABLEMENT qu'au vu de ta réponse précise à la question non moins précise que je t'ai posée.
Pour mémoire :
.... ne nous dit pas comment s'établit cette égalité.
Or, les choses (et donc le traitement) sont très très très différentes selon qu'elle s'établit par application d'une formule en B5 de la feuille 2 ou si elle s'établit par un code dans le module de code de la feuille 1.

1
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
Modifié par Whismeril le 28/01/2015 à 22:34
oups une petite erreur, la macro qui fonctionne débute ainsi:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Byte, R As Range
  If Target.Address <> "$B$6" Then Exit Sub
  Application.ScreenUpdating = 0
  Application.DisplayAlerts = 0
  With [A6:A36]
    .UnMerge
    .FormulaR1C1 = "=WEEKNUM(RC[1])"


--
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
28 janv. 2015 à 22:14
Bonjour,

Oui mais avec Workbook_SheetChange, la macro ne fonctionne pas.
Merci pour le conseil.
Merci de ton aide.
Je continue mes recherches et mon apprentissage du VBA (la route est encore longue je sais)
Merci pour ton aide.


--
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
28 janv. 2015 à 22:35
Bonsoir, ce serait bien aussi que tu apprennes à utiliser la coloration syntaxique.
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
28 janv. 2015 à 23:26
Voila la copie de la macro:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Byte, R As Range
If Target.Address <> "$B$6" Then Exit Sub
Application.ScreenUpdating = 0
Application.DisplayAlerts = 0
With [A6:A36]
.UnMerge
.FormulaR1C1 = "=WEEKNUM(RC[1]-1)"
For i = 6 To 36
If Cells(i, 1) = Cells(i + 1, 1) Then
If R Is Nothing Then
Set R = Union(Cells(i, 1), Cells(i + 1, 1))
Else
Set R = Union(R, Cells(i + 1, 1))
End If
R.Interior.ColorIndex = IIf(Cells(i, 1) Mod 2 = 0, 4, 8)
Else
If Not R Is Nothing Then R.Merge 0
Set R = Nothing
End If
Next
[A6].Interior.ColorIndex = IIf([A6] Mod 2 = 0, 4, 8)
.Value = [A6:A36].Value
.VerticalAlignment = xlCenter

End With
Application.DisplayAlerts = 1
End Sub


Je te joint également le fichier sur lequel je travaille, comme support.

La macro fonctionne très bien sur la feuille: Evolution Cde. de Fonds (je l'ai testé sur cette feuille).

ensuite je vais appliqué la macro sur chacune des feuilles (le dimensionnement des feuilles n'est pas le même, il faut que je l'ajuste pour chaque feuille - mais ça pas de problème).

Ce que je veux faire, c'est que toutes modifications de date (et donc de l'application de la macro (adaptée à chaque feuille)) , tous soit commandé par une et une seule cellule: la cellule B5 de la feuille "Crépy".


En fait quand j'utilise Workbook_SheetChange, mes dates changent sur toutes les feuilles (normale), mais l'affichage des numéros de semaine lui ne change pas, rien ne ce passe.
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
29 janv. 2015 à 00:02
Prenons deux feuilles du classeur (par exemple)
Sur la feuille 1
Les cellules b5 à b35 correspondent à toutes les dates du mois.
de même pour le feuille 2
Les cellules b5 à b35 correspondent à toutes les dates du mois.
La cellule B5 de la feuille 2 = La cellule B5 de la feuille 1

C'est pour cela que lorsque je rentre une valeur (une date) dans la cellule B5 de la feuille 1, toutes les dates changent pour les deux feuilles.

ensuite pour chacune des feuilles (feuilles 1 et 2), dans la colonne A (cellules A5 à A35) figure les numéros de semaine correspondant.

et c'est la qu'intervient la macro.
C'est à dire, je l'ai d'abord testée sur la feuille 2, effectivement dans la colonne A, sur la plage de cellules A5 à A35 s'affiche les numéros de semaine correspondant en défusionnant puis en refusionnant les cellules.

Ce que je veux faire, c'est que sur les deux feuilles, j'ai dans la Colonne A la macro qui s"applique sur les cellules A5 à A35, et que tout cela soit commander par une et une seule cellule: la cellule A5 de la feuille 1

--
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
29 janv. 2015 à 10:23
Il ne s'agit pas de rester technique, j'ai simplement expliqué étape par étape ce que voulais faire, et comment j'ai procédé.

Le procéder que j'ai utilisé n'est peut être pas le bon par rapport à ce que je veux faire, peut être est-il plus une contrainte dans le fonctionnement de la macro.

c'est pour cela que j'ai expliqué comment j'ai procéder pour atteindre le résultat escompter.

--
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
29 janv. 2015 à 11:26
Ce n'est pas grave, je vais continuer à chercher de mon côté la solution au problème de ma macro.

Il y a un truc qui coince dans ma macro avec ce que je veux lui faire faire, une erreur.

Je n'arrive pas à comprendre ce qui coince dans ma macro et à quel niveau ca coince.

Souvent quand on cherche une erreur, elle est juste là sous nos yeux on passe dessus et on ne la voit pas.

Merci quand même pour toute l'aide et conseil que tu m'as apporté.

--
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015
31 janv. 2015 à 19:33
Bonjour,

Le, problème de ma macro est résolue.

Je vous remercie pour l'aide et les conseils que vous m'avez apportez.

Néanmoins, le l'agressivité et le ton péremptoire utilisé par certains sont en contradiction total avec la charte du site (notamment sur le respect des personnes, .....).

Je cite:

" Montre ce que tu as écrit "

"Relis-moi, ce que je t'ai demandé"

"Evite de nous parler de "dates", "numéros de semaine", etc ... qui ne nous disent rien, à nous ! Parle-nous de cellules, de plages, etc ..."

"ne nous dit pas comment s'établit cette égalité. "

....

j'ai seulement expliqué comment j'ai procéder pour atteindre le résultat escompter.

Pour répondre valablement à ma question sujet de la discussion, il fallait lire la consigne (c'est de la lecture d'énoncé - on apprends cela à l'école primaire), tout était dans la consigne.

quand au parasite (pour ne pas le cité) qui est venu se greffer à la discussion en nous parlant de coloration syntaxique, il ferait mieux de s'attacher à l'essentiel et non à l'accessoire, ce n'est pas la couleur qui fera et fera fonctionner une macro.

Voila j'ai apprécié l'aide et les conseils que vous m'avez apporter, mais je déplore ces comportements qui ternissent le site, sa charte, et l'esprit convivial de partage, ....


Maintenant, modérateur que vous êtes faites ce que vous avez à faire, fermer mon compte si vous le voulez (ce qui est prévisible), mais donnez l'exemple et modérer vous vous même dans les fils de discussion.

Le sujet est maintenant clos, l'utilisateur a aussi le droit d'avoir un avis, d'avoir un ressenti, et de le dire, nous sommes dans une démocratie n'est ce pas (enfin il me semble).
....
--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
31 janv. 2015 à 20:00
Bien.
L' "utilisateur" a donc donné son avis
Il se trouve que ce n'est par exemple pas le mien.
Une seule réaction logique : je n'interviendrai plus dans tes discussions.
Bonne chance
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
Modifié par Whismeril le 31/01/2015 à 20:05
Bonsoir,

Concernant la coloration, j'avais déjà corrigé une fois ou deux tes sujets, en le signalant.
Ça améliore la lisibilité et par la la possibilité qu'un intervenant s'intéresse au sujet et y réponde.

Quand au exemples que tu sites, sortis de leur contexte et partiellement en plus, ça ne veut pas dire grand chose.

J'en prends un, et en entier:
ceci :
La cellule B5 de la feuille 2 = La cellule B5 de la feuille 1

accompagné de ceci :
C'est pour cela que lorsque je rentre une valeur (une date) dans la cellule B5 de la feuille 1, toutes les dates changent pour les deux feuilles
ne nous dit pas comment s'établit cette égalité.</block>

Ben oui, nulle part tu n'expliques si dans une des deux cellules tu as mis =FeuilleX!B5, ou si ta macro va écrire la même valeur dans ces deux cellule ou encore s'il s'agit d'une condition.....

Je constate que tu n'as répondu à aucune des interrogations d'Uc, interrogations qui lui aurait permis de cerner mieux ton problème et peut-être arriver à y répondre.

Donner des détails, c'est bien mais si tu me demandes l'heure et que je te réponds bleu, tu vas passer ton chemin non?

Il me semble que tu as surtout lu ce que tu voulais

Posté depuis CCM Live forum pour iPhone/iPad
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
31 janv. 2015 à 20:05
Ha et aussi, j'ai cliqué pour toi su le lien qui mets le sujet résolu, mais c'est comme pour la coloration, c'est l'utilisateur qui doit le faire
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 31/01/2015 à 20:37
Bonsour, Whismeril,
Je retiens surtout sa "propension" à "distribuer" des -1 à tour de bras sur des messages parfaitement justifiés, qui sont des questions encore plus justifiées, qui le gênent et auxquels il ne répond pas (peut-être parce qu'il ne les lit pas ou que leur compréhension-même lui échappe)...
Je préfère croire que la qualité de "débutant" qu'il avance sans cesse depuis plus de 30 mois maintenant traduit surtout le fait qu'il se "promène" et "grapille" des "soluces" , sans jamais s'y mettre ni avoir la volonté de le faire.
0
cs_Franck93150 Messages postés 31 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 17 février 2015 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
1 févr. 2015 à 11:42
Bonjour,

Comme je ne suis pas rancunier, et que je sais rester juste je remet les +1 (bien que les réponses elles restent à 0)

Tu m'as apporter ton aide et des conseils qui m'ont beaucoup aider, et pour lesquels je te remercie beaucoup.

par la suite, j'ai trouvé que certaine réponse étaient assez violente, je suis venu chercher de l'aide et pas pour me faire engueuler, du moins c'est la perception et le ressentis que j'en ai eu.

Peut importe qui, on n'est pas là pour ce faire un procès, cela n'a aucun intérêt, et cela n'a rien de constructif.

Pourtant je répondait bien à toutes tes questions, mais moi j'étais dans la finalité de mon projet, de ce que je voulais faire, et toi dans le raisonnement conceptuel de programmation en VBA.

Ce qui est évident pour vous, ne l'est pas forcément pour moi, et inversement.

Autrement dit nous parlions de la même chose, mais pas de la même manière.

Le VBA, je m'y met seul, parce que ça me plait, et je fais cela à mes heures perdues. Ce n'est pas mon métier, donc je ne suis pas expert.

Je ne viens pas souvent sur le site, je viens quand vraiment je coince sur quelque chose et dont je ne trouve pas de solution sur l'aide Microsoft et dans mes bouquins sur le VBA.

Je viens chercher de l'aide, partager, .... pour me faire engueuler (c'est le ressentis que j'ai eu).

Oui je m'estime débutant, car je n'ai pas votre niveau d'expertise.

Dans le fils de la discussion, si j'inverse les rôles et que je me mets à ta place, je vois que nous parlions de la même chose, mais pas de la mêmes manière.

Je ne suis pas rancunier, et je sais resté juste, je sais reconnaitre les choses, et reconnaître que tu m'as apporter ton aide, mais je sais aussi être franc et dire ma perception et mon ressentis.
0
Rejoignez-nous