Macro vba pour surligner une ligne

Fermé
johannenzo Messages postés 34 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 24 juillet 2011 - 31 janv. 2011 à 16:31
johannenzo Messages postés 34 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 24 juillet 2011 - 2 févr. 2011 à 16:48
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.
A voir également:

1 réponse

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
31 janv. 2011 à 17:36
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
johannenzo Messages postés 34 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 24 juillet 2011 1
31 janv. 2011 à 18:13
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
31 janv. 2011 à 18:30
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
johannenzo Messages postés 34 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 24 juillet 2011 1
1 févr. 2011 à 08:41
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 1/02/2011 à 13:35
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
johannenzo Messages postés 34 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 24 juillet 2011 1
1 févr. 2011 à 19:19
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