macro évenementielle SheetChange

teter

XLDnaute Junior
Bonsoir,

J'ai cherché de mon coté avant de poster mais je coince sur une macro événementielle toute bête qui devrait de déclencher à chaque changement de A1 dons mon onglet :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target = Cells(1, 1) And Cells(1, 1) <> "" Then
MsgBox "test"
End If
End Sub

Sur ma version d'excel, dans mon éditeur de macros, je ne peux "lancer" que l'objet Workbook et pas Worksheet, je ne sais pas si c'est important.

Si qq'un à une idée ?

Merci beaucoup

A+

Teter
 

Papou-net

XLDnaute Barbatruc
Re : macro évenementielle SheetChange

Bonsoir teter,

Effectivement, on ne peut pas lancer l'événement change d'une feuille manuellement : il faut absolument qu'une modification ou un recalcul survienne dans cette feuille.
Par contre, tu peux simuler son fonctionnement dans une macro que tu écris dans un nouveau module de code.

Cordialement.
 

Bigfish

XLDnaute Occasionnel
Re : macro évenementielle SheetChange

Salut,

Target est un objet range(en claire une ou plusieurs cellules), donc il faut le considerer comme tel. Ce qui veut dire que tu peux lui appliquer toutes les propriété d'un objet range comme la valeur, l'adresse etc.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address="$A$1" And Target.Value<>"" Then
MsgBox "test"
End If
End Sub

A+:)
 

teter

XLDnaute Junior
Re : macro évenementielle SheetChange

Bonjour et merci pour vos réponses,

Ce test fonctionne maintenant ... mais, et oui, il y toujours un souçi quand on veut aller plus loin.
Sur mon fichier (plusieurs feuilles dont ma feuille active "split") cette "macro" fonctionne aussi. Je voudrais lancer une macro "liste" existante à chaque changement de la valeur de ma cellule A1. Cette macro fonctionnait avant que je n'insère dans mon Workbook la macro événementielle ci dessus. Quand je la lance, j'ai maintenant le message :
"Erreur d"exécution 13: incompatibilité de type" et le débogage me met en jaune la ligne "If Target.Address="$A$1" And Target.Value<>"" Then " qui n'a rien à voir avec ma macro "liste".

Soit, si j'insère le code de ma macro "liste" à la place de MsgBox "test", ça devrait fonctionner, et bien non !
Voila cette macro :
"
Sheets("split").Range("P2:R2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents

Dim x As Range
Dim y As Range
Set y = Sheets("split").Range("A1")

Sheets("FFPOS1").Select
For Each x In Sheets("FFPOS1").Range("J2:" & Range("J65536").End(xlUp).Address)
If x = "VMOB" And x.Offset(0, -5) = y Then
Cells(x.Row, 11).Copy (Sheets("split").Range("P65000").End(xlUp).Offset(1, 0))
Cells(x.Row, 16).Copy (Sheets("split").Range("R65000").End(xlUp).Offset(1, 0))
Cells(x.Row, 64).Copy (Sheets("split").Range("Q65000").End(xlUp).Offset(1, 0))

End If
Next
Sheets("split").Activate
Range("Q1").Sort _
Key1:=Range("Q1"), _
Order1:=xlDescending, _
Header:=xlYes
"
Ici, même message d'erreur.
J'ai donc essayé ceci :
"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$B$6" And Target.Value <> "" Then
Call liste
End If
End Sub
"
Et même résultat !

Yaurait-il un super correcteur dans le secteur ?

Merci beaucoup car là, je coince sérieusement

A+

Teter
 

Discussions similaires

Statistiques des forums

Discussions
312 491
Messages
2 088 888
Membres
103 982
dernier inscrit
krakencolas