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

  1. #1
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    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 averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    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
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    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
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    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 averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    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
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    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.

  7. #7
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut

    Salut,

    C'est bien que tu aies pu enlever le Timer (faut pas abuser de ce truc), mais je m'étonne que tu n'y sois pas arrivé avec un événement approprié comme CellValueChanged. Je te donne ci-dessous, et à toutes fins utiles, une procédure qui traite les couleurs quand survient cet événement, c-à-d à chaque changement de valeur.

    Mais ta question actuelle n'est pas là : tu veux transmettre des informations d'un formulaire à un autre, si je comprends bien.
    La méthode la plus simple est celle qui consiste à déclarer des variables Friend dans un formulaire et les affecter à partir de l'autre form.
    C'est parce que les composants visuels (Buton, TextBox, Label, ...) que tu déposes sur un Form sont Friend par défaut, que tu peux affecter le bouton de l'autre formulaire.
    Par exemple :

    Dans le formulaire récepteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Class NomDuFormRecepteur
    Friend MaVariableCible As UnTypeConvenant
    '....
    Et quelque part dans le formulaire émetteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    NomDuFormRecepteur.MaVariableCible = LaValeurAdequate
    '....
    La variable cible peut être de n'importe quel type de structure, de n'importe quel type de donnée. Elle peut être un simple Byte, une String, un tableau de String, une collection, ...
    Il existe d'autres façons de faire, notamment créer des Property mais l'usage de Friend, c'est le plus facile (si on n'est pas contraint à une programmation objet pure).

    Bon travail ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Private Sub MonDataGrigView_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MonDataGrigView.CellValueChanged
            '     ... ... ...
            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
            '     ... ... ...
        End Sub

  8. #8
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    Salut,
    Désolé de répondre si tardivement.
    C'est parfait, ça fonctionne à merveille. Du coup ça ouvre l'esprit sur d'autres choses.
    Par contre je pense que pour le changement de couleur je vais laisser comme ça pour le moment. Avec le temps et l'évolution de cette petite application, je serais peut être amené à changer, à voir.
    Grâce à tes explications j'arrive à transmettre les valeurs des variables de form à form mais il y a un hic,
    Je n arrive pas à effectuer une condition, tant qu'il y a du rouge dans le datagridview alors mon label doit être rouge sinon il doit être transparent.
    Je pense que c'est dans l événement que je choisi ou la méthode que j'utilise car le changement d état ce fait bien au redemarage de l'application.
    Je continue de chercher ...
    En tout cas, un grand MERCI pour tes explications,
    Les conseils d'expert sur ce genre de forum font gagner du temps à des novices comme moi.

  9. #9
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut Changement de la couleur d'une cellule dans une tabledatagridview selon sa valeur

    Je ne suis pas sûr de comprendre ton problème ...

    Voici ce que je comprends :
    Quand une cellule du DataGrid change de valeur, cette valeur est évaluée et est changée de couleur si nécessaire (en rouge, par ex.).
    • Si la couleur d’une cellule est ainsi changée, la couleur d’un Label doit aussi changer (en rouge, par ex.).
    • Si une cellule dont la couleur avait été changée (en rouge, par ex.), change encore de valeur, cette valeur est à nouveau évaluée et est changée de couleur si nécessaire (en noir, par ex., ou bien elle reste en rouge). Cette fois, la couleur du Label ne doit pas forcément changer, elle le doit seulement s’il n’y a plus aucune cellule colorée (en rouge, selon mon exemple) dans le DataGrid.

    Si c’est bien de cela qu’il s’agit, je te propose de placer une variable globale de la classe ou static de la procédure (cf. mon exemple ci-dessous) pour tenir à jour le nombre de cellules colorées du DataGrid (soit CpteRouge as Integer) :

    • quand une cellule doit devenir rouge, si elle ne l’était pas, on la colore en rouge et :
    • on incrémente la variable
    • on colore le Label

    • quand une cellule doit cesser d’être rouge , si elle l’était, on la décolore et :
    • on décrémente la variable et on la teste :
    • si la variable vaut zéro, on « décolore » le label.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
        Private Sub MonDataGrigView_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles MonDataGrigView.CellValueChanged
            '     ... ... …
            Static CpteRouge As Integer
            '     ... ... …
            If MonDataGrigView.CurrentCell.Value < 0 Then  ' Test de la valeur de la cellule
                If MonDataGrigView.CurrentCell.Style.ForeColor <> Color.Red Then
                    CpteRouge += 1
                    MonDataGrigView.CurrentCell.Style.ForeColor = Color.Red  ' Ici Texte en Rouge
                    LeLabelQuiDoitChangerDeCouleur.BackColor = Color.Red 
                End If
            Else
                If MonDataGrigView.CurrentCell.Style.ForeColor = Color.Red Then
                    CpteRouge -= 1
                    MonDataGrigView.CurrentCell.Style.ForeColor = Color.Black
                End If
                If CpteRouge = 0 Then
                    LeLabelQuiDoitChangerDeCouleur.BackColor = Color.White
                End If
     
            End If
    '     ... ... ...
        End Sub

  10. #10
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    Salut,
    Tu as bien tout compris.

    Je viens de copier ton bout de code et j'ai une erreur :

    La référence d'objet n'est pas définie à une instance d'objet.

    Le code s'arrête sur le premier if....... Value < 0

    Je suppose qu'il faut lui dire dans quelle colonne on veut qu'il vérifie la valeur?

  11. #11
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut

    Il faut placer ce code là où tu as le DataGridView (sans doute dans la procédure de réponse à l'événement CellValueChanged) et vérifier les noms que j'ai donnés aux objets dans mon exemple, ils sont sûrement différents des tiens ...
    Je suppose que ton DataGridView ne s'appelle pas MonDataGrigView et que le Label que tu utilises ne s'appelle pas LeLabelQuiDoitChangerDeCouleur.
    Rappelle-moi si problème en me donnant le code de ta procédure, en entier, avec sa ligne d'entête.

  12. #12
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    J'ai effectué un double clic sur mon datagridview puis j'ai changé en cellvaluechanged.
    J'ai copier ton code et coller dedans en changeant le nom du data et celui du label.
    Je vais essayer ce soir de te copier le code en entier mais il est exactement comme le tien sauf les noms.
    Merci.

  13. #13
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut

    Attention, tu ne sembles pas utiliser la bonne méthode pour choisir tes événements.
    Notamment, ce n'est pas sur Double-Click que les mises en couleurs doivent ce faire, mais bien sur un changement de valeur.
    L'illustration ci-dessous montre comment choisir un événement pour un composant donné :
    • Dérouler la liste de gauche et choisir le composant (DGVDonnees sur l'exemple de l'illustration )
    • Ensuite dérouler la liste de droite et choisir l'événement (CellValueChanged sur l'exemple de l'illustration).
    Avec cela, l'éditeur t'as préparé la procédure événementielle et tu n'as plus qu'a y écrire le code que tu souhaites, selon mon illustration ce sera :
    Private Sub DGVDonnees_CellValueChanged(............) Handles DGVDonnees.CellValueChanged
    Nom : Event.jpg
Affichages : 94
Taille : 37,9 Ko

  14. #14
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    Oui je suis d accord avec toi c'est une façon plus propre.
    Donc dans le doute que le logiciel n'avait pas pris en compte la modification en cellvaluechanged
    Je viens de suivre ton conseil et j ai recopié le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Private Sub datagridview1_CellValueChanged(byval sender As Object, byval e As System.Windows.Forms. DatagridViewCellEventArgs) Handles DataGridView1.CellValueChanged
    Dim CpteRouge as integer
    If Datagridview1.CurrentCell.Value < 0 Then
    If Datagridview1.CurrentCell.Style.BackColor <> Color.Red Then
    CpteRouge += 1
    Datagridview1.CurrentCell.Style.BackColor = Color.Red
    Label11.Backcolor = Color.Red
    End If
    Else
    If Datagridview1.CurrentCell.Style.BackColor = Color. Red Then
    CpteRouge-= 1
    Datagridview1.CurrentCell.Style.BackColor = Color.White
    End If
    If CpteRouge = 0 Then
    Label11.BackColor = Color.White
    End If
    End If
    End Sub
    J'espère ne pas avoir fait d erreur en écrivant le code !!!

    Hélas j'ai toujours l'erreur d'objet.
    Depuis le début, il me cause soucis ce Cellvaluechanged.

  15. #15
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    En faisant comme ceci ça fonctionne car impossible depuis le début de faire changer une couleur avec cellvaluechanged :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Public Sub Change Couleur ()
     
    Dim CpteRouge As Integer
    Dim Valeur As Integer
     
    For i As Integer = 0 To Datagridview1.Rows.Count()-1 Step +1
    Valeur = Datagridview1.Rows(i).Cells(6).Value
    If Valeur <5 Then
    If Datagridview1. CurrentCell. Style.BackColor <> Color.Red Then
    CpteRouge = +1
    Datagridview1.Rows.(i).DefaultCellStyle.BackColor = Color.Red
    Label12.BackColor = Color.Red
    End If
    Else
    If Datagridview1. CurrentCell. Style.BackColor = Color.Red Then
    CpteRouge = -1
    Datagridview1.Rows.(i).DefaultCellStyle.BackColor = Color.White
    End If
    If CpteRouge = 0 Then
    Label12.BackColor = Color.White
    End If
    End If
    Next
    End Sub
    J'appelle ce code à chaque sauvegarde.

    Par contre je ne comprends pas pourquoi en choisissant certaines fonctions comme click, cellvaluechanged, cellformating je n'obtiens aucun résultat pour les couleurs. Plusieurs code différents et pas de résultat
    Merci.

  16. #16
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut

    Plusieurs erreurs :
    La variable CpteRouge DOIT être déclarée STATIC.
    Le nom de ta Sub Change Couleur ne peut pas contenir un espace, ça doit être Sub ChangeCouleur()
    Il y a un point de trop dans Datagridview1.Rows.(i).DefaultCellStyle.BackColor : cela doit être Datagridview1.Rows(i).DefaultCellStyle.BackColor
    De plus, ce code n'est pas valable si tu l'exécutes une fois de temps en temps. Il est conçu pour être exécuté à chaque changement de valeur. Voilà pourquoi je le place sous l'événement CellValueChanged.
    Voici la procédure complète à coller dans ton programme après avoir mis ta Sub ChangeCouleur en commentaires.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        Private Sub Datagridview1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Datagridview1.CellValueChanged
            Static CpteRouge As Integer = 0
            If Datagridview1.CurrentCell.Value < 5 Then  ' Test de la valeur de la cellule
                If Datagridview1.CurrentCell.Style.ForeColor <> Color.Red Then
                    CpteRouge += 1
                    Datagridview1.CurrentCell.Style.ForeColor = Color.Red  ' Ici Texte en Rouge
                    Label12.BackColor = Color.Red  ' Ici Texte en
                End If
            Else
                If Datagridview1.CurrentCell.Style.ForeColor = Color.Red Then
                    CpteRouge -= 1
                    Datagridview1.CurrentCell.Style.ForeColor = Color.Black
                End If
                If CpteRouge = 0 Then
                    Label12.BackColor = Color.White
                End If
            End If
        End Sub
    La soirée est finie pour moi ...
    Bonne soirée chez toi.

  17. #17
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    Salut,
    Désolé pour mon erreur d'écriture. Le pc ou j'utilise vb express 2010 n'est pas connecté pour le moment à internet et de ce fait je tape tout le code à la main sur mon téléphone, je ne peux donc pas faire de copier coller en rajoutant les balises. L'erreur est une mauvaise vérification d'écriture de ma part. Je ferai attention dorénavant à bien me relire avant d'envoyer la réponse.
    J'ai d'autres questions à te poser si tu le veux bien toujours sur le sujet des couleurs d'un datagridview.
    Encore désolé.
    Merci.

  18. #18
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut

    T'inquiète pas pour les erreurs ..., tout le monde en fait.
    Je t'encourage à utiliser mon code tel que je te l'ai envoyé.
    Bien sûr que je reste disponible pour d'autres infos.
    Bon travail.

  19. #19
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    1

    Par défaut

    Salut,
    Ton code ne fonctionne toujours pas chez moi j ai toujours le même code erreur d objet.
    Quand je lance le form qui possède le datagridview, il souligne en vert la ligne du premier If
    Erreur: la référence d'objet n'est pas définie à une instance d'un objet.

    Pour la nouvelle question elle concerne les datagridviews en relation entre ID

    Si le datagridview1 est en relation avec l id du datagridview2, Comment peut on faire pour changer également la couleur de la ligne du datagridview2 tant qu il y a des lignes en rouge sur le datagridview1.

    Merci.

  20. #20
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    novembre 2013
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2013
    Messages : 241
    Points : 354
    Points
    354

    Par défaut

    Il ne peut y avoir de problème sur la ligne du 1er If si ton DataGridView se nomme bien datagridview1 et que mon code est bien dans SA procédure événementielle.
    Au besoin, envoie-moi toute ton application (éventuellement par zip attaché au message), si je peux l'ouvrir en VS2010 ou VS2015.

    Mais je me demande si on ne dévie pas du sujet :

    Au début, tu veux mettre une cellule en couleur.
    Puis, tu veux aussi mettre un Label en couleur.
    Jusque là, mon code convient.

    Maintenant, tu sembles vouloir mettre toute une ligne en couleur et, de plus, une autre ligne dans un autre DataGrid ! On ne parle lus du même problème et cette fois mon code ne convient plus.
    Et je n'ai pas assez de précisions sur l'algo envisagé pour produire du code ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

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