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 :

Alim. ComboBox à partir list pls dimensions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut Alim. ComboBox à partir list pls dimensions
    Bonjour,
    Je souhaiterais alimenter une ComboBox à partir d'une zone de donnée (code - nom).
    Ex: 1-Toto/2-Tata en affichant que les noms.
    J'ai donc crée un type Information
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Type comboInformation
    code As Integer
    label As String
    End Type
    Puis le chargement du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim tableau() as comboInformation
    tableau(1).code = 1
    tableau(1).label = "Toto"
    tableau(2).code = 1
    tableau(2).label = "Tata"
    Puis le chargement de ma combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboBox1.List = tableau.label
    => Et donc c'est la que j'ai mon anomalie
    => "Erreur de compilation. qualificateur incorrect"

    Merci pour votre aide

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Tu parles d'une zone de données. J'en déduit qu'il s'agit d'un Range. Pourquoi passer par une variable tableau? Tu pourrais utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboBox1.RowSource = rngMonRange.Address
    par exemple...

    Ajout:
    Et salut à toi fred65200, suite à ton post suivant le mien...

  3. #3
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir,

    je n'ai pas tout compris mais voici une proposition tirée de l'aide

    tu peux aussi bien évidemment utiliser la propriété RowSource comme le suggère Singular que je salue

    cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ne pas utiliser des mots réservés comme Label.

    Starec

  5. #5
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut
    Merci à tous. Je vais repréciser mon souhait, car je crois ne pas avoir été sufisamment clair

    Je souhaiterais donc alimenter une ComboBox à partir d'une zone de donnée (code - nom).
    Ex: 1-Toto/2-Tata en affichant que les noms.
    Soit un type salarie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Type salarie
    code As Integer
    nom As String
    End Type
    Puis le chargement du tableau personnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim personnel() as salarie
    personnel(1).code = 1
    personnel(1).nom = "Toto"
    personnel(2).code = 2
    personnel(2).nom = "Tata"
    Puis le chargement de ma combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    comboBox1.List = personnel.nom
    => pour charger ma combo, qu'a partir des noms. Mais cela ne marche pas.

    J'ai essayé de faire un tableau à 2 dimensions (cela me plait moins)
    Dim personnel(1 to 2, 1 to 2) as variant
    personnel(1,1) = 1
    personnel(2,1) = 2
    personnel(1,2) ="Toto"
    personnel(2,2) ="Tata"
    comboBox1.List = personnel
    = Fonctionne mais comment alors lui faire afficher que la colonne 2

    Merci pour votre aide. En espérant avoir été plus clair

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir,
    dans le classeur joint hier, remplace le code du UserForm_Initialize

    par
    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
    Private Sub UserForm_Initialize()
    ComboBox1.ColumnCount = 2
    
    Dim tableau(1, 1) As Variant
    tableau(0, 0) = 1
    tableau(0, 1) = "Toto"
    tableau(1, 0) = 2
    tableau(1, 1) = "Tata"
     ComboBox1.List = tableau
    ComboBox1.ListIndex = 0 '
    '    OptionButton1.Caption = "List Index"
    '    OptionButton2.Caption = "Column 1"
    '    OptionButton3.Caption = "Column 2"
    '    OptionButton2.Value = True
    
    ComboBox1.ColumnWidths = "0;100"
    End Sub
    cordialement

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir,

    il faut que ton combo ai 2 col
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UserForm1.ComboBox1.ColumnCount = 2

  8. #8
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    comme tu dis pathou
    Citation Envoyé par fred65200 Voir le message
    je n'ai pas tout compris mais voici une proposition tirée de l'aide


    cordialement

  9. #9
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Par défaut
    Merci fred65200 pour ta réponse.
    Si quelqu'un a une piste sur ma 1ère proposition (tableau de type), je suis aussi preneur.

  10. #10
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    je n'ai jamais travailé avec des types mais j'apprends. merci

    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
    Private Type salarie
    code As Integer
    nom As String
    End Type
    Private Personnel() As salarie
     
    Private Sub UserForm_Initialize()
    ReDim Personnel(2)
    Personnel(0).code = 0
    Personnel(0).nom = "Toto"
    Personnel(1).code = 1
    Personnel(1).nom = "Tata"
    Personnel(2).code = 2
    Personnel(2).nom = "Titi"
    'nombre de colonnes
    ComboBox1.ColumnCount = 2
    'remplissage du combobox
    For i = LBound(Personnel) To UBound(Personnel)
    ' première colonne
    ComboBox1.AddItem Personnel(i).code
    ' seconde colonne
    ComboBox1.List(i, 1) = Personnel(i).nom
    Next
    'colonne des données récupérées
    ComboBox1.BoundColumn = 1
    'largeur des colonnes
    ComboBox1.ColumnWidths = "0;100"
    'affichage
    ComboBox1.ListIndex = 0
    End Sub
    OK?
    cordialement

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

Discussions similaires

  1. Vba definir la liste d'une combobox à partir de sources differentes
    Par yann26 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2014, 06h50
  2. Réponses: 2
    Dernier message: 21/03/2012, 10h21
  3. Liste combobox à partir des donnée d'une base
    Par blue_bird dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/03/2008, 16h30
  4. Réponses: 1
    Dernier message: 23/05/2007, 11h49
  5. [Débutant][Excel] ComboBox et liste de choix
    Par wanou44 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/12/2005, 17h36

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