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 :

Comment insérer certains éléments d'un fichier dans une ComboBox


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment insérer certains éléments d'un fichier dans une ComboBox
    Bonjour je suis entrain de concevoir un programme dans vb.net qui va me permettre d'aller lire dans un fichier et de mettre les element de ce fichier dans un combobox.
    voici par exemple ce que j'ai dans mon fichier

    abdou 12 14
    abdou 15 19
    cheikh 12 3
    tima 6 9
    patrick 7 9
    ect....

    je voudrais faire un tri pour juste les nom mais les les chiffre et les afficher dans un combobox et qu'un nom doit etre affiché une seule fois dans le combo box

  2. #2
    Membre expérimenté Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Points : 1 461
    Points
    1 461
    Par défaut
    Tu pourrais redonner ta dernière phrase plus clairement, j'ai pas compris ce que tu voulais Oo
    Expert en recherche google caféinomane

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Voici une solution

    Vous faites une classe représentant la structure de votre fichier.
    Vous lisez le fichier et créez une liste de cette classe.
    Vous faite une extraction des info voulues depuis cette liste.

    La classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Class LigneFichier
            Property Nom As String
            Property chiffre1 As Integer
            Property chiffre2 As Integer
            Sub New(unNom As String, unChiffre1 As Integer, unChiffre2 As Integer)
                Nom = unNom
                chiffre1 = unChiffre1
                chiffre2 = unChiffre2
            End Sub
        End Class
    Le traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Dim LstLignes As List(Of LigneFichier) = New List(Of LigneFichier)
     
        Private Sub btnLitFic_Click(sender As System.Object, e As System.EventArgs) Handles btnLitFic.Click
            ' lecture fichier et constitution de la liste
            For Each ligne As String In File.ReadAllLines("D:\data\fichiers\fic.txt")
                LstLignes.Add(New LigneFichier(ligne.Split()(0), ligne.Split()(1), ligne.Split()(2)))
            Next ligne
            ' rempli la combobox (possible aussi avec une listbox)
            For Each UnNomUnique In (From element In LstLignes Select element.Nom Distinct)
                ComboBox1.Items.Add(UnNomUnique)
            Next
        End Sub
    N'oubliez pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Imports System.IO
    Imports System.Linq
    [Edit]Vous pouvez même trier par nom en ajout un order by sur le nom.[/Edit]
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut comment ajout du texte dans un combo box
    merci de votre solution mais le mon vb.net ne reconnait pas cette ligne LstLignes.Add(New LigneFichier(ligne.Split()(0), ligne.Split()(1), ligne.Split()(2)))

    est ce que ya une autre methode bcp plus simple comme par exemple utiliser les tableau ds vb

  5. #5
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par caln50 Voir le message
    merci de votre solution mais le mon vb.net ne reconnait pas cette ligne LstLignes.Add(New LigneFichier(ligne.Split()(0), ligne.Split()(1), ligne.Split()(2)))
    rv26t a peut-être voulu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstLignes.Add(New LigneFichier(ligne.Split(0), ligne.Split(1), ligne.Split(2)))
    N'oubliez pas le tag et

  6. #6
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par caln50 Voir le message
    est ce que ya une autre methode bcp plus simple comme par exemple utiliser les tableau ds vb
    Je déconseille en règle générale les tableaux, et encore plus pour ton cas à toi qui vise à récupérer une liste d'items depuis un fichier texte.
    Un tableau a une taille définie, or toi depuis ton fichier texte ce n'est peut-être pas le cas (ou peut-être pas dans le futur)

    Ce serait plus simple à gérer depuis des collections.
    (Et même gérer des List(Of LigneFichier))


    Citation Envoyé par callo Voir le message
    rv26t a peut-être voulu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstLignes.Add(New LigneFichier(ligne.Split(0), ligne.Split(1), ligne.Split(2)))
    Je ne pense pas, Split() renvoit un tableau de chaînes de caractères donc le chiffre est l'index du tableau, mais ce qu'il manque est peut-être le caractère séparateur requis par l'utilisation de Split.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LstLignes.Add(New LigneFichier(ligne.Split(" ")(0), ligne.Split(" ")(1), ligne.Split(" ")(2)))
    Sur ce principe, pour la ligne en cours de lecture, on split la ligne à chaque caractère "espace" (" ")

    Ce qui donne avec l'exemple de caln50 (abdou 15 19) :

    Un tableau qui contient :
    Index 0|abdou|
    Index 1|15|
    Index 2|19|

    Et rv26t passe ensuite ces valeurs du tableau dans le constructeur de la classe LigneFichier afin que les properties soient chargés directement. (D'ailleurs les 2 des 3 properties sont en Integer, ne faut-il pas parser le retour du tableau de split à l'index 1 et 2 ?)

    Soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          If Integer.TryParse(ligne.Split(" ")(1), 0) And Integer.TryParse(ligne.Split(" ")(2), 0) Then
                LstLignes.Add(New LigneFichier(ligne.Split(" ")(0), Integer.Parse(ligne.Split(" ")(1)), Integer.Parse(ligne.Split(" ")(2))))
            End If
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par caln50 Voir le message
    merci de votre solution mais le mon vb.net ne reconnait pas cette ligne LstLignes.Add(New LigneFichier(ligne.Split()(0), ligne.Split()(1), ligne.Split()(2)))

    est ce que ya une autre methode bcp plus simple comme par exemple utiliser les tableau ds vb
    Merci de préciser l'erreur.
    Le code présenté fonctionne avec la version 2010 (J'avais testé avant de poster. Voir fichier en pièce jointe (listbox et combobox))
    Avec .NET l'utilisation de collection est conseillé. Autant s'habituer dés le début. De plus une solution avec des tableaux ne sera pas forcément plus simple, ce sera différent.

    Citation Envoyé par _Ez3kiel Voir le message
    Ce serait plus simple à gérer depuis des collections.
    (Et même gérer des List(Of LigneFichier))
    Ce que j'ai proposé dans mon code.

    Citation Envoyé par _Ez3kiel Voir le message
    Je ne pense pas, Split() renvoit un tableau de chaînes de caractères donc le chiffre est l'index du tableau, mais ce qu'il manque est peut-être le caractère séparateur requis par l'utilisation de Split.
    Par défaut la méthode Split utilise l'espace comme caractère séparateur.
    Donc écrire ligne.Split() est la même chose que ligne.Split(" ")Les éléments (0), (1) et (2) accolé derrière Split() sont effectivement les indices du tableau. Et donne le résultat décrit par _Ez3kiel.
    Cela évite de créer un tableau, puis de le parcourir ; On accéde directement à l'indice voulu.

    Citation Envoyé par _Ez3kiel Voir le message
    Et rv26t passe ensuite ces valeurs du tableau dans le constructeur de la classe LigneFichier afin que les properties soient chargés directement. (D'ailleurs les 2 des 3 properties sont en Integer, ne faut-il pas parser le retour du tableau de split à l'index 1 et 2 ?)
    Vb effectue des conversions implicites, mais effectivement il est préférable et conseillé de gérer ces conversions comme le souligne _Ez3kiel.

    Pour finir, une requête Linq extrait les noms de façon unique de notre liste d'instance de classe LigneFichier. La boucle For Each permet le parcours de ceux-ci et les ajoutes dans la ComboBox.
    Images attachées Images attachées  
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. comment recuperer le contenu d un fichier dans une div
    Par astoner dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 03/09/2013, 11h34
  2. Réponses: 6
    Dernier message: 15/04/2013, 15h20
  3. [MySQL] comment insérer les informations d'un formulaire dans une table
    Par eljed dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/05/2011, 12h01
  4. Réponses: 2
    Dernier message: 09/12/2009, 18h20
  5. Réponses: 13
    Dernier message: 01/08/2008, 16h11

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