Erreur compilation Worksheet_Change

Fermé
rorolidalgo - 23 oct. 2013 à 11:21
 rorolidalgo - 23 oct. 2013 à 17:24
Bonjour,
J'ai le code suivant sur une feuille d'un tableur:
Private Sub Worksheet_Change()
maMacro
End Sub
En gros, je souhaite que lorsque la valeur d'une cellule (C14) dans ma feuille change, la macro maMacro se lance.
Cette cellule C14 est liée à un classeur externe. Lorsque je modifie le classeur externe, C14 est modifiée mais la Sub Worksheet_Change ne se lance pas. Et quand je la lance manuellement, elle bugge et j'obtiens "Erreur de compilation: La déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure de même nom".
Quelqu'un saurait-il m'aider svp?

2 réponses

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
23 oct. 2013 à 11:29
Bonjour,

C'est normal :

quand tu utilises une macro du style Private Sub Worksheet_Change()
si tu appelles une macro, cette dernière ne doit travailler uniquement que sur la feuille en question.

Si la macro que tu appelles fais appel à une autre feuille ou à un autre classeur, ca ne marchera pas.
0
rorolidalgo
23 oct. 2013 à 13:35
C'est bizarre ce que tu me dis là, car par exemple, j'ai cette même macro (qui est dans module1, donc pas dans la feuille) qui se déclenche, avec WS_activate ou WS_calculate mais pas WS_change. Pourquoi????
Merci
0
rorolidalgo
23 oct. 2013 à 14:19
En fait, en rajoutant
(ByVal Target As Range)
après
Change
, la Sub ne bugge pas.
En revanche, elle ne se déclenche pas: lorsque ma cellule change de valeur (car elle est égale à la cellule d'un fichier d'entrée dont je saisis une valeur différente), je pensais que la Sub _Change s'activerait. Est-ce que c'est une autre procéduren ou bien je l'écris mal?
Merci d'avance.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
23 oct. 2013 à 15:11
re,

si tu ajoutes (byval target as range), il faut que tu précises quand ta maco dois s'papliquer.
Je m'explique si tu veux qu'elle sedéclenche dès modif de B3, il faut écrire :

sub wroksheet_change(ByVal Target As Range)

if target.row = 3 and target.column = 2 then 'autrement dit si on touche à B3
call macro1
end if
end sub
0
rorolidalgo
23 oct. 2013 à 16:56
Merci, mais ça ne fct pas....grrrr :-(
Dans ma feuille, C14=+'[Données Entrée.xlsm]Feuil1'!$A$1
Quand je saisis une nouvelle valeur dans A1 du fichier Données Entrée la cellule est donc modifiée, et devrait lancer la macro, mais non.
En code j'ai mis:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 14 And Target.Column = 3 Then

Call Detail_Estimatif
End If
End Sub
La valeur de ma cible change, mais la macro n'est pas appelée. Pourquoi BdM?????
Si j'enlève le If/End if, et que je vais dans la feuille en question, et que je saisis ni'mporte quoi dans n'importe quelle cellule, puis "Entrée", alors le "Change" est capté et la macro se lance.
En résumé, une saisie avec Entrée fct, une modif de valeur due à une liaison ne donne rien.
Une autre idée?
Merci beaucoup
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
23 oct. 2013 à 17:04
Pardon, c'est moi qui avais mal compris et là, je peux pas t'aider.
Peut être qu'effecitvement, les modifications avec liaison ne permettent pas le lancement de la macro. Je ne maîtrise pas les liaisons et vu les problèmes engendrés par elles, j'évite un max.

va falloir que tu attendes d'autres réponses
0
rorolidalgo
23 oct. 2013 à 17:24
ok je te remercie bien qd mm
0