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 :

ComboBox Affichage Liste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Aix
    Inscrit en
    Juin 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Aix
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 32
    Par défaut ComboBox Affichage Liste
    Bonjour,

    Je cherche un moyen d'afficher une liste dans une combobox à partir de colonne différente en VBA car à partir de Validation des données Excel ne veut pas prendre des valeurs de colonne différente.

    Voici un bout de code que j'ai fais, mais qui ne fais pas ce que je veux...

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect([A2:A16], Target) Is Nothing And Target.Count = 1 Then
        With Worksheets("bd").ComboBox1
        Me.ComboBox1.Height = Target.Height + 3
        Me.ComboBox1.Width = Target.Width
        Me.ComboBox1.Top = Target.Top
        Me.ComboBox1.Left = Target.Left
        Me.ComboBox1 = Target
        Me.ComboBox1.Visible = True
        Me.ComboBox1.Activate
        ' Me.ComboBox1.List = Union("toto")
        For A = 1 To Range("F1:I23").Rows.Count
      ' .AddItem Range("A" & A)
        .List(A, 0) = Range("I" & A)
        .List(A, 0) = Range("G" & A)
        Next
        End With
      Else
        Me.ComboBox1.Visible = False
      End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
    If Me.ComboBox1 <> "" Then
       ActiveCell.Value = Me.ComboBox1
     End If
    End Sub
    Si quelqu'un peut m'aider cela serait cool ! Merci
    PS : Je veux avoir la possibilité d'écrire ce que je veux dans la combobox voici la raison pour laquelle je n'ai pas fais de Listbox.

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour,

    une solution possible:

    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For A = 1 To Range("F1:I23").Rows.Count
      ' .AddItem Range("A" & A)
        .List(A, 0) = Range("I" & A)
        .List(A, 0) = Range("G" & A)
     Next
    copier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    T = Range("A1:I23")
    ReDim T1(1 To UBound(T, 1), 1 To 3)
    For i = LBound(T, 1) To UBound(T, 1)
        T1(i, 1) = T(i, 1)
        T1(i, 2) = T(i, 9)
        T1(i, 3) = T(i, 7)
    Next
    .ColumnCount = 3
    ..ColumnWidths = "30;30;30"  'à adapter
    .List = T1
    Au début de Worksheet_SelectionChange déclarer les variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim T, T1(), i as Integer
    A+

  3. #3
    Membre averti
    Homme Profil pro
    Aix
    Inscrit en
    Juin 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Aix
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 32
    Par défaut
    Merci beaucoup de votre réponse Algoplus cependant ce n'est pas le résultat voulu...

    Lors de l'application de votre code au mien, je récupère bien les données dans la combobox mais cela concatène plusieurs données sous forme de liste et cela affiche les données de la colonne A.

    Mon objectif pour être plus explicite :

    • Sur la colonne de A2 à A16 une ComboBox1 se créer.
    • Lors du clique sur la cellule A2 une liste doit apparaître(ComboBox1).
    • Cette liste doit être alimenter par les données trouvées de G1:G23 et de I1:I11 sans blanc



    Exemple :

    De G1 à G23 j'ai comme donnée :
    Toto
    Tata
    Tati

    De I1 à I11 j'ai comme donnée :
    Alpha
    Beta

    Omega

    La ComboBox1 qui est en A2 par exemple doit afficher sous forme de liste :
    Toto
    Tata
    Tati
    Alpha
    Beta
    Omega

    Sans les blanc et triée mais ça j'arrive à le faire c'est de pouvoir rassembler dans une ComboBox1 les données de G1:G23 et I1:I11

    Merci de votre aide

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Aaah oui, je n'avais vraiment rien compris !!

    alors, si j'ai mieux compris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     For A = 1 To 23
         if Range("G" & A)<>"" then .AddItem Range("G" & A)
     next
     
     For A = 1 To 11
         if Range("I" & A)<>"" then .AddItem Range("I" & A)
     Next
    A+

  5. #5
    Membre averti
    Homme Profil pro
    Aix
    Inscrit en
    Juin 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Aix
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 32
    Par défaut
    Merci Algoplus ! C'est exactement cela que je voulais au top !

    Par contre petit problème, lorsque la ComboBox1 du champ A2 est active la liste est totalement normal, sauf que si on active par la suite la ComboBox1 du champ A3 on se retrouve la liste en double, je me suis dis pas de problème, je fais un ComboBox1.Clear jusqu’à la parfait ça marche, j'intègre maintenant ma fonction pour trié mes données sous forme alphabétique, et la le trie fonctionne parfaitement mais mon ComboBox1.Clear ne fonctionne et je me retrouve avec une liste assez conséquente...

    Donc la je sèche, car je ne sais pas trop ou mettre mon ComboBox1.Clear...
    EDIT 16h30 : j'ai réussi à placer mon ComboBox1.Clear mais la fonction trier ne fonctionne toujours pas fin à moitier...
    Voici mon code à jour :
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Integer, j As Integer
    Dim strTemp As String
      If Not Intersect([A2:A20], Target) Is Nothing And Target.Count = 1 Then
     
        For a = 1 To 23
                If Range("G" & a) <> "" Then ComboBox1.AddItem Range("G" & a)
            Next
     
            For a = 1 To 15
                If Range("I" & a) <> "" Then ComboBox1.AddItem Range("I" & a)
            Next
            Me.ComboBox1.Height = Target.Height + 3
            Me.ComboBox1.Width = Target.Width
            Me.ComboBox1.Top = Target.Top
            Me.ComboBox1.Left = Target.Left
            Me.ComboBox1 = Target
            Me.ComboBox1.Visible = True
            Me.ComboBox1.Activate
            With Me.ComboBox1
                   For i = 0 To .ListCount - 1
                       For j = 0 To .ListCount - 1
                           If .List(i) < .List(j) Then
                               strTemp = .List(i)
                               .List(i) = .List(j)
                               .List(j) = strTemp
                           End If
                       Next j
                   Next i
            End With
     
      Else
        Me.ComboBox1.Visible = False
        ComboBox1.Clear
      End If
    End Sub
    La fonction trie ne trie plus si j'ajoute une nouvelle donnée je ne comprend pas
    EDIT 16h00 pour la fonction trie :
    Je ne sais pas pourquoi mais la fonction trie s'effectue de I2 à I11 et les données de I12 à I15 sont également triées mais totalement indépendamment


    EDIT 17h26 : Le trie + ComboBox1.Clear est opérationnel je me suis débrouillé et j'ai trouvé mon erreur

    Par contre j'ai toujours une question si quelqu'un peut m'aider :
    Comment fait-on pour que si je tape la première lettre dans la ComboBox1 il m'affiche uniquement les données par la lettre tapé ?
    Exemple :
    J'ai plusieurs données : Alpha ; Allo ; AA ; beta
    Si je tape A je voudrai que dans la liste il m'affiche uniquement : Alpha ; Allo et AA.

    Merci de votre aide !!

  6. #6
    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
    Bonsoir,

    >Si je tape A je voudrai que dans la liste il m'affiche uniquement : Alpha ; Allo et AA.

    Voir exemple de saisie intuitive dans un ComboBox en PJ


    Boisgontier
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Combobox affichage list
    Par nejmhajer dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/01/2019, 14h30
  2. [VB6] Bug d'affichage liste déroulante
    Par yttrium dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/05/2006, 08h45
  3. [VBA-E]Erreur avec une combobox qui liste le contenu de cell
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2006, 12h01
  4. [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
  5. [xsl]affichage liste de 2 couleurs
    Par megane dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 28/06/2004, 09h30

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