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 :

Alimenter une ListBox dans un formulaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Employé administratif
    Inscrit en
    Février 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Février 2014
    Messages : 78
    Par défaut Alimenter une ListBox dans un formulaire
    Bonjour,

    Je souhaite attribuer des données source à une ComboBox.

    La liste des données pour cette ComboBox se trouve dans la feuille nommée "Listes".
    Pour exécuter la macro avec un bouton dans une autre feuille, Comment corriger la syntaxe pour spécifier la colonne de la feuille nommée "Listes" à partir de B2 dans les 2 lignes ci-dessous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerDistributeur = Range("B2").End(xlDown).Address
    Distributeur.RowSource = ("B2:") & DerDistributeur
    Ma macro ci-dessous ne fonctionne que si je l'exécute dans la feuille nommée "Listes".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Userform_Activate()
     
    Dim DerDistributeur As String
    DerDistributeur = Range("B2").End(xlDown).Address
    Distributeur.RowSource = ("B2:") & DerDistributeur
    Distributeur. ListIndex = 0
    End Sub
    Vous en remerciant par avance.

    Cordialement.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il faut utiliser la propriété Address avec comme valeur True à l'argument External (Address(external:=True))
    Attention, il faut préciser la filiation complète (objet Classeur + Feuille) de l'objet Range
    Exemple pour une liste avec plusieurs colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
     Dim rng As Range
     Set rng = ThisWorkbook.Worksheets("db").Range("A1").CurrentRegion
     With rng
      ComboBox1.RowSource = .Offset(1).Resize(.Rows.Count - 1).Address(external:=True)
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour le fil, bonjour le forum,

    La propriété [RowSource] n'étant pas des plus fiables dans certains cas, je lui préfère la procédure
    [List]
    . Avec, comme Philippe, une préférence pour la procédure Initialize à Activate de l'UserForm :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Userform_Initialize()
    Dim O As Object 'déclare la variable O (Onglet)
    Dim PL As Range 'déclare la variable P (PLage)
     
    set O = Sheets("Listes") 'définit l'onglet O
    set PL = O.Range("B2:B").End(xlDown) 'définit la plage PL
    Distributeur.List = PL.Value 'alimente la ComboBox [Distributeur]
    Distributeur. ListIndex = 0 'affiche le premier élément de la liste de la ComboBox [Distributeur] 
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Employé administratif
    Inscrit en
    Février 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Février 2014
    Messages : 78
    Par défaut Alimenter une ComboBox en exécutant la macro sur une autre feuille
    Bonjour,

    Les réponses données m'amène au débogage.

    1ère réponse de Philippe : Erreur d'exécution 424 ou 9 dans mon module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MasqueInfos()
    SaisieInfos.Show
    End Sub
    2ème réponse de Robert : Erreur d'exécution 1004 dans mon module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MasqueInfos()
    SaisieInfos.Show
    End Sub

    N'y-a-t-il pas une possibilité dans mon exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerDistributeur = Range("B2").End(xlDown).Address
    Distributeur.RowSource = ("B2:") & DerDistributeur
    de rédiger une syntaxe du type Sheets("Listes").Range("B2")
    J'ai essayé, mais ça ne fonctionne pas.

    Vous en remerciant par avance.

    Cordialement

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    1ère réponse de Philippe : Erreur d'exécution 424 ou 9 dans mon module :
    N'ayant aucun don de divination, indiquer le numéro de la ligne où a eu lieu cette erreur aurait été intéressant.
    Quand je publie une code, je teste toujours la procédure.
    Ceci étant dit, cette erreur provient certainement du fait que tu auras fait un Copier/Coller du code que j'ai publié sans même vérifier le nom de la feuille (db) de mon exemple qui n'est certainement pas le même chez toi.
    [EDIT]
    Lorsque je lis le code que tu as utilisé (celui de ta deuxième réponse), je me pose la question de savoir si tu a pris la peine de lire les réponses que l'on te donne
    Attention, il faut préciser la filiation complète (objet Classeur + Feuille) de l'objet Range
    et
    Il faut utiliser la propriété Address avec comme valeur True à l'argument External (Address(external:=True))
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour Robert,
    La propriété [RowSource] n'étant pas des plus fiables dans certains cas
    Pour ma part, je la privilégie et je la trouve très simple à mettre en place. La seule exception est lorsque la liste de données à afficher dans le contrôle ListBox ou Combobox fait l'objet de critères où alors j'utilise la méthode AddItem.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/09/2011, 21h27
  2. mettre une listBox dans un formulaire (code behind)
    Par livinho38 dans le forum Silverlight
    Réponses: 34
    Dernier message: 09/08/2010, 10h49
  3. Réponses: 2
    Dernier message: 21/03/2008, 09h19
  4. Photo à partir d'une listbox dans formulaire
    Par alex.a dans le forum IHM
    Réponses: 17
    Dernier message: 17/05/2006, 09h50
  5. Réponses: 4
    Dernier message: 01/09/2004, 16h56

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