Changer la couleur d'une ligne d'un MSHFLEXGRID

Résolu/Fermé
PhilippeF - Modifié le 27 août 2019 à 08:54
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 - 27 août 2019 à 13:37
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
A voir également:

2 réponses

Désolé mais je ne vois pas la roue crantée pour "RESOLU"
0
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919
27 août 2019 à 13:37
bonjour, la roue crantée n'apparait que s'il y a une réponse
0
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
0