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 :

insérer liste dans combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut insérer liste dans combobox
    Bonjour,

    Je ne comprends pas ce qui ne va pas avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
        Sheets("Clients").Activate
        ' Récupère le nombre de lignes de la colonne concernée
        Lgn = Cells(2, Me.ComboBox1.ListIndex + 1).End(xlDown).Row
    End Sub
    Je veux tout simplement récupérer les donner de la colonne 2 de la feuille "Clients" dans une combobox situé dans un userform dépendant de la feuille "Accueil"

    J'ai trouvé dans un tutoriel ça, pratique pour les doublons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Cell As Range
     
    'Supprime les données existantes dans le ComboBox
    Feuil1.ComboBox1.Clear
     
    'Boucle sur les cellules de la plage A1:A20 pour
    'alimenter le ComboBox
    For Each Cell In Feuil1.Range("A1:A20")
        Feuil1.ComboBox1 = Cell
        'remplissage sans doublon
        If Feuil1.ComboBox1.ListIndex = -1 Then _
            Feuil1.ComboBox1.AddItem Cell
    Next Cell
    je l'ai surement mal adapté car ça ne marche pas, j'ai fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Cell As Range
     
    'Supprime les données existantes dans le ComboBox
    Sheets "Accueil".ComboBox1.Clear
     
    'Boucle sur les cellules de la plage A1:A20 pour
    'alimenter le ComboBox
    For Each Cell In Sheets "Clients".Range("A3").End(xlDown).Row
         Sheets "Clients".ComboBox1 = Cell
        'remplissage sans doublon
        If Sheets "Clients".ComboBox1.ListIndex = -1 Then _
            Sheets "Clients".ComboBox1.AddItem Cell
    Next Cell

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    J'ai réussi avec ce code mais il y a juste un petit problème. Il reprends bien les données de ma colonne de la feuille Client mais il reprend aussi celle de la cellule A1 de ma feuille Accueil ???

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub UserForm_Initialize()
        Dim Cell As Range
        Dim Tableau()
        Dim TempTab As Variant
        Dim i As Integer, j As Integer
        Dim boolVerif As Boolean
     
        ReDim Tableau(1 To 1)
        Tableau(1) = Cells(1, 1)
     
        'Boucle sur les données de la colonne A, dans la Feuil1
        For Each Cell In Worksheets("Clients").Range("D3:D" & _
                            Worksheets("Clients").Range("D65536").End(xlUp).Row)
            boolVerif = False
     
            'Vérifie si le contenu de la cellule existe déjà dans le tableau
            For i = 1 To UBound(Tableau)
                'Si la donnée existe déjà dans le tableau
                If Tableau(i) = Cell Then
                    boolVerif = True
                    Exit For
                End If
            Next i
     
            'Si la donnée n'existe pas dans le tableau, on augmente la taille du tableau
            'et on ajoute la donnée.
            If boolVerif = False Then
                ReDim Preserve Tableau(1 To UBound(Tableau) + 1)
                Tableau(UBound(Tableau)) = Cell
            End If
     
            'Tri le contenu du tableau par ordre croissant.
            For i = 1 To UBound(Tableau)
                For j = 1 To UBound(Tableau)
                    If Tableau(i) < Tableau(j) Then
                        TempTab = Tableau(i)
                        Tableau(i) = Tableau(j)
                        Tableau(j) = TempTab
                    End If
                Next j
            Next i
        Next Cell
     
        'Alimente le ComboBox
        ComboBox1.List = Tableau
     
    End Sub
    je trouve ce code un peu compliqué mais ça marche à l'exception du problème mentionné ci dessus.
    Je l'ai utilisé car il trie par ordre coissant, j'espère que c'est pareil que l'ordre alphabétique.

    J'aurais aussi une dernière question, si je veux créer une autre combobox, comment l'insérer dans ce code, sachant que les données de celle-ci sont dans la colonne E de la même feuille "Clients".

    Je pense qu'il aurait été plus simple d'utiliser Array mais je n'y arrive pas

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/11/2010, 23h43
  2. recuperer une sous liste dans un combobox
    Par bakalegum dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 26/09/2007, 18h37
  3. récuperer vector dans liste pour combobox
    Par bnreb10 dans le forum Interfaces Graphiques en Java
    Réponses: 33
    Dernier message: 08/08/2006, 10h20
  4. [vba-e] Liste de choix dans ComboBox
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/07/2006, 15h53
  5. Obliger de prendre dans la liste du combobox
    Par Yphon dans le forum Composants VCL
    Réponses: 3
    Dernier message: 20/01/2006, 15h27

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