Declenchement de macro

  • Initiateur de la discussion Emma
  • Date de début
E

Emma

Guest
Bonjour,

Quelqu 'un pourrait-il me dire comment executer une macro lorsque le contenu d'une cellule est modifié.
Merci
A+
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour Emma

Ceci peut être ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox 'Bonjour, je suis la cellule ' & Target.Address & 'Il est' & Time()
End Sub
Chaque changement de valeur de cellules fera apparaître le MsgBox.
Il est bien évident que le MsgBox sera remplacé par ta macro appelée. ;)
 

Eric C

XLDnaute Barbatruc
Re le forum
Re bonjour Emma

Donc, si la valeur de la Cell A1 est changée :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range('A1')) Is Nothing Then
MsgBox 'Bonjour, je suis la cellule ' & Target.Address & 'nous sommes le' & Date
End If
End Sub
;)
 

Eric C

XLDnaute Barbatruc
Re le forum
Re bonjour Emma

Donc, si la valeur de la Cell A1 est changée :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range('A1')) Is Nothing Then
MsgBox 'Bonjour, je suis la cellule ' & Target.Address & 'nous sommes le' & Date
End If
End Sub
;)
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Emma, Eric

Pour le cas de la détection du changement sur une seule cellule, l'Intersect méthode est un peu disproportionnée Eric

On peut simplement faire ceci
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = 'A1' Then
    MsgBox 'Bonjour, je suis la cellule ' & Target.Address(False, False) & ' nous sommes le ' &
Date
End If
End Sub

NB le Target.Address(False, False) est pour avoir l'adresse cellule sans la valeur Absolue '$', sinon par défaut il faudrait écrire :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = '$A$1' Then
    MsgBox 'Bonjour, je suis la cellule ' & Target.Address & ' nous sommes le ' &
Date
End If
End Sub

Pour la méthode Intersect, c'est plutôt, par exemple si on cherche à détecter tout changement de cellule sur une plage (Ici toute la Colonne 'A')
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range('A:A')) Is Nothing Then
    MsgBox 'Bonjour, je suis la cellule ' & Target.Address & ' nous sommes le ' &
Date
End If
End Sub


Bon Aprèm
@+Thierry
 

Eric C

XLDnaute Barbatruc
Re le forum
Re bonjour Emma, bonjour Thierry

  :whistle: Thierry, Oki c'est noté.





Tu sais pertinemment que pour ma part, utilisateur occasionnel de VBA le principal est que cela fonctionne.







Par ailleurs, je suis militaire et aime donc employer l'artillerie lourde.....LOL
 

fifi

XLDnaute Occasionnel
bonjour,
dsl je resortir ce post ^^
qui doit très bien marcher mais je crois qu'il ne fonctionne pas lorsque les cellules qui changes sont issues d'un TCD?et comme j'essyae de faire pour qu'une macro se déclenche suite à la selection d'une liste box d'un TCD ....
merci
 

Statistiques des forums

Discussions
312 615
Messages
2 090 244
Membres
104 465
dernier inscrit
Motuss