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 :

Récuperer Valeur d'un COMBOBOX multicolonne à travers un module [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Par défaut Récuperer Valeur d'un COMBOBOX multicolonne à travers un module
    Bonjour à tous,

    Cela fait quelque temps que je me casse la tête avec ce petit souci et je n'arrive pas à trouver la solution dans les TUTO, Forum etc...

    C'est un COMBOBOX avec 3 colonnes qui se situe sur un USF
    Le COMBOBOX est renseigné par la méthode ROWSOURCE (Feuillxxx!B2:D50)
    Le COMBOBOX fonctionne très bien à partir de toutes les procédures/évènements qui sont inscrits sur USF.
    Dans l'USF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .Cells(RecordNumber, 17) = Me.Livraison.Column(0)
    .Cells(RecordNumber, 18) = Me.Livraison.Column(1)
    .Cells(RecordNumber, 19) = Me.Livraison.Column(2)
    Par contre, dès que je passe sur un évènement/procédure qui est écrit dans un module, je n'arrive pas à récuperer les infos de ce COMBOBOX

    Dans un module - UsfEintrag = le nom de USF // Livraison = Nom du COMBOBOX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Adresse = UsfEintrag.Livraison.Column(0)
    rue = UsfEintrag.Livraison.Column(1)
    ville = UsfEintrag.Livraison.Column(2)
    J'ai essayé tout plein de trucs, venant de l'aide, Forum, etc.. Textcolumn etc.. sans succés

    Comment faire ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sans voir tes procédures complètes, ça va pas être facile. Tu es sûr d'avoir indiqué le nombre de colonne (ColumnCount) dans les propriété du contrôle ou lors de l'initialisation du formulaire ?


    voici une proposition fonctionnelle :

    - un userform ne contenant qu'un contrôle : ComboBox1
    - le Combo est paramétré dans l'évènement Initialize de l'userform
    - à la sélection d'une valeur, on appelle une procédure située dans un module standard


    Code du Userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
        Call InterrogeCombo(Me.ComboBox1, 1)
    End Sub
     
    Private Sub UserForm_Initialize()
        With Me.ComboBox1
            .ColumnCount = 3
            .RowSource = Cells(1, 1).CurrentRegion.Address
        End With
    End Sub

    Procédure du module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub InterrogeCombo(Combo As MSForms.ComboBox, Col As Integer)
        MsgBox Combo.Column(Col)
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2016
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2016
    Messages : 100
    Par défaut
    Merci pour ton implication JOE

    Voici le bout de code de USF Int
    shtDaten = la feuille qui contient les infos du Combobox à partir de B2

    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
    Private Sub UserForm_Initialize()
     
    Select Case Verpackung.Value
     
            Case Is = ("Gewickelt")
                Lage.Visible = False
                VBlage.Visible = True
     
            Case Is = ("auf Stange")
                Lage.Visible = False
                VBlage.Visible = True
     
            Case Is = ("Plano (Roto5)")
                Lage.Visible = False
                VBlage.Visible = False
     
            Case Else
                Lage.Visible = True
                VBlage.Visible = True
     
    End Select
     
    Set rngad = shtDaten.Range("B2").CurrentRegion
     
        With Me.Adressen
            .ColumnCount = 3
            .RowSource = rngad.Address(external:=True)
        End With
     
    End Sub
    Voici un bout de la procedure dans USF - Entre autre mode ecriture
    Lors de la validation, les données sont ecritent sur une feuille, plage définie par la valeur rng - me.Adressen = Combobox

    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
    Private Sub WriteRecord(ByVal RecordNumber As Long)
     ' Ecriture de l'enregistrement
     Me.cboMember.ListIndex = -1
     RecordNumber = RecordNumber + 1
     With rng
      With .Cells(RecordNumber, 1)
       If Len(.Value) = 0 Then ' ID
        .Value = Application.WorksheetFunction.Max(rng.Columns(1)) + 1
       End If
      .NumberFormat = "\A000" ' Format
      End With
     .Cells(RecordNumber, 2) = Date
     .Cells(RecordNumber, 3) = Time
     .Cells(RecordNumber, 4) = user
     .Cells(RecordNumber, 5) = Me.Auftragnr
     .Cells(RecordNumber, 6) = Me.HeftNr
     .Cells(RecordNumber, 7) = Me.Objekt
     .Cells(RecordNumber, 8) = Me.Split
     .Cells(RecordNumber, 9) = Me.Auflagegesamt
     .Cells(RecordNumber, 10) = Me.belege
     .Cells(RecordNumber, 11) = Me.Verpackung
     .Cells(RecordNumber, 12) = Me.ExVB
     .Cells(RecordNumber, 13) = Me.VBlage
     .Cells(RecordNumber, 14) = Me.Lage
     .Cells(RecordNumber, 17) = Me.Adressen.Column(0)
     .Cells(RecordNumber, 18) = Me.Adressen.Column(1)
     .Cells(RecordNumber, 19) = Me.Adressen.Column(2)
     End With
     Me.cboMember.ListIndex = CurrentRecord
    End Sub
    Ca va etre compliqué ....

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

Discussions similaires

  1. Récuperer valeur combobox
    Par Spunk dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 08/09/2015, 23h20
  2. [XL-2010] Récuperer la valeur sélectionner dans ComboBox du ruban Excel
    Par zdz16 dans le forum Excel
    Réponses: 1
    Dernier message: 22/10/2013, 18h43
  3. Récuperer des valeurs d'un combobox
    Par heeedi dans le forum Langage
    Réponses: 1
    Dernier message: 16/02/2010, 19h52
  4. comment récuperer la valeur d'une combobox
    Par Phoenix2025 dans le forum VB.NET
    Réponses: 5
    Dernier message: 24/05/2009, 11h44
  5. Récuperer valeur combobox
    Par keub51 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/09/2007, 22h38

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