Microsoft 365 Mettre en surbrillance la ligne active d'un tableau

MACx

XLDnaute Occasionnel
Bonjour à vous,

Est-il possible de mettre en surbrillance la ligne active d'un tableau (déjà mis en forme) ?
Merci beaucoup.
 
Solution
avec cette modif
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'si on ne clique PAS dans le tableau==> on quitte
If Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange) Is Nothing Then Exit Sub

Application.EnableEvents = False 'on désactive les évènements
ligne = Target.Row 'on récupère le numéro de ligne de la cellule sélectionnée
With ActiveSheet.ListObjects(1) 'dans le tableau structuré (1 = le premier de la feuille)
    FirstLine = .DataBodyRange.Rows(0).Row 'position de la première ligne du tableau = ligne d'entete
    .DataBodyRange.Rows(ligne - FirstLine).Select 'on selectionne la ligne (-FirstLine pour "compenser" la position du tableau dans la feuille
End With

Target.Activate 'on active la...

vgendron

XLDnaute Barbatruc
avec ceci

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'si on ne clique PAS dans le tableau==> on quitte
If Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange) Is Nothing Then Exit Sub

Application.EnableEvents = False 'on désactive les évènements
ligne = Target.Row 'on récupère le numéro de ligne de la cellule sélectionnée
With ActiveSheet.ListObjects(1) 'dans le tableau structuré (1 = le premier de la feuille)
    .DataBodyRange.Rows(ligne - 1).Select 'on selectionne la ligne (-1 pour "compenser" la position du tableau dans la feuille
End With

Target.Activate 'on active la cellule selectionnée
Application.EnableEvents = True 'on réactive les évènements
End Sub
 

MACx

XLDnaute Occasionnel
ça marche !
Mais que si je sélectionne une cellule vide. Autrement, il ne se passe rien sinon... 🤔
C'est exactement l'inverse qu'il me faut.... En principe je n'ai aucune cellule vide...
En fait je me rends compte que ça surligne la ligne sélectionnée + 2 (ex: je me positionne en ligne 5 et c'est la 7 qui se mets en surbrillance)
De plus la surbrillance ne fonctionne que si je fige des volets (Horizontal et Vertical)
Et si je me positionne sur la dernière ligne du tableau, la ligne +2 (donc hors tableau) se mets en surbrillance)

J'essaie de t'envoyer une copie du tableau pour que tu puisses mieux voir.
Merci beacoup.
 

MACx

XLDnaute Occasionnel
???
dans le code proposé, le contenu de la cellule n'est jamais vérifié: donc vide ou pas, la ligne est selectionnée
En fait je me rends compte que ça surligne la ligne sélectionnée + 2 (ex: je me positionne en ligne 5 et c'est la 7 qui se mets en surbrillance)
De plus la surbrillance ne fonctionne que si je fige des volets (Horizontal et Vertical)
Et si je me positionne sur la dernière ligne du tableau, la ligne +2 (donc hors tableau) se mets en surbrillance)

J'essaie de t'envoyer une copie du tableau pour que tu puisses mieux voir.
Merci beacoup.
Voilà !
J'espère que cela pourra t'aider.
Thx
 

Pièces jointes

  • XDL_MACx_RowHighlight.xlsm
    34 KB · Affichages: 9

vgendron

XLDnaute Barbatruc
avec cette modif
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'si on ne clique PAS dans le tableau==> on quitte
If Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange) Is Nothing Then Exit Sub

Application.EnableEvents = False 'on désactive les évènements
ligne = Target.Row 'on récupère le numéro de ligne de la cellule sélectionnée
With ActiveSheet.ListObjects(1) 'dans le tableau structuré (1 = le premier de la feuille)
    FirstLine = .DataBodyRange.Rows(0).Row 'position de la première ligne du tableau = ligne d'entete
    .DataBodyRange.Rows(ligne - FirstLine).Select 'on selectionne la ligne (-FirstLine pour "compenser" la position du tableau dans la feuille
End With

Target.Activate 'on active la cellule selectionnée
Application.EnableEvents = True 'on réactive les évènements
End Sub
 

MACx

XLDnaute Occasionnel
avec cette modif
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'si on ne clique PAS dans le tableau==> on quitte
If Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange) Is Nothing Then Exit Sub

Application.EnableEvents = False 'on désactive les évènements
ligne = Target.Row 'on récupère le numéro de ligne de la cellule sélectionnée
With ActiveSheet.ListObjects(1) 'dans le tableau structuré (1 = le premier de la feuille)
    FirstLine = .DataBodyRange.Rows(0).Row 'position de la première ligne du tableau = ligne d'entete
    .DataBodyRange.Rows(ligne - FirstLine).Select 'on selectionne la ligne (-FirstLine pour "compenser" la position du tableau dans la feuille
End With

Target.Activate 'on active la cellule selectionnée
Application.EnableEvents = True 'on réactive les évènements
End Sub
PARFAIT !
Merci beaucoup pour le temps que tu m'as accordé. 👍
 

Discussions similaires

Réponses
14
Affichages
231
Réponses
3
Affichages
335

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof