Mise en surbrillance cellule sélectionnée
Résolu/Fermé
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
-
Modifié par Viking58 le 17/08/2015 à 14:39
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 25 août 2015 à 16:52
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 25 août 2015 à 16:52
A voir également:
- Excel surbrillance cellule sélectionnée
- Liste déroulante excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Formule excel - Guide
6 réponses
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
17 août 2015 à 14:42
17 août 2015 à 14:42
Bonjour,
voir ceci:
https://forum.excel-pratique.com/viewtopic.php?forum_uri=cours-astuces&t=1314&start=
ce qui donne:
voir ceci:
https://forum.excel-pratique.com/viewtopic.php?forum_uri=cours-astuces&t=1314&start=
ce qui donne:
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range(Rows(1), Rows(2))) Is Nothing Then Application.ScreenUpdating = False ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 ' Highlight the active cell Target.Interior.ColorIndex = 8 Application.ScreenUpdating = True End If End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
17 août 2015 à 14:58
17 août 2015 à 14:58
bonjour,
« Je voudrais exclure les lignes 1 et 2 » Essaies :
« De plus, depuis cette macro, ... » ??? que veux-tu dire par là ???
« Je voudrais exclure les lignes 1 et 2 » Essaies :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False With Rows("3:" & Rows.Count) .Interior.ColorIndex = 0 On Error Resume Next Intersect(Target, .Cells).Interior.ColorIndex = 8 On Error GoTo 0 End With Application.ScreenUpdating = True End Sub
« De plus, depuis cette macro, ... » ??? que veux-tu dire par là ???
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
7
Modifié par Viking58 le 17/08/2015 à 16:25
Modifié par Viking58 le 17/08/2015 à 16:25
Merci cs_Le Pivert.
Fonctionne bien. Sauf que la couleur de fond de ma ligne 1 est toujours effacée. Je me retrouve donc avec un fond blanc. Comme si les lignes:
If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then
Application.ScreenUpdating = False
N'étaient pas respectées.
La ligne A2:G2 garde bien sa couleur...
Pourquoi ?
Windows 8.1 Office 2013
Fonctionne bien. Sauf que la couleur de fond de ma ligne 1 est toujours effacée. Je me retrouve donc avec un fond blanc. Comme si les lignes:
If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then
Application.ScreenUpdating = False
N'étaient pas respectées.
La ligne A2:G2 garde bien sa couleur...
Pourquoi ?
Windows 8.1 Office 2013
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
18 août 2015 à 08:03
18 août 2015 à 08:03
C'est normal, cette ligne de code remet toutes les cellules en blanc:
mettre ce code pour garder la couleur de la plage A1:G2:
Cells.Interior.ColorIndex = 0
mettre ce code pour garder la couleur de la plage A1:G2:
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range("A3:G6000")) Is Nothing Then Else If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then Application.ScreenUpdating = False ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 ' Highlight the active cell Target.Interior.ColorIndex = 8 Application.ScreenUpdating = True End If End If couleurorigine End Sub Sub couleurorigine() Range("A1:G2").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5296274 'adapter la couleur .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
18 août 2015 à 10:45
18 août 2015 à 10:45
Et pour simplifier ce code:
Voilà, c'est simple!
@+ Le Pivert
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.Intersect(Target, Range("A3:G6000")) Is Nothing Then Else If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then Application.ScreenUpdating = False ' Clear the color of all the cells Cells.Interior.ColorIndex = 0 ' Highlight the active cell Target.Interior.ColorIndex = 8 Range("A1:G2").Interior.Color = 5296274 'adapter la couleur Application.ScreenUpdating = True End If End If End Sub
Voilà, c'est simple!
@+ Le Pivert
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
7
>
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
18 août 2015 à 12:43
18 août 2015 à 12:43
Merci cs_Le Pivert .
J'avais, bien sur, modifier cette ligne en conséquence:
If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then
Mais la ligne 1 perdait quand même sa couleur, pas la 2.
Sur votre premier code, le groupe de cellules A1:G2 reste encadré, sélectionné, même si on clic sur une autre cellule de la feuille.
Sub couleurorigine()
Range("A1:G2").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274 'adapter la couleur
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Le second code fonctionne très bien:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(Target, Range("A3:G6000")) Is Nothing Then
Else
If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then
Application.ScreenUpdating = False
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
' Highlight the active cell
Target.Interior.ColorIndex = 8
Range("A1:G2").Interior.Color = 5296274 'adapter la couleur
Application.ScreenUpdating = True
End If
End If
End Sub
J'avais, bien sur, modifier cette ligne en conséquence:
If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then
Mais la ligne 1 perdait quand même sa couleur, pas la 2.
Sur votre premier code, le groupe de cellules A1:G2 reste encadré, sélectionné, même si on clic sur une autre cellule de la feuille.
Sub couleurorigine()
Range("A1:G2").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274 'adapter la couleur
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Le second code fonctionne très bien:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(Target, Range("A3:G6000")) Is Nothing Then
Else
If Application.Intersect(Target, Range("A1:G2")) Is Nothing Then
Application.ScreenUpdating = False
' Clear the color of all the cells
Cells.Interior.ColorIndex = 0
' Highlight the active cell
Target.Interior.ColorIndex = 8
Range("A1:G2").Interior.Color = 5296274 'adapter la couleur
Application.ScreenUpdating = True
End If
End If
End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
17 août 2015 à 19:21
17 août 2015 à 19:21
Re,
Essaies ce code :
Essaies ce code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False With Range("A3:G6000") .Interior.ColorIndex = 0 On Error Resume Next Intersect(Target, .Cells).Interior.ColorIndex = 8 On Error GoTo 0 End With Application.ScreenUpdating = True End Sub
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
7
Modifié par Viking58 le 24/08/2015 à 12:51
Modifié par Viking58 le 24/08/2015 à 12:51
Bonjour Patrice. J'ai ré-ouvert le sujet.
Voici le code final, qui fonctionne à merveille:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(Target, Range("A1:A3000")) Is Nothing Then 'Plage'
Application.ScreenUpdating = False
' Clear the color of all the cells 'Code Microsoft...'
Cells.Interior.ColorIndex = 0
' Highlight the active cell
Target.Interior.ColorIndex = 8
Range("A1:J1").Interior.Color = 65535 'Met la plage donnée à la couleur de: adapter la couleur: '
Application.ScreenUpdating = True
End If
End Sub
Par contre, il m'empêche de mettre des cadres, ou parties de cadre sur mes cellules.
(Chose possible en dehors de la plage visée), D'ou ma déduction que c'est le code qui est fautif).
Comment modifier ce problème ?
Merci
Voici le code final, qui fonctionne à merveille:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(Target, Range("A1:A3000")) Is Nothing Then 'Plage'
Application.ScreenUpdating = False
' Clear the color of all the cells 'Code Microsoft...'
Cells.Interior.ColorIndex = 0
' Highlight the active cell
Target.Interior.ColorIndex = 8
Range("A1:J1").Interior.Color = 65535 'Met la plage donnée à la couleur de: adapter la couleur: '
Application.ScreenUpdating = True
End If
End Sub
Par contre, il m'empêche de mettre des cadres, ou parties de cadre sur mes cellules.
(Chose possible en dehors de la plage visée), D'ou ma déduction que c'est le code qui est fautif).
Comment modifier ce problème ?
Merci
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
>
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
25 août 2015 à 00:19
25 août 2015 à 00:19
Bonjour,
Ce code ne répond pas du tout au besoin que tu avais exprimé ! ie : Je voudrais exclure les lignes 1 et 2, qui sont colorées et qui servent d'entête. [...] Comment interdire au code VBA de mise en surbrillance de s'appliquer sur la plage A1:G2 ou l'autoriser sur la plage A3:G6000 ? Là, tu interdit la mise en surbrillance de A1:A3000 et tu effaces la couleur de A1:G2 (pour la remettre en A1:J1 uniquement !).
Enfin, si ça te convient, saches que ce code n'empêche, ni de définir une bordure de cellule(s), ni de déposer un cadre sur la feuille à quelque endroit que ce soit !
Mais qu'appelles-tu un cadre ou une partie de cadre ???
Patrice
Ce code ne répond pas du tout au besoin que tu avais exprimé ! ie : Je voudrais exclure les lignes 1 et 2, qui sont colorées et qui servent d'entête. [...] Comment interdire au code VBA de mise en surbrillance de s'appliquer sur la plage A1:G2 ou l'autoriser sur la plage A3:G6000 ? Là, tu interdit la mise en surbrillance de A1:A3000 et tu effaces la couleur de A1:G2 (pour la remettre en A1:J1 uniquement !).
Enfin, si ça te convient, saches que ce code n'empêche, ni de définir une bordure de cellule(s), ni de déposer un cadre sur la feuille à quelque endroit que ce soit !
Mais qu'appelles-tu un cadre ou une partie de cadre ???
Patrice
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
7
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
25 août 2015 à 14:35
25 août 2015 à 14:35
Merci Patrice.
J'aurai dû dire "Bordure".
J'ai tout modifié, tout est revenu dans l'ordre.
Je devrais peut être réinstaller Excel. J'ai eu plusieurs bugs ces derniers jours.
J'aurai dû dire "Bordure".
J'ai tout modifié, tout est revenu dans l'ordre.
Je devrais peut être réinstaller Excel. J'ai eu plusieurs bugs ces derniers jours.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Boisgontierjacques
Messages postés
175
Date d'inscription
jeudi 19 septembre 2013
Statut
Membre
Dernière intervention
26 décembre 2018
64
18 août 2015 à 12:48
18 août 2015 à 12:48
Viking58
Messages postés
186
Date d'inscription
vendredi 5 décembre 2014
Statut
Membre
Dernière intervention
5 janvier 2018
7
18 août 2015 à 13:02
18 août 2015 à 13:02
Merci Boisgontierjacques.
Ce code fonctionne bien.
Mais mon but était de mettre en surbrillance la cellule active, tout en respectant la couleur de mon entête, soit A1:G2. La modif donnée par Patrice33740 répond à mes attentes.
D'ou la mise du sujet en "Résolu"
Je le garde quand même et le mets de coté.
Ce code fonctionne bien.
Mais mon but était de mettre en surbrillance la cellule active, tout en respectant la couleur de mon entête, soit A1:G2. La modif donnée par Patrice33740 répond à mes attentes.
D'ou la mise du sujet en "Résolu"
Je le garde quand même et le mets de coté.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 776
25 août 2015 à 16:52
25 août 2015 à 16:52
Re,
J'ai tout modifié, tout est revenu dans l'ordre.
Je devrais peut être réinstaller Excel. J'ai eu plusieurs bugs ces derniers jours.
Les erreurs de code VBA peuvent mettre Excel dans une situation instable, en général il suffit de redémarrer l'ordinateur pour que tout rentre dans l'ordre (à condition de ne plus reproduire la même erreur).
La réinstallation ne s'impose qu'en cas de crash du programme, mais rarement lorsqu'il détecte une erreur, en général s'il la détecte c'est qu'il fonctionne bien !
J'ai tout modifié, tout est revenu dans l'ordre.
Je devrais peut être réinstaller Excel. J'ai eu plusieurs bugs ces derniers jours.
Les erreurs de code VBA peuvent mettre Excel dans une situation instable, en général il suffit de redémarrer l'ordinateur pour que tout rentre dans l'ordre (à condition de ne plus reproduire la même erreur).
La réinstallation ne s'impose qu'en cas de crash du programme, mais rarement lorsqu'il détecte une erreur, en général s'il la détecte c'est qu'il fonctionne bien !
Modifié par Viking58 le 17/08/2015 à 15:30
J'ai essayé plusieurs combinaisons, mais sans résultats.
Comment interdire au code VBA de mise en surbrillance de s'appliquer sur la plage A1:G2 ou l'autoriser sur la plage A3:G6000 ?
17 août 2015 à 16:06