Macro vba pour surligner une ligne

johannenzo Messages postés 35 Statut Membre -  
johannenzo Messages postés 35 Statut Membre -
Bonjour,

J'ai un tableau excel 2003 avec beaucoup de lignes et de colonnes ce qui le rend pas très lisible ...

Pourriez-vous m'indiquer un code vba pour que s'affiche en surbrillance avec une couleur du type gris clair toutes les cellules de la ligne correspondante à la cellule active sélectionner ?

Et faire en sorte par la meme occasion que pour la cellule active le texte s'affiche en gras ?

Est ce possible ?

Cordialement

J.

1 réponse

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    voici une proposition :

    Le code VBA associé à la feuille :
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Effacer la sélection précédente
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Cells(Lig_Cour, Col_Cour).Font.Bold = False
    End If
    'Mettre en évidence la sélection actuelle
    Lig_Cour = Target.Row
    Col_Cour = Target.Column
    Rows(Lig_Cour).Interior.ColorIndex = 15
    Cells(Lig_Cour, Col_Cour).Font.Bold = True
    End Sub
    


    Le code VBA associé à "ThisWorkbook" pour que la selection s'efface à la fermeture du fichier
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Lig_Cour <> 0 And Col_Cour <> 0 Then
        Rows(Lig_Cour).Interior.ColorIndex = xlNone
        Cells(Lig_Cour, Col_Cour).Font.Bold = False
    End If
    End Sub
    


    et dans un module déclarer les variables globales suivantes :
    Public Lig_Cour As Integer, Col_Cour As Integer
    


    Voila, c'est un peu complexe mais cela doit fonctionner...

    Me dire si c'est OK

    A+
    4
    1. johannenzo Messages postés 35 Statut Membre 1
       
      Merci pour la programmation mais avant de la tester je viens d'avoir une idée qui je pense serait peut être plus simple.
      En fait j'aimerais que lorsque je suis dans une cellule de mon tableau, la ligne s'affiche comme si on la sélectionner en cliquant sur son numéro tout a gauche.
      Lorsqu'on fait cela la ligne est encadré avec une bordure un plus épaisse et le fond devient un peu plus foncé
      Est ce que ce ne serait pas plus simple de pouvoir récupérer "la fonction" identique à lorsqu'on clique sur le chiffre ???
      Cordialement
      J
      0
    2. pilas31 Messages postés 1878 Statut Contributeur 648
       
      En fait, cette "fonction" c'est la sélection d'une ligne.
      Ce n'est pas compatible avec la sélection d'une cellule.
      Ce que je propose passe le fond de la ligne en gris et la cellule sélectionnée en gras mais ne change pas la sélection.
      Donc on peut par exemple modifier la cellule.
      0
    3. johannenzo Messages postés 35 Statut Membre 1
       
      Bonjour,

      en fait ce qui me gene dans le faite de changer le fond de la couleur des cellules de la ligne séléctionné c'est que dans ce tableau j'ai des cellules avec menu deroulant et mise en forme conditionnelle utilisant des couleurs de fond !!! Donc si je me modifie la couleur de fond de toute la ligne je vais modifié les couleurs utilisées par la mise en forme conditionnelle.
      Et je risque de perdre "temporairement" ces marqueurs visuels ...
      Cordialement
      0
    4. pilas31 Messages postés 1878 Statut Contributeur 648
       
      Bonjour,

      Je viens de faire le test avec des Mises en Forme Conditionnelle et des listes déroulantes et cela se comporte bien.
      Les couleurs de fond définies par les MFC sont de toute façon prioritaires par rapport au fond qui est fixé par la macro.
      Je pense que ma solution est à essayer. Au besoin il faut essayer avec d'autres couleurs de fond. Dans mon exemple la valeur 15 correspond au gris clair.

      A+
      0
    5. johannenzo Messages postés 35 Statut Membre 1
       
      Bonsoir,
      puisque les mises en forme conditionnelle sont prioritaire cela devient intéressant de rester sur l'idée de départ, je vais donc essayer ce que vous m'avait conseillé.
      Par contre étant débutant en programmation vba pourriez vous me préciser ou dois je entrer les éléments dont vous parlez plus haut :
      A savoir

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      'Effacer la sélection précédente
      If Lig_Cour <> 0 And Col_Cour <> 0 Then
      Rows(Lig_Cour).Interior.ColorIndex = xlNone
      Cells(Lig_Cour, Col_Cour).Font.Bold = False
      End If
      'Mettre en évidence la sélection actuelle
      Lig_Cour = Target.Row
      Col_Cour = Target.Column
      Rows(Lig_Cour).Interior.ColorIndex = 15
      Cells(Lig_Cour, Col_Cour).Font.Bold = True
      End Sub

      Le code VBA associé à "ThisWorkbook" pour que la selection s'efface à la fermeture du fichier

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      If Lig_Cour <> 0 And Col_Cour <> 0 Then
      Rows(Lig_Cour).Interior.ColorIndex = xlNone
      Cells(Lig_Cour, Col_Cour).Font.Bold = False
      End If
      End Sub

      et dans un module déclarer les variables globales suivantes :

      Public Lig_Cour As Integer, Col_Cour As Integer

      Merci d'avance
      Cordialement
      0