Plusieurs combobox dans un formulaire

ThomThom50 Messages postés 3 Statut Membre -  
ThauTheme Messages postés 1564 Statut Membre -
Bonjour à tous,

Depuis ce matin je bloque sur la programmation d'un formulaire en VBA.

Je souhaite mettre au total 9 combobox , et pour l'instant je n'arrive à programmer qu'une seule, les autres ne veulent pas.

Est-ce que quelqu'un peux m'aider.

Merci à tous.

6 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonsoir ThomThom, bonsoir le forum,

    Comment t'aider si tu ne proposes rien ? Ni code, ni fichier exemple...
    0
  2. ThomThom50 Messages postés 3 Statut Membre
     
    Bonsoir ThauTheme,

    Voici le code qui fonctionne très bien, mais je sais pas commente l'enchainer dans mon code pour les autre combobox.

    'Pour le formulaire
    Private [/contents/446-fichier-sub Sub] UserForm_Initialize()
    Dim J As Long
        Dim I As Integer
        ComboBox1.ColumnCount = 1 'Pour la liste Enregistreur demande
        ComboBox1.List() = Array("SLR", "FFD", "APT", "TPT", "SLS")
        Set Ws = Sheets("Feuil1") 'Correspond au nom de votre onglet dans le fichier Excel
        With Me.ComboBox1
            For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
                .AddItem Ws.Range("A" & J)
            Next J
        End With
        For I = 1 To 15
            Me.Controls("TextBox" & I).Visible = True
        Next I
        
        
    End Sub


    En te remerciant d'avance pour ton aide.

    Thom
    0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonsoir Thom, bonsoir le froum,

    Tu alimentes deux fois la ComboBox1 :
    une première fois, en dur, avec la ligne :
    ComboBox1.List() = Array("SLR", "FFD", "APT", "TPT", "SLS")

    puis une seconde fois, de manière dynamique avec :
    With Me.ComboBox1
    For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
    .AddItem Ws.Range("A" & J)
    Next J
    End With

    C'est plutôt étrange mais pourquoi pas...
    En revanche, aucune ligne de code pour alimenter les autres comboboxes. Je ne suis pas devin et sans fichier exemple je ne peux pas te proposer de solution...

    Juste une remarque, si tu boucles de 1 à 15 tu peux déclarer la variable I de type Byte...

    0
  4. ThomThom50 Messages postés 3 Statut Membre
     
    Re,

    Le fichier: https://www.cjoint.com/?DJAx5OSVIhi

    Toutes les colonnes en vertes correspondent à une ComboBox comme tu pourra le voir dans l'Userform.

    Elle sont toutes totalement indépendantes des autres.

    La combobox "Marque" comportera une liste assez longue de 64 lignes.

    Le code écrit dans le Userform est un copiage de code dispo sur le web.

    Pour les fonctions des boutons, on verra çà après lol.

    En espérant que tu y vois plus clair et que tu va pouvoir m'apporter une solution ou tout du moins un bon de chemin de la solution.

    En te remerciant par avance.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Thom, bonjour le forum,

    Je ne comprends pas. J'ai dû faire une mauvaise manipulation car je t'avais répondu ce matin et je ne vois plus ma réponse...

    Je vais donc refaire... La haine !
    0
  7. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Thom, bonjour le forum,

    Voilà ce que je te propose :

    * tu attribues à chaque ComboBox une propriété [Tag] qui correspond au numéro de colonne auquel la ComboBox est reliée.
    - ComboBox1 => Tag = 3 (=colonne C)
    - ComboBox2 => Tag = 4 (=colonne D)
    ...
    - ComboBox9 => Tag = 1 (=colonne A)

    * puis le code d'initialisation :

    Option Explicit
    Private Ws As Worksheet

    Private Sub UserForm_Initialize()
    Dim J As Long
    Dim COL As Byte
    Dim I As Byte

    ComboBox1.ColumnCount = 1 'Pour la liste Enregistreur demande
    ComboBox1.List() = Array("SLR", "FFD", "APT", "TPT", "SLS")
    Set Ws = Sheets("Feuil1") 'Correspond au nom de votre onglet dans le fichier Excel
    For I = 1 To 9
    With Me.Controls("ComboBox" & I)
    COL = CInt(.Tag)
    For J = 2 To Ws.Cells(Application.Rows.Count, COL).End(xlUp).Row
    .AddItem Ws.Cells(J, COL)
    Next J
    End With
    Next I
    For I = 1 To 15
    Me.Controls("TextBox" & I).Visible = True
    Next I
    End Sub


    Remarque : Tu utilises dans ton code des guillemets « et ». Remplace les par ".
    0