Bonjour,
Soyons précis, la programmation n'autorise pas l'imprécision :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Il s'agit d'une procédure évènementielle, située dans le module de la feuille concernée, qui se produit automatique lors du changement de plage sélectionnée (i.e. une ou plusieurs cellules). C'est l'évènement SelectionChange de Worsheet.
Cette procédure ne se produit pas lorsqu'on sélectionne un objet de la feuille (Image, forme, contrôle, ...)
Target
Il s'agit de la plage de cellules (de type Range) sélectionnées (ou de la cellule s'il n'y a qu'une cellule sélectionnée).
If Not Intersect(Target, ActiveSheet.Range("D9:K15")) is Nothing
Signifie littéralement : Si l'intersection (le croisement) entre Target (ici, la plage de cellules sélectionnéees) et la plage de cellules D9:K15 de la feuille active n'est pas inexistante.
C'est l'équivalent : Si au moins une des cellules de la plage sélectionnée se situe dans la plage D9:K15 de la feuille active.
Notes que je déconseille l'emploi des objets actif (comme Activesheet) en particulier dans les procédures évènementielles.
Il plus correct d'écrire :
If Not Intersect(Target, Me.Range("D9:K15")) is Nothing
Me représente la feuille dans laquelle est écrite cette procédure.
Si dans le cas de SelectionChange on à la chance que cet évènement se produise toujours sur la feuille active, ce n'est pas le cas de tous les évènements de la feuille.
Mais par exemple, l'évènement Change (qui se produit lorsqu'on modifie le contenu d'un cellule), se produira sur la feuille sur laquelle on modifie la cellule mais cette feuille n'est pas forcement la feuille active d'où l'importance de faire référence à Me plutôt qu'à Activesheet..