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

Macros et VBA Excel Discussion :

Combobox : Optimiser code : Additem ou List [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut Combobox : Optimiser code : Additem ou List
    Bonjour,

    Etant novice ma question paraîtra très certainement idiote mais bon je me lance car je galère un peu.

    Je souhaite à partir de la valeur d'un Textbox "TB_ID" mettre automatiquement une valeur dans différentes combobox notamment "ZLM_Ouvrages" et "ZLM_Elements".
    Le choix de combobox viens du fait que je prévois ensuite de modifier la valeur du Textbox "TB_ID" selon le choix au sein des zones de liste en cas de non connaissance de l'ID.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Me.ZLM_Ouvrages.AddItem Sheets("BDMat").Cells(Me.TB_ID.Value, 2).Value
    Me.ZLM_Ouvrages.ListIndex = 0
    Me.ZLM_Elements.AddItem Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    Me.ZLM_Elements.ListIndex = 0
    Cela semble fonctionner ma question est que j'ai vu sur le tutoriel que l'on pouvait utiliser la propriété .List pour ajouter des lignes mais ça ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me.ZLM_Ouvrages.List(0) = Sheets("BDMat").Cells(Me.TB_ID.Value, 2).Value
    Me.ZLM_Elements.List(0) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    Est-on obligé d'ajouter des items avec la méthode additem puis d'attribuer une valeur à la liste, ou peut-on directement attribuer une valeur sans utiliser additem.

    Désolé d'avance si je suis pas très clair.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,

    AddItem sert à ajouter
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ZLM_Ouvrages.AddItem Sheets("BDMat").Cells(Me.TB_ID.Value, 2).Value
    ZLM_Ouvrages.AddItem Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    ZLM_Ouvrages.AddItem Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    .List(0) = ...
    sert à modifier le premier élément dans ton combobox
    ex.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ZLM_Ouvrages.List(0) = Sheets("BDMat").Cells(Me.TB_ID.Value, 2).Value 'Modifie le premier élément de ton combobox pour une nouvelle valeur
    ZLM_Elements.List(1) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value  'Modifie le 2e élément de ton combobox pour une nouvelle valeur
    ZLM_Elements.List(2) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value  'Modifie le 3e élément de ton combobox pour une nouvelle valeur

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox ZLM_Ouvrages.List(0)
    récupère le premier élément de ton combobox

    en espérant de t'avoir éclairé.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Bonjour gnain,

    Tout d'abord merci de ta réponse.

    J'ai effectivement saisi que additem permet d'ajout des éléments à ma zone de liste, une sélection de l'item choisi permet d'attribuer la valeur à ma zone de liste. J'ai cependant rencontré un problème si je n'ai qu'un élément à ma zone de liste. Une erreur apparaissait alors, d'où ma ligne attribuant à ma zone de liste la première valeur de l'index de List. N'y a-t-il pas un moyen plus rapide d'associer directement une valeur à ma zone de liste?

    Je pensais au départ que la propriété .list permettait justement cela or si je comprends bien cette propriété n'a pour objectif d'agir que sur l'ordre des données de la liste ajoutée grâce à additem et non sur la valeur en elle-même. C'est bien cela?


    Car si je mets la ligne de code suivante ça plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ZLM_Elements.List(2) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    Erreur 381 : impossible de définir la propriété de List

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    additem ajoute les éléments à ta liste

    tandis que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ZLM_Elements.List(2) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    modifie le 3e élément du combobox qui à été ajouté par additem
    si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ZLM_Elements.List(3) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    modifie le 4e élément du combobox qui à été ajouté par additem

    .list n'ajoute en aucun temps des donnée au combobox

    tu dis que:

    Citation Envoyé par bickou Voir le message
    J'ai cependant rencontré un problème si je n'ai qu'un élément à ma zone de liste. Une erreur apparaissait alors,
    et tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ZLM_Elements.List(2) = Sheets("BDMat").Cells(Me.TB_ID.Value, 3).Value
    c'est normal que ca plante car tu veux modifier le 3e item du combobox quand il en existe pas

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Merci pour ton explication tout s'éclaire

    Je passe en résolu bonne soirée et encore merci.

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

Discussions similaires

  1. Code événement sur liste de choix
    Par Nessie37 dans le forum IHM
    Réponses: 14
    Dernier message: 30/08/2007, 06h59
  2. un evennement onclick sur combobox par code
    Par Mihalis dans le forum Delphi
    Réponses: 6
    Dernier message: 10/06/2007, 15h57
  3. [optimisation] Minimum d'une liste
    Par Nemerle dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 18/01/2007, 18h52
  4. [VBA-E]Combobox et code trop long!! (debutante)
    Par legend dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/03/2006, 14h23
  5. [W3C] Code item de liste non valide dixit w3c validator !!
    Par Christophe Charron dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/02/2006, 15h10

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