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 :

remplir des combo box par une fonction ?


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut remplir des combo box par une fonction ?
    Bonjour à tous et toutes !

    J'ai une application que je fais pour un ami qui au départ fonctionnait dans Excel.

    C'était une feuille Excel pour rentrer les heures de travail des employés avec la description de la tâche.

    La feuille était pour une semaine au complet.

    Genre...

    7h00
    1h00 travaillé entretient
    8h00

    8h00
    3h30 travaillé formation
    11h30

    etc.....

    cet affichage X 5 pour les cinq jours de la semaine.

    Il veut un suivit informatique avec des rapports et tout le tralala...


    J'ai fait l'interface et tout est ok.

    J'ai dans une journée quatre combo box qui affichera les mêmes choix pour l'emploi (formation, entretient, etc.......). Je sais que c'est pas extra comme interface mais c'est la demande du client et les employés ne veulent pas de changement dans l'interface. DOnc je dois faire tout mon possible afin que le logiciel soit pareil à la feuille EXCEL.... grrrr !

    Chaque jour de la semaine c'est un GroupBox qui contient les champs de saisie des heures de travail (début et fin), avec des label pour afficher le nombre d'heures travaillés et quatre combo box pour les choix de travails.

    Quatre combo box par jour FOIS 5 donne 20 combo box à remplir. Je vois mal d'appeler 20 fois une procédure ou fonction pour remplir ces combo box...

    Je me demandais s'il existe un moyen d'avoir tous les combo box qui sont dans un groupebox, prendre leur nom de controle, les passer en paramètres à une procédure pour remplir ces combo box (code avec BD Access déjà opérationel testé sur un combo box) en bouche for each genre ????

    J'ai fouillé dans la FAQ et rien trouvé et après 10 pages dans le forum je n'ai rien trouvé. Je ne veux pas faire 20 fois un remplissage c'est impensable côté optimisation....

    Merci de m'aider

    AngelEvil!

  2. #2
    Membre habitué
    Homme Profil pro
    Informaticien
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Service public

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 158
    Points
    158
    Par défaut
    Bonjour angelevil,

    S'il s'agit simplement de remplir tes ComboBox, tu peux faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 0 To LastComboRef
        Me.Controls("ComboBox" & i).Text = "Value"
    Next
    Il suffit que tes ComboBox soient référencés de manière croissante (ComboBox0, ComboBox1,..., ComboBoxLastRef).

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il faut éviter les conventions de nomages, surtout avec des variables en dur pour dire le nombre qu'il y a

    ca donnerait donc plutot ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each c as control in legroupbox.controls
      if typeof c is combobox then RempliCombobox(directcast(c,combobox))
    next
    ou en linq, un truc dans le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim comboboxes = (from c as control in legroupbox.controls where typeof c is combobox select directcast(c,combobox))
    comboboxes.foreach(addressof RempliCombobox)
    dans les 2 cas ca n'optimise pas le temps d'exécution par rapport à 20 appels explicites
    ca réduit juste le nombre de lignes (donc plus rapide à coder et à relire)


    après si ta procédure fait juste des .items.add avec des string définis tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim listevaleurs as new list(of string)
    listevaleurs.Add("valeur 1")
    listevaleurs.Add("valeur 2")
     
    for each c as combobox in legroupbox.controls.oftype(of combobox)
        c.items.addrange(listevaleurs.toarray)
    next
    voilà pour quelques syntaxes possibles avec le framework 3.5, avec le framework 4 on pourrait encore gagner une ligne avece une méthode anonyme
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Merci pour vos réponses.

    Je vais regarder ca et si j'ai des questions je vous reviendrai.

    bonne soirée !

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu aurais aussi pu créer tes x combobox par code avec une boucle plutot que de les poser à la main
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Bonsoir,

    J'ai essayé l'appel de fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for each c as control in legroupbox.controls
      if typeof c is combobox then RempliCombobox(directcast(c,combobox))
    next
    que j'ai modifié bien sur et ça fonctionne. J'ai 5 fois ce code qui me donner le résultat escompté.

    Merci de m'avoir aidé!

    AngelEvil

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/04/2013, 17h15
  2. [XL-2003] Restreindre valeurs des paramètres appelés par une fonction
    Par azerty_2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/03/2011, 08h50
  3. Remplir un Combo box selon une valeur
    Par lilloDay dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/07/2010, 12h46

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