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

Résolu
Ricky_73 Messages postés 4 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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

4 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  2. Ricky_73 Messages postés 4 Statut Membre
     
    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
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
  3. Ricky_73 Messages postés 4 Statut Membre
     
    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
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
  4. Ricky_73 Messages postés 4 Statut Membre
     
    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