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 :

Gérer des Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut Gérer des Combobox
    Bonjour à tous,

    Je début sur VBA et je comprend pas grand chose pour être honnête.
    Après avoir parcouru le net et le forum j'ai vu pas mal de chose sur les combobox et les listbox qui semblent fonctionner quasiment pareil...

    Cependant mon niveau actuel ne me permet pas de résoudre mon problème que je vais vous exposer :


    Je dois créer une carte de contrôle qualité avec mes collègues et je suis en charge de faire fonctionner 2 combobox (et c'est un calvaire pour moi )

    La première combobox doit récupérer la colonne A de la feuille 2, seulement quand je rentre le code, la combobox1 compte également les cases vide et je ne trouve pas (net ou forum : http://silkyroad.developpez.com/VBA/ControlesUserForm/) la commande qui dit : "afficher uniquement les case avec une valeur..."

    La deuxième combobox doit afficher les côtes liées à la pièce sélectionnée précédemment via la combobox1.
    J'arrive à afficher la liste exel dans ma combobox avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
     
    ComboBox1.List() = Range("Feuil2!B2:B100").Value
     
    End Sub
    Seulement voila, j'aimerais également savoir comment on peut lui faire comprendre que je veux afficher uniquement les valeurs de ma pièce sélectionner (ex : pièce 1 donc les valeurs 1,10,15,4,5) alors vous allez me dire "Feuil2!B2:B6" mais si je rajoute une ligne dans ma feuille exel pour ma pièce 1 il faudra que je retourne dans le code modifier "Feuil2!B2:B7"

    Possibilité "d'automatiser" ?

    Je vous mets des screen de mon tableau exel et de ma userform pour plus de compréhension (enfin j'espère )...


    Merci pour vos réponses.

    (Si le sujet à déjà été abordé, ce qui ne m'étonnerais pas, merci de me passer le lien du post, soit j'ai pas vu soit je suis passé dessus sans même comprendre de quoi il s'agissait )
    Images attachées Images attachées   

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour, pour remplir ta combobx sans les blancs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
    Dim plage As Range
    With Sheets("Feuil1")
    Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With
    For Each c In plage
    If c.Value <> "" Then Me.ComboBox1.AddItem c.Value
    Next c
     
    End Sub
    Si le nom de ta feuille n'est pas "Feuil1" change ce nom dans le code par le nom de ta feuille

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut
    SUPER !

    Dommage que je ne comprenne pas bien le code mais ça marche parfaitement.
    Merci beaucoup !

    Maintenant j’essaie de mettre une condition pour ma combobox 2, y a tellement de "truc" différent sur internet c'est affreux quand on y comprend rien.

    J'ai tenté ça mais ... EPIC FAIL !

    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_Initialize()
    Dim plageA As Range
    With Sheets("Feuil2")
    Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With
    For Each c In plage
    If c.Value <> "" Then Me.ComboBox1.AddItem c.Value
    Next c
     
     
        If ComboBox1.Value = "Pièce 1" Then
        ComboBox2.List() = Range("B2:B6").Value
        End If
     
        If ComboBox1.Value = "Pièce 2" Then
        ComboBox2.List() = Range("B7:B9").Value
        End If
     
    End Sub

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    regarde Cette discussion.

    Tu trouveras des liens intéressants qui présentent ton problème et un fichier exemple qui fait exactement ce que tu souhaites faire.
    Il suffit de l'adapter à tes besoins.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut
    OUA !

    Ça fonctionnement parfaitement, exactement ce qu'il me fallait !
    Vraiment merci beaucoup !

    J'ai renommé ma "feuille 2" en "Cote" ; ma "Combox1" en "listepiece" et ma "combobox2" en "listecote"

    Voila le code :

    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
    Private Sub listepiece_Change()
     
    Dim vlistepiece As Range
     
    Me.listecote.Clear
    With Sheets("cote")
    Set vlistepiece = .Columns(1).Find(Me.listepiece.Value)
     
    If Not vlistepiece Is Nothing Then
    For i = vlistepiece.Row To .Range("B65536").End(xlUp).Row
      If .Range("A" & i) = Me.listepiece.Value Or .Range("A" & i) = "" Then
        If .Range("B" & i) <> "" Then
        Me.listecote.AddItem (.Range("B" & i).Value)
        End If
      Else
       Exit Sub
      End If
    Next i
    End If
    End With
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim i As Long, derlign As Long
     
    With Sheets("Cote")
    derlign = .Range("A65536").End(xlUp).Row
     
      For i = 1 To derlign
      If .Range("A" & i) <> "" Then
      Me.listepiece.AddItem (.Range("A" & i).Value)
      End If
     Next i
    End With
     
    End Sub

    Par contre, vous pourriez m'expliquer ce que les lignes veulent dire j'ai du mal à comprendre (à vrai dire j'ai fait du copier/coller)
    De plus j'ai pas du tout réutilisé le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
    Dim plage As Range
    With Sheets("Feuil1")
    Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With
    For Each c In plage
    If c.Value <> "" Then Me.ComboBox1.AddItem c.Value
    Next c
     
    End Sub
    J'ai du mal à percuter

    MERCI !

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    re, j'ai essayer de commenter le code pour qu'il soit plus compréhensible:
    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
    'je déclare mes variables
    Dim plage As Range
     
    'Avec la feuille 1
    With Sheets("Feuil1")
    'j'initialize ma variable plage en partant de la cellule A2 jusqu'à la
    'dernière cellule remplis de la colonne A
    Set plage = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With
     
    'je fais une boucle sur chaque cellule de ma plage
    For Each c In plage
    'si la valeur de la cellule est différent de rien alors je remplis le combobox
    'avec la valeur de la cellule
    If c.Value <> "" Then Me.ComboBox1.AddItem c.Value
    Next c
    n'hésite pas à regarder l'aide d'excel (F1) sur les termes que tu ne comprend pas.

    heureux d'avoir pu t'aider

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

Discussions similaires

  1. [Excel] Gérer des combobox dynamiques
    Par VBall dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/09/2006, 14h23
  2. Gèrer des fichiers (documents .doc) via Struts.
    Par LESOLEIL dans le forum Struts 1
    Réponses: 7
    Dernier message: 22/08/2005, 16h26
  3. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 11h01
  4. Comment (si possible) gérer des dll en Asm?
    Par @drien dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 06/01/2004, 15h59
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

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