Changer la couleur d'une ligne d'un MSHFLEXGRID

Résolu
PhilippeF -  
 Utilisateur anonyme -
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

2 réponses

  1. PhilippeF
     
    Désolé mais je ne vois pas la roue crantée pour "RESOLU"
    0
    1. Utilisateur anonyme
       
      bonjour, la roue crantée n'apparait que s'il y a une réponse
      0
  2. PhilippeF
     
    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