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 :

utilisation de Rowsource dans la Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 4
    Par défaut utilisation de Rowsource dans la Combobox
    bonjour a tous. je suis en face d'un problème et je n'arrive pas à trouver la solution.

    j'ai un ensemble de données dans ma feuille excel. je lui ai attribué un nom afin de l'utiliser dans l'option "rowsource" de une "combobox". le souci est que mes données sont un ensemble de
    colonne ( range ("A1:L1")) . du coup, la combobox n'affiche que le premier élément de ma liste.

    comment faire pour qu'il puisse lire tous les éléments de mes données.

    merci d'avance

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Le champ doit être vertical.
    RowSource est souvent source de pb. Il est préférable d'utiliser List ou Column
    Si le champ est horizontal, utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.combobox1.List=Application.Transpose(Range("A1:L1"))
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.combobox1.Column=Range("A1:L1")
    Boisgontier

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 4
    Par défaut
    svp je dois ecrire cette ligne de code dans quel evenement??

    dans Change ou autres ???

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Dans Initialize

    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 4
    Par défaut
    désolé mais je n'arrive pas toujours à résoudre mon problème.si vous pouvez mieux m'expliquer la procédure ,ca m'aiderait beaucoup. merci

  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 166
    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 166
    Billets dans le blog
    53
    Par défaut
    Bonjour Jacques,
    Le champ doit être vertical.
    RowSource est souvent source de pb. Il est préférable d'utiliser List ou Column
    Ce n'est pas la propriété RowSource qui est source de problème mais la manière dont les utilisateurs construisent leurs données et sauf si une liste doit être affichée avec critères ou si je dois afficher le titre des colonnes d'une liste, je privilégie toujours cette propriété qui a l'avantage notamment d'afficher les titres de la liste de données.
    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

  7. #7
    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 166
    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 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    désolé mais je n'arrive pas toujours à résoudre mon problème.si vous pouvez mieux m'expliquer la procédure ,ca m'aiderait beaucoup.
    Comme expliqué par Jacques Boisgontier le code qu'il t'a proposé doit être placé dans la procédure événementielle Initialize de ton UserForm (UserForm_Initialize)
    Je suppose que si tu as pu alimenter la propriété RowSource tu sais où se trouve cette procédure

    Je crois qu'il a en plus déposé un classeur exemple. L'as tu ouvert ?
    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

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je charge les combobox et listbox avant le show dans la procédure qui appelle et affiche le formulaire, ce qui est grandement facilité par l'utilisation des tables de données, et on évite ainsi le hard coding dans le formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      With UserForm1
        .ListBox1.List = Range("t_contacts").Value
        .Show
      End With

    Je n'utilise jamais le rowsource qui pose au moins trois problèmes:

    1. Préciser que rowsource = feuil1!A1:A10 revient à pratiquer du hard coding, obligeant à modifier le userform si ce n'est plus A1:A10 (ajout ou suppression d'une ligne, déplacement de la plage, renommage de la feuille, etc).

    2. Si on tente de créer une plage nommée dynamique ou d'utiliser les références structurées dans le RowSource, l'ajout ou la suppression de lignes dans la source va planter Excel à l'ouverture suivante du userform.

    3. Si, durant l'utilisation du userform, on tente de modifier le rowsource, par exemple en ajoutant une ligne à la plage nommée/structurée, Excel va planter.

    On a donc moins de souplesse en fixant "en dur" la source du combobox/listbox.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 4
    Par défaut
    merci à tous pour vos interventions toutes aussi édifiantes.
    grâce à vous, j'ai pu résoudre mon problème et mieux encore, j'appris de nouvelles commandes pour l'avenir.

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

Discussions similaires

  1. Utiliser la souris dans une combobox dans une UserForm
    Par Keops42800 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/01/2017, 13h33
  2. [XL-2007] RowSource dans une combobox
    Par manuseverine dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 23/08/2010, 15h48
  3. utiliser la valeur d'un combobox dans un autre formulaire
    Par le phoenyx dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/03/2010, 13h44
  4. Utiliser une valeur insérée dans une ComboBox
    Par Conico113 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/11/2008, 10h06
  5. Réponses: 4
    Dernier message: 15/04/2008, 18h52

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