IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Changement de la couleur d'une cellule dans une tabledatagridview selon sa valeur [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 34
    Par défaut Changement de la couleur d'une cellule dans une tabledatagridview selon sa valeur
    Bonjour à vous,
    Je recherche un moyen de changer la couleur d'une cellule si celle-ci a une certaine valeur, ma colonne est déclaré en int et j'utilise la fonction cellformating. Je n ai aucun message d'erreur mais il y a aucun changement.
    Pourriez vous m'aider svp.
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       Private Sub Table1datagridview_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
            If Table1datagridview.Columns(e.ColumnIndex).Name.Equals("Age") Then
                If CDbl(e.Value) < 10.0 Then
                    e.CellStyle.BackColor = Color.Red
                Else
                    e.CellStyle.BackColor = Color.White
                End If
            End If
        End Sub

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut Exemple
    Cet exemple devrait t'aider ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            If MonDataGrigView.CurrentCell.Value < 0 Then  ' Test de la valeur de la cellule
                MonDataGrigView.CurrentCell.Style.ForeColor = Color.Red  ' Ici Texte en Rouge
            Else
                MonDataGrigView.CurrentCell.Style.ForeColor = Color.Black ' Ici Texte en Noir
                MonDataGrigView.CurrentCell.Style.BackColor = Color.Yellow ' sur fond Jaune
            End If

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 34
    Par défaut
    Salut merci pour ta réponse,
    Ton bout de code fonctionne très bien si je clic sur les cellules de la tabledatagridview, j'aimerais que ce soit automatique.
    J'ai réussi le changement de couleur en prenant un datagridview et en mettant comme source de données le tablebedingsource, donc sans passer par la création du tabledatagridview donné par le dataset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public sub cellcolor()
    For i as intégrer = 0 to datagridview 1. Rows. Count() -1Step +1
    Dim val As Integer
    val = Datagridview1. Rows(i). Cells(2).Value
    If val <5 Then
    Datagridview1. Rows(i). DefaultCellStyle. Backcolor = color. Red
    Else
    Datagridview1. Rows(i). DefaultCellStyle. Backcolor = color. White
    End If
    Next
    End Sub
    Y a t'il un moyen d actualisé automatiquement le datagridview si on change la valeur ?
    Pour voir le changement il faut arrêter le débocage, quand on relance il y a bien le changement.

    Merci.

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 34
    Par défaut
    C'est bon j'ai réussi en ajoutant un timer
    Pour les débutants comme moi, voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Public sub cellcolor()
    For i as intégrer = 0 to datagridview 1. Rows. Count() -1Step +1
    Dim val As Integer
    val = Datagridview1. Rows(i). Cells(2).Value
    If val <5 Then
    Timer1. Start() 
    End If
    Next
    End Sub
    Puis insérer un timer dans le form, régler le timer à 250

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Private Sub Timer1_Tick(Byval sender As Système. Object, Byval e As Système. Eventargs) Handles Timer1. Tick
    For i as intégrer = 0 to datagridview 1. Rows. Count() -1Step +1
    Dim val As Integer
    val = Datagridview1. Rows(i). Cells(2).Value
    If val <5 Then
    Datagridview1. Rows(i). DefaultCellStyle. Backcolor = color. Red
    Else
    Datagridview1. Rows(i). DefaultCellStyle. Backcolor = color. White
    End If
    Next
    End Sub
    Merci et à bientôt sur le forum car comme je découvre ce logiciel, j'ai pleins de questions et donc forcément besoin de l aide d'expert comme on trouve souvent sur ce genre de forum.
    A+

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Discussion terminée ... OK, mais comme je vois seulement ta réponse à mon message d'hier, je me permets de faire d'autres suggestions :

    1. Fais tes essais sur d'autres événements du Datagrid, tels CellValueChanged, voire CellValidate, ...
    2. Une procédure personnelle de rafraîchissent appelée sur un événement qui te conviendrait, pourrait très bien balayer tout le DataGrid, cellule par cellule, de la 1ère ligne, 1ère colonne, jusqu'à la cellule de la dernière ligne, dernière colonne, et examiner la valeur de la cellule et la peindre comme tu le souhaites.
    Ce serait mieux que de faire le traitement toutes les 250 millisecondes, alors que rien n'aura été changé ..., ça va pomper le système ...

    Bon amusement,

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 34
    Par défaut
    Salut,
    Merci pour ta réponse, je vais regarder tout ça.
    C'est sûre qu'il doit y avoir des moyens plus propre pour faire ce genre de chose que d utiliser des timer.
    Comme je suis novice, je suis allé à la facilité.
    Je reviendrai vers toi car je pense que ça doit changer beaucoup de chose dans le code dc pas sûr que je trouve.

    [EDIT]

    Bon je n'ai pas réussi avec ce que tu m'as proposé, je dois louper quelque chose par contre j'ai enlevé le timer et j'ai rajouté cette fonction à la sauvegarde car en fait j ai besoin de voir le résultat en couleur qu'une fois les données sauvegardé, ça fonctionne très bien.
    Je recherche un moyen de faire un retour d'état de ces couleurs sur un autre form. Comment ferais tu ?
    Pour le moment j'ai réussi en ajoutant la table sur le form2 marié avec le même genre de code mais qui me change le backcolor d'un bouton. Il doit sûrement avoir un moyen plus propre de le faire!
    J'ai essayé également d'appeler le résultat de cette couleur de form à form, seul hic ça fonctionne mais que pour la valeur courante pas le datagridview entier.
    Si tu peux m'aiguiller,
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Copie d'image dans une cellule vers une cellule d'une autre feuille
    Par natsamfa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2017, 22h27
  2. Réponses: 2
    Dernier message: 29/07/2016, 17h49
  3. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 18h37
  4. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 18h01
  5. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo