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 :

rang dans d'une valeur dans une colonne du datagridview


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Points : 36
    Points
    36
    Par défaut rang dans d'une valeur dans une colonne du datagridview
    salut
    j'ai un datagridview de 3 colonnes et de 20 lignes alimenté par un source de données de 3 champs "Nom", "note", "rang"
    j'aimerai savoir comment calculer la valeur du rang de chaque cellule de la colonne 2 et l'afficher dans la cellule voisine par analogie à la fonction RANG d'Excel.

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    si tu fait une classe avec 3 propriété Nom, Note, Rang et tu fait le calcule de rang sur cette classe ensuite tu remplie le datgridview a partir de la classe c'est mieux (et DatagridView n'est pas exactement Excel )

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par charouel Voir le message
    si tu fait une classe avec 3 propriété Nom, Note, Rang et tu fait le calcule de rang sur cette classe ensuite tu remplie le datgridview a partir de la classe c'est mieux (et DatagridView n'est pas exactement Excel )
    merci charouel
    mais ma source de données est vide seuls les noms des élèves qui y figurent.
    et par saisie de la note directement dans la cellule2 du DatagridView, y'a-il un code qui générer automatiquement le rang de celle-ci dans la cellule 3
    merci.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 671
    Points : 1 171
    Points
    1 171
    Par défaut
    Bonsoir,
    vu que le rang d'une note est le nombre de notes supérieure à celle ci + 1, dans une liste décroissante de toutes les notes.
    Donc on récupère toutes les notes dans la colonne concernées du Dgv (List(Of Double)).
    On trie la liste, ordre décroissant.
    Enfin on recherche l'index de chaque note dans la liste triée.
    Genre :
    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
        Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
     
            '--- Récupération des notes dans une liste.
            Dim listNotes As New List(Of Double)
            If col = 1 Then
                For i As Integer = 0 To DataGridView1.RowCount - 1
                    If DataGridView1.Rows(i).Cells(1).Value IsNot Nothing Then
                        listNotes.Add(CDbl(DataGridView1.Rows(i).Cells(1).Value.ToString))
                    End If
                Next
                '--- Tri de cette liste, ordre décroissant.
                Dim reverseComp As Comparison(Of Double) = Function(x, y) y.CompareTo(x)
                listNotes.Sort(reverseComp)
            End If
     
            '--- Recherche de l'index dans la liste de la note cherchée.
            '--- Vu que cette fonction ne s'occupe que de la 1ère occurrence trouvée, les ex aequo sont traités
            For i As Integer = 0 To DataGridView1.RowCount - 1
                If DataGridView1.Rows(i).Cells(1).Value IsNot Nothing Then
                    DataGridView1.Rows(i).Cells(2).Value = listNotes.IndexOf(CDbl(DataGridView1.Rows(i).Cells(1).Value)) + 1
                End If
            Next
     
        End Sub
    Pour col et lin, on les récupère en temps réel dans cet événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Dim col As Integer
        Dim lin As Integer
        Private Sub DataGridView1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellChanged
     
            col = DataGridView1.CurrentCell.ColumnIndex
            lin = DataGridView1.CurrentCell.RowIndex
     
        End Sub
    Voici un début de réflexion.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19
  5. Recuperer une valeur d'une ADOTable dans un Edit
    Par yannba dans le forum Bases de données
    Réponses: 6
    Dernier message: 26/01/2006, 16h28

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