VBA mise en forme de ligne sélectionnée

Bonjour à tous,

Pour assurer une bonne visibilité dans un tableau de base de donnée, j'ai appliqué cette formule à ma feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Static AncAdress As Long

If Target.Count > 5 Then Exit Sub

If AncAdress <> 0 Then 'remettre en normal

Rows(AncAdress).Interior.ColorIndex = xlNone

Rows(AncAdress).Font.ColorIndex = 0

Rows(AncAdress).Font.Bold = False

Rows(AncAdress).Font.Size = 11

Rows(AncAdress).Font.ColorIndex = 0

End If

Target.EntireRow.Interior.Color = RGB(0, 192, 96)

Target.EntireRow.Font.ColorIndex = 2

Target.EntireRow.Font.Bold = True

Target.EntireRow.Font.Size = 13

AncAdress = Target.Row

End Sub

Cette formule permet d'appliquer une mise en forme à la ligne sélectionnée.

Ma base de donnée étant très large (rien d'exceptionnel mais j'arrive à la colonne BB) et pour alléger le classeur, je voudrais que cette formule ne se recalcule pas en cas de déplacement latéral (logique la ligne ne change pas).

Je ne voit pas comment empêcher la boucle de se faire complétement à chaque changement de case sélectionné.

Dans mon utilisation ça serait pour aller d'un bout à l'autre du tableau avec les flèches latéral du clavier.

Merci pour toutes suggestions.

J-C

Bonjour,

plutôt que conserver l'adresse entre chaque appel de ta fonction , tu pourrais conserver la ligne et n'effectuer ton changement seulement si le numéro de ligne change ( Target.row)

Bonjour,

Si tu peux mettre tes données sous forme de tableau (Excel 2007), tu pourrais t'épargner cette mise en forme.

Cdlt.

Bonjour,

Pour répondre à Jean-Eric, mes données sont bien sous forme de tableau ; mais ce tableau est tellement large et long que l'on s'y perd un peu ...

Pour Pierre, c'est bien ce que j'essaye de faire, mais pour l'instant je fait choux blanc ...

merci de votre retour

J-C

Bonjour

Il suffit de vérifier que AncAdress est différent de Target.row pour faire le traitement.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Static AncAdress As Long

If Target.Count > 5 Then Exit Sub

if AncAdress = Target.row then exit sub

If AncAdress <> 0 Then 'remettre en normal

Rows(AncAdress).Interior.ColorIndex = xlNone

Rows(AncAdress).Font.ColorIndex = 0

Rows(AncAdress).Font.Bold = False

Rows(AncAdress).Font.Size = 11

Rows(AncAdress).Font.ColorIndex = 0

End If

Target.EntireRow.Interior.Color = RGB(0, 192, 96)

Target.EntireRow.Font.ColorIndex = 2

Target.EntireRow.Font.Bold = True

Target.EntireRow.Font.Size = 13

AncAdress = Target.Row

End Sub

Des fois c'est tout simple, mais c'est pas facile à trouver

Rien qu'une petite boucle si en plus

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Static AncAdress As Long

If Target.Count > 5 Then Exit Sub

If Target.Row = AncAdress Then Exit Sub

If AncAdress <> 0 Then 'remettre en normal

Rows(AncAdress).Interior.ColorIndex = xlNone

Rows(AncAdress).Font.ColorIndex = 0

Rows(AncAdress).Font.Bold = False

Rows(AncAdress).Font.Size = 11

Rows(AncAdress).Font.ColorIndex = 0

End If

Target.EntireRow.Interior.Color = RGB(0, 192, 96)

Target.EntireRow.Font.ColorIndex = 2

Target.EntireRow.Font.Bold = True

Target.EntireRow.Font.Size = 13

AncAdress = Target.Row

End Sub


Merci Dubos je crois qu'on c'est croisé ^^

Rechercher des sujets similaires à "vba mise forme ligne selectionnee"