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 :

Remplir une ComboBox


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Par défaut Remplir une ComboBox
    Bonjour à tous.

    Je dispose d'un formulaire avec une jolie ComboBox que j'aimerais remplir avec une liste de données. Cette liste est de longueur variable et quand elle s'étend verticalement, j'utilise un classique : "A1:A" & Range("A1").End(xlDown).row

    L'ennui, c'est que ma liste de valeurs se dispose horizontalement et que la propriété (xlToRight).column me retourne un chiffre et non une lettre. Comment puis-je donc définir une liste horizontale de valeurs possibles pour ma ComboBox ?

    Et puisque nous y sommes, les données sont de type DATE et dans le défilement de la liste, elles apparaissent bien sous cette forme mais une fois selectionnées, elles sont reconverties en INTEGER dans l'affichage de la ComboBox
    Comment conserver leur format DATE à l'affichage ?

    Merci par avance pour vos réponses

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour la dernière colonne, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DerniereColonne = Range("IV1").End(xlToLeft).Column
    Pour la plage en ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim Plage as range
    Set Plage = Range(Cells(NoLigne, 1), _
                Cells(NoLigne, Range("IV1").End(xlToLeft).Column))
    A+

    Edit
    Pour ton cas de figure, tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Plage as variant
    Plage = Range(Cells(NoLigne, 1), _
                Cells(NoLigne, Range("IV1").End(xlToLeft).Column)).Address(False, False)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 15
    Par défaut
    Merci, la réponse se situe certainement dans cette syntaxe mais l'ennui, c'est que ma ComboBox n'affiche que le 1er élément de ma ligne
    Sitot que je définis une plage verticale, tout va bien pourtant...

    Serait-ce la propriété "rowsource" qui ne serait pas adaptée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub UserForm_Initialize()
     
    Dim Plage As Variant
    Plage = Range(Cells(4, 17), Cells(4, Range("Q4").End(xlToRight).Column)).Address(False, False)
    Me.ListeJours1.RowSource = Plage
    Me.ListeJours2.RowSource = Plage
     
    End Sub
    La valeur de la variable "Plage" est tout à fait conforme à ce que j'attend.



    EDIT :

    Il me reste la solution de boucler jusqu'à la fin de ma ligne en ajoutant les champs dans ma ComboBox grace à la méthode AddItem. C'est un peu lourd et si quelqu'un a plus élègant, je suis preneur

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Auquel cas tu devras utiliser la première syntaxe puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Plage As Range, cell As Range, NoLig
        Set Plage = Range(Cells(NoLig, 1), _
                    Cells(NoLig, Range("IV1").End(xlToLeft).Column))
        For Each cell In Plage
              ComboBox1.AddItem cell
        Next
    Comme j'avais testé rowsource en ligne, j'avais ça

Discussions similaires

  1. [Spread designer] Remplir une combobox
    Par valoji dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/03/2006, 12h32
  2. [VBA-E] Comment remplir une ComboBox ?
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2006, 10h03
  3. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 16h31
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 16h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 14h34

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