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 :

Nom de Combobox variable [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 21
    Par défaut Nom de Combobox variable
    Bonjour,

    Après quelques recherches sur google je n'ai toujours pas trouvé réponse pour répondre à mon objectif.

    Contexte :

    J'ai une table avec toutes mes données pour mes combobox

    j'ai un champs catégorie (exemple couleur ) et un champs valeur (exemple rouge, vert ...)
    exemple 2 catégorie (taille) , valeurs (petit, moyen , grand )

    en ouverture de fenêtre (load), je remplie mes combobox, mais j'en ai pas mal !

    Tout est sur le même principe, je fait une requête SELECT donnée FROM matable WHERE categorie='couleur', puis je met le résultat de ma requête dans mon combobox.

    la seule chose qui change, c'est le nom de ma combobox et la catégorie

    plutôt que d'avoir X fois le meme code avec 2 truc qui change pourquoi ne pas faire une fonction avec 2 paramètres
    le paramètre catégorie, c'est facile.

    Ce que je cherche a faire :

    si mon combobox s'appel : CBB_couleur
    pour ajouter une valeur : CBB_couleur.Items.Add("rouge")

    maintenant comment puis-je faire pour que le nom de ma combo soit variable dans une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub mafonction_maj_combo (ByVal comboname As String, ByVal categorie As String)
     
    '(..mon code SQL...)
     
    ' ceci ne fonctionne pas :
     
    comboname.Items.Add("rouge")
     
    end sub
    quel est l'astuce ?

    par avance merci

    Christophe

  2. #2
    Membre très actif
    Homme Profil pro
    Expertise sécurité
    Inscrit en
    Avril 2013
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expertise sécurité

    Informations forums :
    Inscription : Avril 2013
    Messages : 185
    Par défaut
    Hello,

    Pour m'être battu avec des combobox sur Word, je pense que tu peux peut-être essayer de parcourir l'ensemble de tes combobox avec leur type plutôt qu'avec leur nom.
    Je n'ai pas la réponse exact à ton problème, mais je m'y prendrais à peu près comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si c'est une combobox
       Call mafonction_maj_combo(monObjetCombobox)
    Sinon 
       Do other things
    Alors... Un petit exemple où l'on parcours des combobox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each oCtl In ThisDocument.InlineShapes
                If TypeName(oCtl.OLEFormat.Object) = "ComboBox" Then
                        Call Combobox_Initialize(oCtl.OLEFormat.Object)
                End If
    Next oCtl
    Ici c'est tout bête, je parcours tout les éléments de types InlineShapes à la première ligne.
    A la seconde ligne je vérifie que ce sont des combobox (ce nom là ne bouge pas, c'est le type et pas le nom d'ailleurs...).
    Ensuite je fais mon traitement via la fonction qui prend une combobox en paramètre.
    Et le tour est joué.

    La fonction Combobox_Initialize :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Combobox_Initialize(ByRef combo As combobox)
      combo.List() = Array("Option1", "Option2")
      combo.Value = ""
    End Sub
    En espérant t'avoir aidé,

    @+

    JayGr

  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
    Par défaut
    Bonjour,

    Il suffit de passer en paramètre la combobox et donc de définir ce paramètre de type ComboBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub mafonction_maj_combo (ByVal comboname As ComboBox, ByVal categorie As String)
     
        '(..mon code SQL...)
     
        comboname.Items.Add("rouge")
     
    end sub
    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
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 21
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Bonjour,

    Il suffit de passer en paramètre la combobox et donc de définir ce paramètre de type ComboBox.
    mon appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        alimante_combo("CB_unit_catego", "toto")
    Ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       Sub alimante_combo(ByVal comboname As ComboBox, ByVal categorie As String)
     
            '(..mon code SQL...)
     
            comboname.Items.Add(categorie)
     
        End Sub
    Si sur le principe ca semble bien, VB retourne une erreur :

    Impossible de convertir une valeur de type 'String' en 'System.Windows.Forms.ComboBox'.
    J'ai cette erreur sur le "CB_unit_catego" de l'appel de la fonction

    il me propose de résoudre le problème en ajoutant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub alimante_combo(p1 As String, p2 As String)
            Throw New NotImplementedException
        End Sub
    Mais ca marche pas plus !

    une idée de la cause ?

  5. #5
    Membre très actif
    Homme Profil pro
    Expertise sécurité
    Inscrit en
    Avril 2013
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expertise sécurité

    Informations forums :
    Inscription : Avril 2013
    Messages : 185
    Par défaut
    Citation Envoyé par noscollections Voir le message
    mon appel
    Si sur le principe ca semble bien, VB retourne une erreur :

    J'ai cette erreur sur le "CB_unit_catego" de l'appel de la fonction

    il me propose de résoudre le problème en ajoutant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub alimante_combo(p1 As String, p2 As String)
            Throw New NotImplementedException
        End Sub
    Mais ca marche pas plus !

    une idée de la cause ?
    Tout est là... Tu lui dit que tu vas passer un type combobox tu lui envoies un String... Ou tu lui passes un type combobox ou tu lui passes un String...
    Là tu lui passes le nom, pas la combo.

  6. #6
    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
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Il suffit de passer en paramètre la combobox
    appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        alimante_combo(CB_unit_catego, "toto")
    Ou CB_unit_catego est le nom donné à ton contrôle combobox.

    Autre exemple
    Citation Envoyé par noscollections Voir le message
    Ce que je cherche a faire :
    si mon combobox s'appel : CBB_couleur
    pour ajouter une valeur : CBB_couleur.Items.Add("rouge")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        alimante_combo(CBB_couleur, "toto")
    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.

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

Discussions similaires

  1. Module dont le nom est une variable
    Par Mr Hyde dans le forum Général Python
    Réponses: 11
    Dernier message: 26/02/2023, 20h39
  2. Nom de table variable ?
    Par szdavid dans le forum Oracle
    Réponses: 2
    Dernier message: 10/08/2005, 10h56
  3. [Reflection] Connaître le nom d'une variable ...
    Par dahwoud dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/08/2005, 14h37
  4. [try except keyerror] récupérer le nom de la variable
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 03/03/2005, 16h59
  5. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02

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