Sélectionner une zone de la ligne de la case active et appliquer un format

Résolu/Fermé
Ricky_73 Messages postés 4 Date d'inscription mercredi 26 août 2020 Statut Membre Dernière intervention 26 août 2020 - 26 août 2020 à 15:46
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 26 août 2020 à 17:49
Bonjour,

Sous Excel 2016, je souhaite créer une macro qui applique un format de couleur à une zone de la ligne de la cellule active.

Par exemple, la case E153 est active au moment de l'activation de la macro, alors la macro sélectionne les 33 premières cases de la ligne 153 (A153 à AG153) et applique un format de couleur vert.

Je suis une bille en VBA, je n'arrive pas à sélectionner cette zone.

Configuration: Windows / Firefox 68.0
A voir également:

4 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
26 août 2020 à 16:01
Bonjour,

se déclenche au double clic dans la colonne E
Faire Alt F11 sur la feuille concernée et mettre ce code:

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim ligne As Long
If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
  Cells.Interior.Pattern = xlNone
  ligne = Target.Row
  Range("A" & ligne & ":AG" & ligne).Interior.ColorIndex = 10
 End If
End Sub


voilà
0
Ricky_73 Messages postés 4 Date d'inscription mercredi 26 août 2020 Statut Membre Dernière intervention 26 août 2020
26 août 2020 à 16:43
C'est si simple pour ceux qui savent :) : merci.

Ça fonctionne bien et l'activation par le double clic est une super idée.
Par contre, lors de l'application ça supprime la couleur des autres lignes, comment faire pour appliquer uniquement un format particulier sur la ligne active sans supprimer celui des autres lignes ?
Est-ce que c'est la commande
Cells.Interior.Pattern = xlNone
qui cause problème ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
26 août 2020 à 16:55
Oui tout à fait cette ligne de code supprime toutes les couleurs. Tu la supprimes

Un petit conseil: sers-toi de l’enregistreur de macro quand tu ne sais pas

voilà
0
Ricky_73 Messages postés 4 Date d'inscription mercredi 26 août 2020 Statut Membre Dernière intervention 26 août 2020
Modifié le 26 août 2020 à 17:37
Parfait !
je modifie la couleur pour avoir le vert désiré, en passant par la commande
Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(146, 208, 80)

Et il me reste à dupliquer ce fonctionnement pour 2 autres applications de format de couleur (double click sur les colonnes B et C par exemple).
Je vais essayer.

Edit : J'ai essayé mais ça marche pas :(. Comment reproduire cette fonctionnalité 2 autres fois pour les couleurs RGB(191, 191, 191) et RGB(217, 217, 217) avec double clique en colonne B , et colonne C ?

Merci beaucoup !
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
26 août 2020 à 17:49
comme ceci:

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim ligne As Long
If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
  ligne = Target.Row
  Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(146, 208, 80)
 End If
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
  ligne = Target.Row
 Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(191, 191, 191)
 End If
If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then
  ligne = Target.Row
 Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(217, 217, 217)
 End If
End Sub


voilà, il suffit de répéter l'opération

@+ Le Pivert
0
Ricky_73 Messages postés 4 Date d'inscription mercredi 26 août 2020 Statut Membre Dernière intervention 26 août 2020
26 août 2020 à 17:47
Trouvé :
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim ligne As Long
If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
ligne = Target.Row
Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(146, 208, 80)
End If
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
ligne = Target.Row
Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(191, 191, 191)
End If
If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then
ligne = Target.Row
Range("A" & ligne & ":AG" & ligne).Interior.Color = RGB(217, 217, 217)
End If
End Sub


J'avais prévenu que j'étais une buse en VBA.....
0