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 :

Rechercher une valeur dans un interval


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 20
    Par défaut Rechercher une valeur dans un interval
    Bonjour,

    J'ai une liste des champs dans une datagridview

    Je veux chercher la valeur d'une de la colonne (E2) a quelle intervalle appartient (L1,L2,L3,..)

    La valeur de la colonne Level doit contenir le la valeur des L (L1, L2,...) juste le moins inferieur

    Merci pour votre support

    Nom : image1.png
Affichages : 306
Taille : 7,0 Ko

  2. #2
    Membre confirmé Avatar de GavrocheNET
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2016
    Messages : 54
    Par défaut
    Salut,

    Hmm..je sais pas bien si j'ai compris ton problème, mais je serais tenter de proposer ça (a adapter selon tes infos) :

    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
     For Each Row As DataGridViewRow In TaGridView.Rows
                    Dim ValeurE As Integer = TaGridView.Item("E2", Row.Index).Value
                    Dim Level As Integer = 0
     
                    For Each Col As DataGridViewColumn In TaGridView.Columns
                        If Col.Name = "E2" Then Continue For
                        If Col.Name = "Level" Then
                            TaGridView.Item(Col.Index, Row.Index).Value = Level
                        Else
                            If TaGridView.Item(Col.Index, Row.Index).Value <= ValeurE Then
                                Level = TaGridView.Item(Col.Index, Row.Index).Value
                            End If
                        End If
                    Next
                Next
    Une boucle qui parcoure tes lignes et tes colonnes et qui fixe la valeur level aux valeurs inférieures présentes dans la grille...

    Si ça répond pas à ta question, peux-tu préciser ta demande ?

    (Je précise que ceci ne fonctionne que si les colonnes que tu montres sont les seules présentent dans la grille ^^, dans le cas contraire il faudra poser des limites !)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GavrocheNET Voir le message
    If TaGridView.Item(Col.Index, Row.Index).Value <= ValeurE Then
    Level = TaGridView.Item(Col.Index, Row.Index).Value
    End If
    ce code fonctionne effectivement, si les lignes sont triées. est-ce bien le cas ?

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Bah tu peux utiliser Linq ...
    code exemple avec des données de test aléatoires :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
     
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            DataGridView1.DataSource = GetTable()
            For i As Integer = 0 To DataGridView1.Rows.Count - 2
                Dim row As DataGridViewRow = DataGridView1.Rows(i)
                Dim currentCell As DataGridViewCell = row.Cells(0)
                Dim pet As DataGridViewCell =
                    row.Cells.Cast(Of DataGridViewCell)().ToList().Find(Function(x) x.Value > currentCell.Value)
                If pet Is Nothing Then Continue For
     
     
                Dim k As Integer = row.Cells.IndexOf(pet)
                ListBox1.Items.Add(currentCell.Value.ToString + "-" + DataGridView1.Columns(k).Name + "-" + pet.Value.ToString())
            Next
     
     
     
     
        End Sub
        Private rnd1, rnd2 As Random
        Private Function GetTable() As DataTable
            Dim col As DataColumn
            Dim dt As New DataTable()
            col = New DataColumn("E2", GetType(Double))
            dt.Columns.Add(col)
            For i As Integer = 1 To 6
                col = New DataColumn("L1" + i.ToString, GetType(Double))
                dt.Columns.Add(col)
            Next
     
            rnd1 = New Random
            rnd2 = New Random
            Dim dr As DataRow = dt.NewRow
            For i As Integer = 1 To 20
                For j As Integer = 0 To dt.Columns.Count - 1
                    If j = 0 Then
                        dr(j) = Math.Round(rnd1.NextDouble() * 100.0, 2)
                    Else
                        dr(j) = Math.Round(rnd2.NextDouble() * 100.0, 2)
                    End If
     
     
                Next
                dt.Rows.Add(dr)
                dr = dt.NewRow
            Next
            Return dt
        End Function
     
    End Class
    bon code....

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 20
    Par défaut
    Bonjour

    J'ai essayé de modifier le code en remplissant la matrice dans un datareader,

    puis en parcourant la colonne E2 du datagridview et comparer par la colonne valeur(dreader(5)) ) du datareader
    et il prend la valeur juste inferieur si le E2 est supérieure à celle du matrice.
    J'ai réussi de récupérer la valeur pour la première seulement mais ça ne fonctionne pas pour les restes des lignes.

    Ci dessous 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
    20
    21
    22
    23
    24
    25
     
              Dim dreader As SqlDataReader = getmatrix()
                Dim min As Decimal = 0
     
                For i = 0 To DataGridView1.RowCount - 1
                    While (dreader.Read())
                        If (DataGridView1.Rows(i).Cells("Workplace").Value = dreader(0)) Then
                            If (DataGridView1.Rows(i).Cells("E2").Value >= dreader(5)) Then
                                min = dreader(5)
                                MsgBox(min)
                            End If
                            DataGridView1.Rows(i).Cells("level").Value = min
                        End If
                    End While
                Next
     
      Private Function getmatrix()
            conn = New SqlConnection()
            conn = connexion()
            Dim sql As String = ("select workplace,workplacegroup,cost_center,area,niveau,valeur,month from matrice")
        Dim exec As SqlCommand = New SqlCommand(sql, conn)
            Dim dreader As SqlDataReader = exec.ExecuteReader
            Return dreader
            conn.Close()
        End Function
    Et cette photo du résultat que j'ai obtenu

    Nom : Sans titre.png
Affichages : 325
Taille : 42,4 Ko

    Merci pour votre soutient et votre coopération

Discussions similaires

  1. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  2. Rechercher une valeur dans plusieurs feuilles
    Par modus57 dans le forum Excel
    Réponses: 28
    Dernier message: 30/03/2008, 18h54
  3. Rechercher une valeur dans excel avec VBA
    Par kebab666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2007, 10h00
  4. [find] Comment rechercher une valeur dans une matrice
    Par VanessaDu67 dans le forum MATLAB
    Réponses: 6
    Dernier message: 06/06/2007, 14h55
  5. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23

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