Macro déclenchée sur changement du contenu du classeur
11 réponses
Old Jack
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de
réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que
le contenu du classeur change. J'ai utilisé les codes fournis dans
l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la
différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application
Private Sub Worksheet_Change(ByVal Target As Range)
col = numcol(Target.Address())
lig = numlig(Target.Address())
MsgBox ("Le contenu de " + col + "," + lig + " a changé")
End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule
Sub InitializeApp()
Set X.App = Application
End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de
compilation, type défini par l'utilisateur non défini', en bloquant sur
'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche.
Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de
main ^^ !
Merci d'avance !!!
--
cordialement,
Old Jack (http://scolamath.free.fr)
Si tu veux piéger l'évenement Change au niveau classeur tu mets ton code dans thisworkbook au niveau feuillle tu places le code dans feuil1 ou 2......
Salutations RaMa -- . "Old Jack" a écrit dans le message de news:
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que le contenu du classeur change. J'ai utilisé les codes fournis dans l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule Sub InitializeApp() Set X.App = Application End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de compilation, type défini par l'utilisateur non défini', en bloquant sur 'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche. Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de main ^^ !
Merci d'avance !!!
-- cordialement, Old Jack (http://scolamath.free.fr)
Bonsoir
Si tu veux piéger l'évenement Change
au niveau classeur tu mets ton code dans thisworkbook
au niveau feuillle tu places le code dans feuil1 ou 2......
Salutations
RaMa
--
.
"Old Jack" <nospam@free.fr> a écrit dans le message de
news:mn.2cda7d48b9ff49cc.7931@free.fr...
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de
réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que
le contenu du classeur change. J'ai utilisé les codes fournis dans
l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la
différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application
Private Sub Worksheet_Change(ByVal Target As Range)
col = numcol(Target.Address())
lig = numlig(Target.Address())
MsgBox ("Le contenu de " + col + "," + lig + " a changé")
End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule
Sub InitializeApp()
Set X.App = Application
End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de
compilation, type défini par l'utilisateur non défini', en bloquant sur
'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche.
Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de
main ^^ !
Merci d'avance !!!
--
cordialement,
Old Jack (http://scolamath.free.fr)
Si tu veux piéger l'évenement Change au niveau classeur tu mets ton code dans thisworkbook au niveau feuillle tu places le code dans feuil1 ou 2......
Salutations RaMa -- . "Old Jack" a écrit dans le message de news:
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que le contenu du classeur change. J'ai utilisé les codes fournis dans l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule Sub InitializeApp() Set X.App = Application End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de compilation, type défini par l'utilisateur non défini', en bloquant sur 'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche. Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de main ^^ !
Merci d'avance !!!
-- cordialement, Old Jack (http://scolamath.free.fr)
Old Jack
RaMA a couché sur son écran :
Bonsoir Bonsoir
Si tu veux piéger l'évenement Change au niveau classeur tu mets ton code dans thisworkbook au niveau feuillle tu places le code dans feuil1 ou 2......
Ok, donc, au lieu de placer les deux parties dans (respectivement) 'Modules/module1' et 'Modules de classe/Classe1', je place le code suivant :
Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
...dans 'Microsoft Excel Objets/ThisWorkbook'.
Mais quand je retourne dans mon classeur et que je met 'k' dans F6, par exemple, cela ne déclenche rien du tout (d'affichage du message '...a changé' que devrait m'afficher ma macro)
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
-- cordialement, Old Jack (http://scolamath.free.fr)
RaMA a couché sur son écran :
Bonsoir
Bonsoir
Si tu veux piéger l'évenement Change
au niveau classeur tu mets ton code dans thisworkbook
au niveau feuillle tu places le code dans feuil1 ou 2......
Ok, donc, au lieu de placer les deux parties dans (respectivement)
'Modules/module1' et 'Modules de classe/Classe1', je place le code
suivant :
Private Sub Worksheet_Change(ByVal Target As Range)
col = numcol(Target.Address())
lig = numlig(Target.Address())
MsgBox ("Le contenu de " + col + "," + lig + " a changé")
End Sub
...dans 'Microsoft Excel Objets/ThisWorkbook'.
Mais quand je retourne dans mon classeur et que je met 'k' dans F6, par
exemple, cela ne déclenche rien du tout (d'affichage du message '...a
changé' que devrait m'afficher ma macro)
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai
pas saisie.
--
cordialement,
Old Jack (http://scolamath.free.fr)
Si tu veux piéger l'évenement Change au niveau classeur tu mets ton code dans thisworkbook au niveau feuillle tu places le code dans feuil1 ou 2......
Ok, donc, au lieu de placer les deux parties dans (respectivement) 'Modules/module1' et 'Modules de classe/Classe1', je place le code suivant :
Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
...dans 'Microsoft Excel Objets/ThisWorkbook'.
Mais quand je retourne dans mon classeur et que je met 'k' dans F6, par exemple, cela ne déclenche rien du tout (d'affichage du message '...a changé' que devrait m'afficher ma macro)
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
-- cordialement, Old Jack (http://scolamath.free.fr)
RaMA
'exemple avec le code dans thisworkbook Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Fol = Sh.Name Sh.Activate adr = ActiveCell.Address col = ActiveCell.Column lig = ActiveCell.Row MsgBox Fol & " " & adr & " " & col & " " & lig & ActiveCell.Value End Sub
Rama -- . "Old Jack" a écrit dans le message de news:
RaMA a couché sur son écran :
Bonsoir Bonsoir
Si tu veux piéger l'évenement Change au niveau classeur tu mets ton code dans thisworkbook au niveau feuillle tu places le code dans feuil1 ou 2......
Ok, donc, au lieu de placer les deux parties dans (respectivement) 'Modules/module1' et 'Modules de classe/Classe1', je place le code suivant :
Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
...dans 'Microsoft Excel Objets/ThisWorkbook'.
Mais quand je retourne dans mon classeur et que je met 'k' dans F6, par exemple, cela ne déclenche rien du tout (d'affichage du message '...a changé' que devrait m'afficher ma macro)
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
-- cordialement, Old Jack (http://scolamath.free.fr)
'exemple avec le code dans thisworkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Fol = Sh.Name
Sh.Activate
adr = ActiveCell.Address
col = ActiveCell.Column
lig = ActiveCell.Row
MsgBox Fol & " " & adr & " " & col & " " & lig & ActiveCell.Value
End Sub
Rama
--
.
"Old Jack" <nospam@free.fr> a écrit dans le message de
news:mn.2ceb7d480b0b66e3.7931@free.fr...
RaMA a couché sur son écran :
Bonsoir
Bonsoir
Si tu veux piéger l'évenement Change
au niveau classeur tu mets ton code dans thisworkbook
au niveau feuillle tu places le code dans feuil1 ou 2......
Ok, donc, au lieu de placer les deux parties dans (respectivement)
'Modules/module1' et 'Modules de classe/Classe1', je place le code
suivant :
Private Sub Worksheet_Change(ByVal Target As Range)
col = numcol(Target.Address())
lig = numlig(Target.Address())
MsgBox ("Le contenu de " + col + "," + lig + " a changé")
End Sub
...dans 'Microsoft Excel Objets/ThisWorkbook'.
Mais quand je retourne dans mon classeur et que je met 'k' dans F6, par
exemple, cela ne déclenche rien du tout (d'affichage du message '...a
changé' que devrait m'afficher ma macro)
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai
pas saisie.
--
cordialement,
Old Jack (http://scolamath.free.fr)
'exemple avec le code dans thisworkbook Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Fol = Sh.Name Sh.Activate adr = ActiveCell.Address col = ActiveCell.Column lig = ActiveCell.Row MsgBox Fol & " " & adr & " " & col & " " & lig & ActiveCell.Value End Sub
Rama -- . "Old Jack" a écrit dans le message de news:
RaMA a couché sur son écran :
Bonsoir Bonsoir
Si tu veux piéger l'évenement Change au niveau classeur tu mets ton code dans thisworkbook au niveau feuillle tu places le code dans feuil1 ou 2......
Ok, donc, au lieu de placer les deux parties dans (respectivement) 'Modules/module1' et 'Modules de classe/Classe1', je place le code suivant :
Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
...dans 'Microsoft Excel Objets/ThisWorkbook'.
Mais quand je retourne dans mon classeur et que je met 'k' dans F6, par exemple, cela ne déclenche rien du tout (d'affichage du message '...a changé' que devrait m'afficher ma macro)
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
-- cordialement, Old Jack (http://scolamath.free.fr)
Daniel.M
Allo,
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
Tu dois utiliser Workbook_SheetChange() si tu te places au niveau du classeur. L'événement Worksheet_Change() appartient à ta feuille (si tu mettais le code au niveau de cette feuille).
Salutations,
Daniel M.
Allo,
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai
pas saisie.
Tu dois utiliser Workbook_SheetChange() si tu te places au niveau du classeur.
L'événement Worksheet_Change() appartient à ta feuille (si tu mettais le code au
niveau de cette feuille).
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
Tu dois utiliser Workbook_SheetChange() si tu te places au niveau du classeur. L'événement Worksheet_Change() appartient à ta feuille (si tu mettais le code au niveau de cette feuille).
Salutations,
Daniel M.
Jean-François Aubert
Salut Old Jack,
Ceci fonctionne si tu changes manuellement le contenu d'une cellule. Est-ce cela que tu recherches ?
A placer dans le ThisWorkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim col, lig col = Target.Column lig = Target.Row MsgBox ("Le contenu de la colonne " & col & ", ligne " & _ lig & " de la feuille " & Sh.Name & " a changé") End Sub
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Old Jack" a écrit dans le message de news:
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que le contenu du classeur change. J'ai utilisé les codes fournis dans l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule Sub InitializeApp() Set X.App = Application End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de compilation, type défini par l'utilisateur non défini', en bloquant sur 'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche. Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de main ^^ !
Merci d'avance !!!
-- cordialement, Old Jack (http://scolamath.free.fr)
Salut Old Jack,
Ceci fonctionne si tu changes manuellement le contenu d'une cellule.
Est-ce cela que tu recherches ?
A placer dans le ThisWorkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim col, lig
col = Target.Column
lig = Target.Row
MsgBox ("Le contenu de la colonne " & col & ", ligne " & _
lig & " de la feuille " & Sh.Name & " a changé")
End Sub
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Old Jack" <nospam@free.fr> a écrit dans le message de news:mn.2cda7d48b9ff49cc.7931@free.fr...
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de
réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que
le contenu du classeur change. J'ai utilisé les codes fournis dans
l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la
différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application
Private Sub Worksheet_Change(ByVal Target As Range)
col = numcol(Target.Address())
lig = numlig(Target.Address())
MsgBox ("Le contenu de " + col + "," + lig + " a changé")
End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule
Sub InitializeApp()
Set X.App = Application
End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de
compilation, type défini par l'utilisateur non défini', en bloquant sur
'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche.
Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de
main ^^ !
Merci d'avance !!!
--
cordialement,
Old Jack (http://scolamath.free.fr)
Ceci fonctionne si tu changes manuellement le contenu d'une cellule. Est-ce cela que tu recherches ?
A placer dans le ThisWorkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim col, lig col = Target.Column lig = Target.Row MsgBox ("Le contenu de la colonne " & col & ", ligne " & _ lig & " de la feuille " & Sh.Name & " a changé") End Sub
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Old Jack" a écrit dans le message de news:
Bonjour,
Certainement, la question a déjà été posée, mais je n'ai pas trouvé de réponses ni dans la FAQ, ni dans ce forum.
Comme le titre l'indique, je voudrais que ma macro se déclenche dés que le contenu du classeur change. J'ai utilisé les codes fournis dans l'aide, mais ça marche po :'(.
Dans le 'module de classe' (d'ailleurs, j'aimerais comprendre la différence entre module de classe et module), j'ai mis ça :
Public WithEvents App As Application Private Sub Worksheet_Change(ByVal Target As Range) col = numcol(Target.Address()) lig = numlig(Target.Address()) MsgBox ("Le contenu de " + col + "," + lig + " a changé") End Sub
Dans le 'module', j'ai mis ça :
Dim X As New EventClassModule Sub InitializeApp() Set X.App = Application End Sub
Quand je change le contenu d'une cellule, il me dit 'Erreur de compilation, type défini par l'utilisateur non défini', en bloquant sur 'X As New EventClassModule'
Comme c'est la première fois que je tente ce genre de truc, je sèche. Si quelqu'un avait l'infinie gentillesse de me donner un p'tit coup de main ^^ !
Merci d'avance !!!
-- cordialement, Old Jack (http://scolamath.free.fr)
Old Jack
Daniel.M avait prétendu :
Allo,
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai pas saisie.
Merci !
-- cordialement, Old Jack (http://scolamath.free.fr)
Daniel.M avait prétendu :
Allo,
Peux-tu m'éclairer ? Je pense qu'il y a une notion de base que je n'ai
pas saisie.
Merci !
--
cordialement,
Old Jack (http://scolamath.free.fr)