Inserer une plage de cellules dans une macro existante

Résolu
charette63 Messages postés 88 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 19 mai 2011 - 27 mars 2011 à 20:07
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 - 27 mars 2011 à 22:58
Bonjour à toutes et tous,

Je n'y connais pas grand chose en programmation, (voire rien), j'ai trouvé sur le net une macro me permettant de changer
la couleur d'une cellule lorsque sa valeur change. Mon problème est que cette macro s'exécute sur toute la feuille excel
et j'aimerai la limiter à la plage de cellule "D4:AH69". J'ai cherché une solution via un moteur de recherche, j'y ai
trouvé quelques bouts de code, mais aucun ne s'est avéré efficace. Je me résous donc à demander de l'aide.

voici ma macro:


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

If Sh.Name = "Horaire" Then
Target.Interior.Color = vbYellow
End If
End Sub


merci de votre aide

4 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 12
27 mars 2011 à 21:16
Salut,

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   If Sh Is Worksheets("Horaire") And Not Intersect(Range("D4:AH69"), Target) Is Nothing Then
      Target.Interior.Color = vbYellow
   End If
End Sub


Traduction de la condition if :

'si sh est la feuille "Horaire" et l'intersection de target avec "D4:AH69" n'est pas vide alors

A+
3
charette63 Messages postés 88 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 19 mai 2011
27 mars 2011 à 22:19
Superbe, avec tous mes remerciements m'sieur bigfish_le vrai
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
27 mars 2011 à 22:35
Bonsoir a tous,
Presque, Bigfish, j'ajoute juste ceci
L'évenement de charette semble mal choisi.
De plus si tu selectionne une ligne, une colonne ou une zone, la macro colorie toute la selection, pas l'intersection. (je viens de faire l'essai)

Modifiez
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   If Sh Is Worksheets"Horaire") And Not Intersect(Range("D4:AH69"), Target) Is Nothing Then
      Dim Ab As Range
      Set Ab = Intersect(Target, Range("D4:AH69"))
      Ab.Interior.Color = vbYellow
   End If
End Sub

Perso l'evenement
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
marche aussi et éviterait un test.

Mais je suis tatillon ce soir .. lol
Bonne Soirée a tous les deux CGSI3
0
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
27 mars 2011 à 22:58
Aarf désolé mal compris l'énoncé!
Bonne Soirée a tous les deux CGSI3
0