Macro sur changement de valeur de cellule

Bonjour !

J'essaie de trouver une procédure genre 'événement' qui se déclenche quand on change la valeur d'une cellule/plage !

J'ai essayé:

Sub Workbook_SheetChange(ByVal Sht As Object, ByVal Emp1 As range)

MsgBox "Changé ! 1"

End Sub

et

Sub Worksheet_Change(ByVal Target As range)

MsgBox "Changé ! 2"

End Sub

sans succès ! quand j'entre un texte dans une cellule vide, aucune de ces procédures n'est déclenchée ! ni quand je force un recalcul (F9), ni quand je change une valeur dans une cellule forçant un calcul dans une autre cellule !?

Quelqu'un a des idées ?

Merci de vos lumières,

iBenny

Bonjour

Si les macros ne sont pas activées --> active les

Les événements sont bloqués --> Enregistre ton fichier, ferme le et ouvre le

Si pas encore ça, joins ton fichier en cause

Bonjour,

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Private Sub Worksheet_Change(ByVal Target As Range)

Cordialement.

Bonjour !

M MFerrand, le "Private" n'a rien à voir... désolé !

M Banzaï64, le problème ci-joint !

Objectif : ajouter/supprimer un nom dans la plage "Emp1" doit déclencher une macro quelconque !

Merci à vous,

iBenny

Bonjour

Tes macros ne sont pas au bon endroit

Sub Worksheet_Change(ByVal Target As range) doit être dans le module de la feuille

Sub Workbook_SheetChange(ByVal Sht As Object, ByVal Emp1 As range) doit être dans le module ThisWorkBook

A voir

Banzai64 a écrit :

Tes macros ne sont pas au bon endroit

Mille mercis Banzaï64 ! J'aurais pas cru !

Peux-tu m'expliquer pourquoi ça ne fonctionne pas dans le Module1 de la section 'Module' ? Je croyais que là, ça gérait tout !?

iBenny

Les évènements ne sont pas accessibles dans les modules standards...

J'aurai appris que les modification de noms des variables mises automatiquement par VBA n'a pas d'incidence...

Merci Banzai !

(J'aurais dû m'en douter malgré mes connaissances peu étendues sur les modules de classe, j'avais lu un chapitre sur la création d'évènements mais ça n'avait pas pénétré complètement encore.)

Bye !

MFerrand a écrit :

Les évènements ne sont pas accessibles dans les modules standards... Bye !

Mille mercis m. MFerrand !

iBenny

Dans le contexte d'une procédure testant chaque changement du contenu d'une cellule :

Sub Worksheet_Change(ByVal Emp As range)

je peux effectuer les opérations :

emp.row

emp.offset()

Is emp= range("Plage") Then

mais pas :

IsEmpty(emp)

IsEmpty(range(emp))

IsEmpty(range("emp"))

Is emp="" Then

Is emp=0 Then

Pourquoi ?

iBenny

Bonjour

iBenny a écrit :

Pourquoi ?

heuuuuu parce que

Ce ne sont que des règles de syntaxe, on est obligé de les utiliser si on veut un code fonctionnel

Mais le 1er "IsEmpty(emp)" est bon

A tester

Private Sub Worksheet_Change(ByVal emp As Range)
  If IsEmpty(emp) Then
    MsgBox "ok"
  End If
End Sub
Banzai64 a écrit :

Mais le 1er "IsEmpty(emp)" est bon

A tester

Bonjour Banzaï64 !

déjà testé : pas d'erreur de compilation, mais erreur de résultat ! que la cellule soit emplie ou vide, la fonction généreras toujours : Faux !

Merci,

iBenny

Bonjour

iBenny a écrit :

que la cellule soit emplie ou vide, la fonction généreras toujours : Faux !

Étonnant

Peux tu fournir ton fichier dans lequel tu as fais le test

Bonjour Banzaï64,

avant de joindre un fichier, j'ai découvert qqe chose que tu pourras tester :

IsEmpty(Target) fonctionne bien sur des cellules simples (uniques) mais pas sur une plage de deux cellules jointe ! Ça renvoi toujours "Faux" ! Tu vérifies !

Merci d'avance,

iBenny

Bonsoir

Tu changes les règles pour avoir raison

iBenny a écrit :

que la cellule soit emplie ou vide, la fonction généreras toujours : Faux !

Maintenant ce sont les cellules

Bonne continuation

Non : j'ai fait une erreur !

Pour moi c'était une cellule, mais j'avais oublié que c'était deux fusionnées ! Désolé...

Merci de votre aide,

iBenny

Rechercher des sujets similaires à "macro changement valeur"