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 :

Aide Interaction entre deux Combobox [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut Aide Interaction entre deux Combobox
    salut a tous
    Voila , j'essaye tant bien que mal d'essayer de faire travailler 2 combobox ensemble mais je désespère.
    En fait j'aimerais sélectionner une valeur dans mon combobox1 pour qu'elle s'affiche dans le combobox2 mais aussi l'inverse.
    Les donnée sont dans une page XLS en deux colonnes .( A pour Cbb1 et B pour Cbb2)
    J'ai initialiser mes combobox de cette facon :

    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
    Public Sub inicombobox1()
        Dim c As Range
     
        ComboBox1.Clear
        ComboBox1.ColumnCount = 2
        ComboBox1.ColumnWidths = "45;0"
     
        With Sheets("tuum")
            For Each a In .Range("a1:a" & .Range("a65536").End(xlUp).Row)
            ComboBox1.AddItem a
            ComboBox1.List(ComboBox1.ListCount - 1, 1) = a.Row
     
            Next a
        End With
    End Sub
    comment avoir le liens entre les deux

    PS : Pourquoi est-ce DIM c As range alors que j'utilise la variable a dans la suite, pourtant ça fonctionne pour charger le combobox

    merci

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour à tou(te)s, zouille
    Déjà pourquoi passer par un module "Public Sub inicombobox1()" ?
    dans le code de ton USF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserForm_Activate()
    Dim a As Range
    With Sheets("tuum")
       For Each a In .Range("a1:a" & .Range("a65536").End(xlUp).Row)
          ComboBox1.AddItem a
          ComboBox1.List(ComboBox1.ListCount - 1, 1) = a.Row
       Next a
       For Each a In .Range("b1:b" & .Range("a65536").End(xlUp).Row)
          ComboBox2.AddItem a
          ComboBox2.List(ComboBox1.ListCount - 1, 1) = a.Row
       Next a
    End With
    End Sub
    tu auras déjà les items de tes combobox.
    pour la suite, il faut mieux t'expliquer, parce que si les données de la CB2 sont en col B, pourquoi y ajouter des éléments de la col A, et inversement
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Homme Profil pro
    ELECTROTECHNICIEN
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ELECTROTECHNICIEN
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Par défaut
    bonjour à tous,

    Je crois comprendre ce que tu cherche !
    J'ai galéré un moment pour confronter deux combobox:
    Ci-dessous un petit bout de code qui confronte deux combobox1 et 2 dans un userform:
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Private Sub ComboBox1_Change()
     
    Dim cherche1 As String
    Dim lg As Long
     
    If Not IsNull(ComboBox1.Value) Then
        cherche1 = ComboBox1.Value
     
        With Sheets("Feuil1")
        lg = .Range("b" & .Rows.Count).End(xlUp).Row
        Set cellule = .Range("a2:a" & lg).Find(cherche1, .Range("a" & lg), , SearchOrder:=xlNext)
        End With
     
        If Not cellule Is Nothing Then
     
        ComboBox2.Value = cellule.Offset(0, 1).Value
     
        Else
        MsgBox "Erreure de saisie ", vbExclamation, "Erreur de saisie"
       End If
    End If
    End Sub
    Private Sub ComboBox2_Change()
     
    Dim cherche2 As String
     
    If Not IsNull(ComboBox2.Value) Then
        cherche2 = ComboBox2.Value
     
        With Sheets("Feuil1")
        lg = .Range("b" & .Rows.Count).End(xlUp).Row
        Set cellule = .Range("b2:b" & lg).Find(cherche2, .Range("b" & lg), , SearchOrder:=xlNext)
        End With
     
        If Not cellule Is Nothing Then
     
        ComboBox1.Value = cellule.Offset(0, -1).Value
     
        Else
        MsgBox "Erreure de saisie", vbExclamation, "Erreur de saisie"
       End If
    End If
    End Sub
     
     
     
    Private Sub UserForm_Initialize()
     
    Dim lf As Long
    Sheets("Feuil1").Select
    lf = Range("A65536").End(xlUp).Row
    ComboBox1.Clear
    For Each cel In Range("A2:A" & lf)
    If cel.Value <> "" Then ComboBox1.AddItem cel.Value
    Next cel
     
    Dim lf1 As Long
    Sheets("Feuil1").Select
    lf1 = Range("A65536").End(xlUp).Row
    ComboBox2.Clear
    For Each cel In Range("B2:B" & lf1)
    If cel.Value <> "" Then ComboBox2.AddItem cel.Value
    Next cel
    End Sub
    Je te laisse l'adapter !

    Bonne journée

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    merci pour vos reponses

    Disont que je cherche a utiliser 2 combobox selon ce principe:
    En colonne A de mon fichier excel : des numeros ( 1 à 99)
    en colonne B : des frequences

    Si je selectionne une frequence dans le cbbox1, le numero associe s'affiche dans le cbbox2
    mais si je selectionne un numeros dans le CBBOX2 la frequence associé s'affiche dans le CBBOX1

    casefayere : Disont que je ne maitrise pas completement le VBA , alors j'utilise des fonctions que j'ai dans d'autre classeur
    Je ne vois pas trop la difference entre Public et private sub , disont que le combobox a toujours fonctionné comme ca dans mes autres USF mais je viens bien essayer de comprendre

    Dans mon cas , est ce utile de chercher a mette deux colonne dans le CBBOX ?


    chyanon
    Merci pour ton code , je vais regarder si je peux l'adapter et le comprendre

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Utilise l'évènement Initialize de ton userform pour remplir les 2 combobox
    et l'évènement Change des combobox pour réaliser l'interraction.
    (du moins, une seule Combobox a 2 colonnes N° et Fréquence me paraît plus aisée)
    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 UserForm_Initialize()
    Dim c As Range
     
    With Sheets("tuum")
        For Each c In .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
            Me.ComboBox1.AddItem c.Value
            Me.ComboBox2.AddItem c.Offset(0, 1).Value
            Me.ComboBox1.List(Me.ComboBox1.ListCount - 1, 1) = c.Row
            Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) = c.Row
        Next c
    End With
    End Sub
     
    Private Sub ComboBox1_Change()
    Me.ComboBox2.ListIndex = Me.ComboBox1.ListIndex
    End Sub
     
    Private Sub ComboBox2_Change()
    Me.ComboBox1.ListIndex = Me.ComboBox2.ListIndex
    End Sub

    Edit, Le premier code peut être écrit ainsi
    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
    Private Sub UserForm_Initialize()
    Dim c As Range
    Dim i As Byte
     
    For i = 1 To 2
        Me.Controls("ComboBox" & i).ColumnCount = 2
        Me.Controls("ComboBox" & i).ColumnWidths = "45;0"
        With Sheets("tuum")
            For Each c In .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
                Me.Controls("ComboBox" & i).AddItem c.Offset(0, i - 1).Value
                Me.Controls("ComboBox" & i).List(Me.Controls("ComboBox" & i).ListCount - 1, 1) = c.Row
            Next c
        End With
    Next i
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/10/2007, 17h08
  2. interaction entre deux dropdownlist
    Par ifrit 23 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 14/06/2007, 13h48
  3. Interaction entre deux applications
    Par Josy dans le forum C++
    Réponses: 4
    Dernier message: 17/11/2006, 12h27
  4. [C#] interactions entre deux WebUserControl
    Par owtee dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/10/2006, 09h16
  5. [VB .Net][Forms] Interaction entre deux forms
    Par plasticgoat dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/08/2005, 13h14

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