Changer la couleur d'une ligne d'un MSHFLEXGRID [Résolu]

-
Bonjour,
Lors du chargement d'un Mshflexgrid le mets de la couleur une ligne sur 2. Pas de problème pour cette partie.
Lors d'un double clic sur une ligne je change la couleur de la ligne sélectionnée. Pas de soucis ici aussi.
Le problème se pose lorsque je fais un double clic sur une autre ligne. La ligne change bien de couleur mais la ligne précédemment cliquée reste sur la même couleur. Je voudrais que la ligne précédemment cliquée revienne à sa couleur initiale.
Le code pour mettre de la couleur 1 ligne sur 2 dans la grille
Sub Les_Couleurs()
    For r = 2 To GrilleCptes.Rows - 1 Step 2
        GrilleCptes.Row = r
        For c = 0 To GrilleCptes.Cols - 1
            GrilleCptes.Col = c
            GrilleCptes.CellBackColor = RGB(224, 255, 255)
        Next c
    Next r
End Sub

Le code du double clic sur une ligne de la grille
Private Sub GrilleCptes_DblClick()
Dim bquecpte As String
    GrilleCptes.Col = 0 'défini la colonne où est inscrit l'id du compte
    idCompte = GrilleCptes.Text 'récupère l'id du compte
    GrilleCptes.Col = 2
    bquecpte = GrilleCptes.Text
    GrilleCptes.Col = 1 'défini la colonne du numéro de compte
    TxtModCpte.Text = GrilleCptes.Text
    c = 1
    For c = 0 To 3
        GrilleCptes.Col = c
        GrilleCptes.CellBackColor = RGB(255, 255, 128)
    Next c
End Sub

Le code marche bien mais si je refais un double clic sur une autre ligne la première ligne reste avec la couleur de la ligne cliquée.

Si vous avez une idée ....
Merci d'avance



Configuration: Windows / Chrome 76.0.3809.132
Afficher la suite 

2 réponses

0
Merci
Désolé mais je ne vois pas la roue crantée pour "RESOLU"
Whismeril
Messages postés
13972
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 novembre 2019
417 -
bonjour, la roue crantée n'apparait que s'il y a une réponse
Commenter la réponse de PhilippeF
0
Merci
Après pas mal d'essais voilà ce j'ai fait. Testé plusieurs fois
au chargement de la grille on met de la couleur 1 ligne sur 2

Sub Les_Couleurs()
For r = 1 To GrilleCptes.Rows - 1 Step 2
GrilleCptes.Row = r
For c = 0 To GrilleCptes.Cols - 1
GrilleCptes.Col = c
GrilleCptes.CellBackColor = RGB(224, 255, 255)
Next c
Next r
End Sub

la procédure pour remettre toutes les lignes à blanc

Sub Les_Couleurs()
For r = 1 To GrilleCptes.Rows - 1 Step 2
GrilleCptes.Row = r
For c = 0 To GrilleCptes.Cols - 1
GrilleCptes.Col = c
GrilleCptes.CellBackColor = RGB(224, 255, 255)
Next c
Next r
End Sub

procédure quand on clique sur une cellule de la grille

Private Sub GrilleCptes_Click()
Dim bquecpte As String
GrilleCptes.Visible = False 'je cache la grille pour éviter d'apercevoir les procédures des couleurs
rowclic = GrilleCptes.RowSel 'pour conserver la ligne sélectionnée
Lignes_blanc 'pour remettre toutes les lignes à blanc
Les_Couleurs 'pour mettre de la couleur 1 ligne sur 2
GrilleCptes.Visible = True 'j'affiche de nouveau la grille
GrilleCptes.Col = 0 'défini la colonne où est inscrit l'id du compte
GrilleCptes.Row = rowclic 'replace le curseur sur la ligne sélectionnée
idCompte = GrilleCptes.Text 'récupère l'id du compte
GrilleCptes.Col = 2 'place le curseur sur la colonne 2 pour récupérer la banque
bquecpte = GrilleCptes.Text 'récupère le nom de la banque
GrilleCptes.Col = 1 'place le curseur sur la colonne 1 pour récupérer le numéro de compte
TxtModCpte.Text = GrilleCptes.Text 'écrit le numéro du compte
c = 1
For c = 0 To 3
GrilleCptes.Col = c
GrilleCptes.CellBackColor = RGB(255, 255, 128) 'change la couleur de la ligne sélectionnée
Next c
End Sub
Commenter la réponse de PhilippeF