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 :

[VBA-E]Aide sur les ComboBox


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [VBA-E]Aide sur les ComboBox
    Voilà mon problème : je souhaite initialiser une combo box avec les données issues d'une colonne . D'après la documentation sous Excel , je dois utiliser la synthaxe :
    combobox1.additem "Valeur de la cellule"

    Ce que je ne sais pas gérer , c'est si il y a des doublons dans ma colonne , je souhaiterais ajouter seulement une valeur et que toutes les valeurs dans ma combo box soit classé de manière alphabétique -> en gros , avoir le mettre principe qu'un filtre automatique.

    1.Existe-t-il un moyen de récupérer le filtre automatique (combo box) contenu dans la 1ere ligne de ma colonne dans un userform ??

    2. Sinon comment faire simplement ??

    J'ai lu sur un forum qu'il fallait créer une liste où je stocke toutes les données de ma colonne puisque je fasse un tri avant de supprimer les doublons et enfin d'initialiser ma combo box en lisant cette liste.
    là je suis dépassé ...

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Déjà et avant d'aller plus loin : une combobox est affublée d'unre propriété sorted (tri).
    As-tu commencé à lire l'aide en ligne ?
    on viendra au reste ensuite !

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Alex_Kidd , commence par modifier ton titre en le "Taggant" [VBA-E] (je suppose) cela nous évitera de patir dans une mauvaise direction...

  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par bbil
    Alex_Kidd , commence par modifier ton titre en le "Taggant" [VBA-E] (je suppose) cela nous évitera de patir dans une mauvaise direction...
    Fait pour lui, parce que si on attend ....

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tiens un peu de code en VBA excel à adapter ... (manque surement aussi des tests de cas de défauts à rajouter...)

    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
     
    Private Sub UserForm_Activate()
     Dim rS As Range 'Donnee Source
     Dim rF As Range 'Donnee Filtrée
     'Définir ici la zone de donnée source
     Set rS = Sheets("mafeuille").Range("A1").CurrentRegion
     'Définition de Rf.. sur la même feuille que zone source
     Set rF = rS.Parent.Range("E1") 'Colonne ou seront copier les donnée filtrée..
     rF.EntireColumn.ClearContents ' Efface la colonne filtrée
     rS.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=rF, Unique:=True 'Copie des donnée unique...
    'redefini la Zone rf en y incorporant toutes les donneée
    Set rF = rF.CurrentRegion
    rF.Sort Key1:=rF.Columns(1), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    'Affecte la zone filtrée au combobox
    ComboBox1.RowSource = rF.Address
     
    End Sub

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir


    ci joint une autre possiblité sans trier dans la feuille


    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
     
    Option Explicit
    Option Base 1
     
    Private Sub UserForm_Initialize()
    Dim Cell As Range
    Dim Tableau()
    Dim i As Integer, x As Integer, k As Integer
    Dim ValTemp As Variant
     
    'remplissage Tableau
    For Each Cell In Range("A1:A10")'adapter la  plage de cellules
        i = i + 1
        ReDim Preserve Tableau(i)
        Tableau(i) = Cell
    Next Cell
     
    'tri par ordre croissant
    For i = 1 To UBound(Tableau)
        x = i
     
        For k = x + 1 To UBound(Tableau)
        If Tableau(k) <= Tableau(x) Then x = k
        Next k
     
        If i <> x Then
        ValTemp = Tableau(x): Tableau(x) = Tableau(i): Tableau(i) = ValTemp
        End If
    Next i
     
    'alimentation Tableau sans doublon
    For i = 1 To UBound(Tableau)
        ComboBox1 = Tableau(i)
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Tableau(i)
    Next i
    End Sub


    bonne soiree
    michel

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre aide

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

Discussions similaires

  1. Besoin d'aide sur les fonctions vba
    Par merveil014 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/06/2014, 08h11
  2. [VBA Excel] Comment gerer les combobox sur un Userform
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2007, 21h30
  3. Aide sur les combobox S.V.P.
    Par gringo96 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/09/2006, 22h45
  4. VBA Word - Aide sur les "Retours" dans tableaux
    Par wouebmaster dans le forum VBA Word
    Réponses: 5
    Dernier message: 29/12/2005, 10h08
  5. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

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