Combiner 2 événements

Bonjour le forum,

J'ai besoin de votre aide, après maintes recherches et arrachage de cheveux, pourriez-vous m'aider à résoudre ce petit dilemne :

Je souhaite utiliser 2 "worksheet_change" sur la même feuille :

Private Sub ActiveSheet_Change(ByVal Target As Range)

If Target.Address = "T6" And Target.Value = "" Then Macro1

End Sub

Et

Private Sub WorkSheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("C6")) Is Nothing Then
ActiveSheet.Name = Range("C6")
End If
End Sub

J'ai beau tenter différentes syntaxes, impossible de les faire cohabiter...

Merci d'avance;

5test-cpe.xlsm (143.52 Ko)

Bonjour

Private Sub WorkSheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("C6")) Is Nothing Then
     ActiveSheet.Name = Range("C6")
elseif Target.Address = "T6" And Target.Value = "" Then 
     Macro1
End If
End Sub

Bonjour,

Merci pour le retour, mais ne fonctionne pas sur la 2ème partie :

"Incompatibilité de type"

Une idée ?

Bonjour,

Address renvoie par défaut une adresse en référence absolue, soit $T$6, donc tester si l'addresse est "T6" ainsi sera toujours FAUX...

De plus, T6 est fusionnée avec d'autres cellules, donc Address ne renverra jamais $T$6 !

Il faut tester :

If Target.Cells(1, 1).Address = "$T$6" Then

Cordialement.

Re

Bien vu !

Je n'ai pas ouvert le fichier et me suis demandé pourquoi ne pas utiliser Intersect sur le 2de condition.

Voulant rester au plus près du code initial, je n'ai pas percuté sur l'adresse...

Effectivement cela fonctionne, merci.

Du coup est-ce que vous pensez qu'il serait judicieux d'enlever le "address" et le remplacer par Range ? Notamment si je veux tester n'importe quelle celulle de la colonne ?

Re

Utilise Intersect : cela doit marcher même sur cellules fusionnées...

Edit : mais pas le test de la valeur

Private Sub WorkSheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Range("C6")) Is Nothing Then
        ActiveSheet.Name = Range("C6")
    ElseIf Not Intersect(Target, Range("T6")) Is Nothing Then
     If Target.Cells(1, 1).Value = "" Then Macro1
    End If
End Sub
78chris a écrit :

Re

Utilise Intersect : cela doit marcher même sur cellules fusionnées...

Là oui !

Et bien non, seule cette version fonctionne :

Private Sub WorkSheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("C6")) Is Nothing Then
     ActiveSheet.Name = Range("C6")
ElseIf Target.Cells(1, 1).Address = "$T$6" Then
    Macro1
End If
End Sub

Du coup, je suis coincé si je veux tester plus large ? T:T par ex. ?

RE

Non mon code du post précédent fonctionne mais tu ne semble plus vouloir tester si la cellule est vide...

Les cellule fusionnées sont une plaie... mais Target.cells(1,1) doit marcher dans tous les cas et Intersect n'a pas les limitations de address...

Rechercher des sujets similaires à "combiner evenements"