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 :

Charger une ComboBox avec des valeurs dépendants d'OptionBox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Points : 54
    Points
    54
    Par défaut Charger une ComboBox avec des valeurs dépendants d'OptionBox
    Bonjour,

    Je souhaiterai charger une ComboBox en utilisant un filtre par l'intermédiaire d'OptionBox.

    En réalité, dans ma feuille Excel "Table" j'ai en colonne A le type de profilé et en colonne B le nom du profilé

    j'ai un certain nombre de type de profilés: IPE, HEA,UPN...

    Dans mon Userform, j'ai un certain nombre d'OptionButton: OptionButtonIPE, OptionButtonHEA, OptionButtonUPN....

    Ce que je souhaite:

    Lorsque je sélectionne une Optionbox par exemple OptionButtonIPE que la ComboBoxNomDuProfile ne se charge que des Nom de profilés (colonne B) qui ont dans la colonne A le type de profilé sélectionné dans l'OptionBox (dans notre exemple IPE).

    J'espère avoir été clair, pour plus de clarté, je mets en pièce jointe le fichier sur lequel je travail.

    Merci beaucoup pour votre aide.

    Cdt, Bruno
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste. Tu insère un module de classe et tu le nomme "ClsOption" dans sa propriété "Name" puis tu colle le code suivant :
    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
    48
    49
    50
    51
    52
     
    Public WithEvents GroupeOpt As MSForms.OptionButton
     
    Private Sub GroupeOpt_Click()
     
        Dim Ctrl As Control
        Dim Plage As Range
        Dim Cel As Range
     
        'défini la plage de recherche, à adapter, car je suppose qu'elle va grandir !
        'ou alors la définir dynamiquement
        Set Plage = Worksheets("Table").[A20:A82]
     
        With UserFormPrix
     
            'parcour les boutons d'option du cadre
            For Each Ctrl In .Frame1.Controls
     
                If TypeName(Ctrl) = "OptionButton" Then
     
                    'si coché
                    If Ctrl.Value = True Then
     
                        'vide le combo
                        .ComboBoxNomDuProfile.Clear
     
                        For Each Cel In Plage
     
                            'si le nom du bouton d'option coché contient
                            'la valeur de la cellule, charge la valeur de la
                            'cellule située immédiatement à droite de la cellule active
                            If InStr(Ctrl.Name, Cel) <> 0 Then
                                .ComboBoxNomDuProfile.AddItem Cel.Offset(0, 1)
                            End If
     
                        Next Cel
     
                        'il n'est pas nécessaire d'aller plus loin, 1 seul bouton
                        'pouvant être coché
                        Exit Sub
     
                    End If
     
                End If
     
            Next Ctrl
     
        End With
     
        Set Ctrl = Nothing
     
    End Sub
    Dans le module de ta Form "UserFormPrix" tu colle le code ci-dessous (en tête de module) :
    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
     
    Dim Opt() As New ClsOption '<-- en tête de module
     
    Private Sub UserForm_Initialize()
     
        Dim Ctrl As Control
        Dim I As Integer
     
        'parcour la collection de boutons d'option du cadre
        'et les mets dans un tableau afin d'avoir une proc
        'commune à tous (voir le module de classe "ClsOption")
        For Each Ctrl In Me.Frame1.Controls
     
            If TypeName(Ctrl) = "OptionButton" Then
     
                I = I + 1
                ReDim Preserve Opt(1 To I)
                Set Opt(I).GroupeOpt = Ctrl
     
            End If
     
        Next Ctrl
     
        Set Ctrl = Nothing
     
    End Sub
    A chaque clic sur un bouton d'option, le combo se remplira avec les valeurs correspondantes, pour cela, la cellule doit contenir une partie du nom du bouton d'option mais attention, il y aura un problème avec le bouton d'option "T" car les valeurs de "TubeCarre" et TubeRond" seront aussi chargées. Faire suivre "T" d'une autre ou de plusieurs autres lettres afin d'avoir des valeurs uniques.

    Hervé.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Points : 54
    Points
    54
    Par défaut
    Merci beaucoup!!

    Ca Marche trés bien! (En changeant T mais cela n'a pas d'importance )

    J'ai trouvé une autre solution qui marche aussi sans le problème du T.

    En PJ le fichier.

    Cdt, Bruno
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2003] Charger une ComboBox avec des données d'une feuille 2
    Par jam92400 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/10/2010, 16h50
  2. Remplir une ComboBox avec des fichiers
    Par Flo88 dans le forum VBA Access
    Réponses: 16
    Dernier message: 25/02/2008, 09h46
  3. Charger une popup avec des données PHP
    Par philou029 dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2007, 16h45
  4. Creer une date avec des valeurs prédéfinies
    Par baedal dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2007, 10h58
  5. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15

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