[Catégorie modifiée VB6 --> VBA] Lier les ComboBox?

Résolu
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - 24 juin 2010 à 19:00
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - 1 juil. 2010 à 20:34
Bonsoir,

Je connaissais le site mais pas tout en détail. Je ne sais si j'ai bien posté dans la bonne catégorie. J'espère que vous allez pouvoir m'aider. Je dois créer une base de données, ma mission du stage.

Je m'en occupe de la partie INSERER. J'ai pas mal avancé! J'ai appris beaucoup de chose et j'ai réussi à faire seul.

Mais un seul soucis: je suis en train de créer une liste déroulante avec ComboBox. Il y'a 4 Combox.

1er ComboBox est le produit.
2eme ComboBox est le mot-clé.
3eme ComboBox est le type.
4eme ComboBox est le sous-type.

De plus, chaque produit a ses propres mot clés. Chaque mot clé a son propre type (ou pas de type) et chaque type a des sous-type.


A regarder dans le fichier Arborescence Produit : http://dl.free.fr/dYUhvh6bp
Mot de passe: kéké

Vous voyez ce que je veux dire?

Comment donc faire des liaison tout ça dans un ComboBox?

Pour commencer j'ai fait comme ça:

Private Bdocument As Boolean, Bobjet As Boolean, Bsupport As Boolean, BmotCle As Boolean, Bproduit As Boolean, Btype As Boolean, Bsoustype As Boolean, Bemplacement As Boolean
Private i As Integer

Private Sub Annuler_Click()
    End
End Sub

Private Sub ComboBoxmotCle_Click()
    Select Case ComboBoxmotCle.Value
    Case 1  'Arbre
    Case 2  'Couple mètre
    Case 3  'Turbine HP
    Case 4  'Turbine Libre
    Case 5  'Ejection et Tuyère
    Case 6  'ZF Etanchéité
    Case 7  'ZF Jeux
    Case 8  'ZF Veine aérodynamique
    Case 9  'Palier
    Case 10 'Joints et Etanchéité
    Case 11 'Structure
    Case 12 'Pièces d'assemblage
    Case 13 'Transport levage
    Case 14 'ZF Interface cellule
    Case 15 'Système d'huile
    Case 16 'Circuit d'air
    Case 17 'Système électrique
    Case 18 'Système de drainage
    End Select
        BmotCle = True
End Sub

Private Sub ComboBoxProduit_Click()
    Select Case ComboBoxProduit.Value
    Case 1  'Réducteur
    Case 2  'Turbine
    Case 3  'Composants communs
    Case 4  'Systèmes
    End Select
        Bproduit = True
End Sub

Private Sub ComboBoxSoustype_Click()
Select Case ComboBoxSoustype.Value
    Case 1  'Distributeur
    Case 2  'Enveloppe
    Case 3  'Pale
    Case 4  'Disque
    Case 5  'Attache
    Case 6  'Pale
    Case 7  'Disque
    Case 8  'Attache
    Case 9  'Labyrinthe
    Case 10 'Jeux radiaux
    Case 11 'Jeux faciaux
    Case 12 'Pas de sous-type
     End Select
        Bsoustype = True
End Sub

Private Sub ComboBoxType_Click()
    Select Case ComboBoxType.Value
    Case 1  'Stator
    Case 2  'Rotor
    Case 3  'Carter
    Case 4  'Stator
    Case 5  'Rotor
    Case 6  'Rotor
    Case 7  'Blindage
    Case 8  'Jeux axiaux
    Case 9  'Jeux radiaux
    Case 10 'Boîtier
    Case 11 'Element d'assemblage
    Case 12 'Roulement
    Case 13 'ZF Lubrification
    Case 14 'ZF Amortissement
    Case 15 'Statique
    Case 16 'Dynamique
    Case 17 'Fixation
    Case 18 'Blindage
    Case 19 'Element de liaison
    Case 20 'Carénage
    Case 21 'Tuyauteries
    Case 22 'Circuit de pression
    Case 23 'Circuit de récupération
    Case 24 'Circuit de dégazage
    Case 25 'Tuyauteries
    Case 26 'Capteurs
    Case 27 'Vitesse et Couples
    Case 28 'Températures
    Case 29 'Draintuyère
    Case 30 'Receptacles
    Case 31 'Pas de type
    End Select
        Btype = True
End Sub

Private Sub Insérer_Click()
If Bdocument True And Bobjet True _
    And Bproduit True And Bsupport True And BmotCle = True _
    And Btype True And Bsoustype True And Bemplacement = True Then
        Application.ScreenUpdating = False
        CalculLigne
        Application.ScreenUpdating = True
        Sheets("Produits").Range("A" & i).Value = ListBoxDocument.List(ListBoxDocument.ListIndex)
        Sheets("Produits").Range("B" & i).Value = TextBoxObjet.Value
        Sheets("Produits").Range("C" & i).Value = ComboBoxProduit.Value
        Sheets("Produits").Range("D" & i).Value = ComboBoxmotCle.Value
        Sheets("Produits").Range("E" & i).Value = ComboBoxType.Value
        Sheets("Produits").Range("F" & i).Value = ComboBoxSoustype.Value
        Sheets("Produits").Range("G" & i).Value = ListBoxSupport.List(ListBoxSupport.ListIndex)
        Sheets("Produits").Range("H" & i).Value = TextBoxEmplacement.Value
    Else
        GestionInsertion
    End If
End Sub

Private Sub ListBoxDocument_Change()
    If ListBoxDocument.ListIndex <> -1 Then
        Bdocument = True
    End If
End Sub

Private Sub ListBoxSupport_Change()
    If ListBoxSupport.ListIndex <> -1 Then
        Bsupport = True
    End If
End Sub

Private Sub TextBoxObjet_Change()
    If TextBoxObjet.Value <> "" Then
        Bobjet = True
    End If
End Sub

Private Sub TextBoxEmplacement_Change()
    If TextBoxEmplacement.Value <> "" Then
        Bemplacement = True
    End If
End Sub

Private Sub CalculLigne()
    For i = 6 To Range("D65536").End(xlUp).Row
        If Cells(i, 1).Value = "" Then
            Exit For
        End If
    Next i
End Sub

Private Sub GestionInsertion()
    If Bdocument = False Then
        MsgBox "Le document n'a pas été sélectionné."
    End If
    If Bobjet = False Then
        MsgBox "L'objet n'a pas été défini."
    End If
    If Bproduit = False Then
        MsgBox "Le produit n'a pas été sélectionné."
    End If
    If BmotCle = False Then
        MsgBox "Le mot-clé n'a pas été sélectionné"
    End If
    If Btype = False Then
        MsgBox "Le type n'a pas été sélectionné."
    End If
    If Bsoustype = False Then
        MsgBox "Le sous-type n'a pas été sélectionné."
    End If
     If Bsupport = False Then
        MsgBox "Le support n'a pas été sélectionné."
    End If
   If Bemplacement = False Then
        MsgBox "L'emplacement n'a pas été renseigné."
    End If
End Sub

Private Sub UserForm_Initialize()
    i = 6
    'Initialisation des booléens
    Bdocument = False
    Bobjet = False
    Bproduit = False
    BmotCle = False
    Btype = False
    Bsoustype = False
    Bsupport = False
    Bemplacement = False
    'Création des choix de la listbox Document
    ListBoxDocument.AddItem "Notes Techniques"
    ListBoxDocument.AddItem "Plans et Dessins"
    ListBoxDocument.AddItem "Revues"
    ListBoxDocument.AddItem "Photos et Architectures"
    ListBoxDocument.AddItem "Comptes-rendus"
    'Création des choix de la listbox Support
    ListBoxSupport.AddItem "DVD"
    ListBoxSupport.AddItem "CD"
    ListBoxSupport.AddItem "Papier"
    ListBoxSupport.AddItem "Livre"
    ListBoxSupport.AddItem "Dossier"
    ListBoxSupport.AddItem "Fichier Informatisé"
    'Création des choix de la combox Produit
    ComboBoxProduit.AddItem "Réducteurs"              'ListIndex = 1
    ComboBoxProduit.AddItem "Turbine"                 'ListIndex = 2
    ComboBoxProduit.AddItem "Composants communs"      'ListIndex = 3
    ComboBoxProduit.AddItem "Systèmes"                'ListIndex = 4
    'Création des choix de la combox MotCle
    ComboBoxmotCle.AddItem "Arbre"                      'ListIndex = 1
    ComboBoxmotCle.AddItem "Couple mètre"               'ListIndex = 2
    ComboBoxmotCle.AddItem "Turbine HP"                 'ListIndex = 3
    ComboBoxmotCle.AddItem "Turbine Libre"              'ListIndex = 4
    ComboBoxmotCle.AddItem "Ejection et Tuyère"         'ListIndex = 5
    ComboBoxmotCle.AddItem "ZF Etanchéité"              'ListIndex = 6
    ComboBoxmotCle.AddItem "ZF Jeux"                    'ListIndex = 7
    ComboBoxmotCle.AddItem "ZF Veine aérodynamique"     'ListIndex = 8
    ComboBoxmotCle.AddItem "Palier"                     'ListIndex = 9
    ComboBoxmotCle.AddItem "Joints et Etanchéité"       'ListIndex = 10
    ComboBoxmotCle.AddItem "Structure"                  'ListIndex = 11
    ComboBoxmotCle.AddItem "Pièces d'assemblage"        'ListIndex = 12
    ComboBoxmotCle.AddItem "Transport levage"           'ListIndex = 13
    ComboBoxmotCle.AddItem "ZF Interface cellule"       'ListIndex = 14
    ComboBoxmotCle.AddItem "Système d'huile"            'ListIndex = 15
    ComboBoxmotCle.AddItem "Circuit d'air"              'ListIndex = 16
    ComboBoxmotCle.AddItem "Système électrique"         'ListIndex = 17
    ComboBoxmotCle.AddItem "Système de drainage"        'ListIndex = 18
    'Création des choix de la combox Type
    ComboBoxType.AddItem "Stator"                     'ListIndex = 1
    ComboBoxType.AddItem "Rotor"                      'ListIndex = 2
    ComboBoxType.AddItem "Carter"                     'ListIndex = 3
    ComboBoxType.AddItem "Stator"                     'ListIndex = 4
    ComboBoxType.AddItem "Rotor"                      'ListIndex = 5
    ComboBoxType.AddItem "Carter"                     'ListIndex = 6
    ComboBoxType.AddItem "Blindage"                   'ListIndex = 7
    ComboBoxType.AddItem "Jeux axiaux"                'ListIndex = 8
    ComboBoxType.AddItem "Jeux radiaux"               'ListIndex = 9
    ComboBoxType.AddItem "Boîtier"                    'ListIndex = 10
    ComboBoxType.AddItem "Element d'assemblage"       'ListIndex = 11
    ComboBoxType.AddItem "Roulement"                  'ListIndex = 12
    ComboBoxType.AddItem "ZF Lubrification"           'ListIndex = 13
    ComboBoxType.AddItem "ZF Amortissement"           'ListIndex = 14
    ComboBoxType.AddItem "Statique"                   'ListIndex = 15
    ComboBoxType.AddItem "Dynamique"                  'ListIndex = 16
    ComboBoxType.AddItem "Fixation"                   'ListIndex = 17
    ComboBoxType.AddItem "Blindage"                   'ListIndex = 18
    ComboBoxType.AddItem "Element de liaison"         'ListIndex = 19
    ComboBoxType.AddItem "Carénage"                   'ListIndex = 20
    ComboBoxType.AddItem "Tuyauteries"                'ListIndex = 21
    ComboBoxType.AddItem "Circuit de pression"        'ListIndex = 22
    ComboBoxType.AddItem "Circuit de récupérage"      'ListIndex = 23
    ComboBoxType.AddItem "Circuit de dégazage"        'ListIndex = 24
    ComboBoxType.AddItem "Tuyauteries"                'ListIndex = 25
    ComboBoxType.AddItem "Capteur"                    'ListIndex = 26
    ComboBoxType.AddItem "Vitesse et Couple"          'ListIndex = 27
    ComboBoxType.AddItem "Température"                'ListIndex = 28
    ComboBoxType.AddItem "Drain tuyère"               'ListIndex = 29
    ComboBoxType.AddItem "Receptacles"                'ListIndex = 30
    ComboBoxType.AddItem "Pas de type"                'ListIndex = 31
    'Création des choix de la combox Sous-type
    ComboBoxSoustype.AddItem "Distributeur"            'ListIndex = 1
    ComboBoxSoustype.AddItem "Enveloppe"               'ListIndex = 2
    ComboBoxSoustype.AddItem "Pale"                    'ListIndex = 3
    ComboBoxSoustype.AddItem "Disque"                  'ListIndex = 4
    ComboBoxSoustype.AddItem "Attache"                 'ListIndex = 5
    ComboBoxSoustype.AddItem "Pale"                    'ListIndex = 6
    ComboBoxSoustype.AddItem "Disque"                  'ListIndex = 7
    ComboBoxSoustype.AddItem "Attache"                 'ListIndex = 8
    ComboBoxSoustype.AddItem "Labyrinthe"              'ListIndex = 9
    ComboBoxSoustype.AddItem "Joint radiaux"           'ListIndex = 10
    ComboBoxSoustype.AddItem "Joint faciaux"           'ListIndex = 11
    ComboBoxSoustype.AddItem "Pas de sous-type"        'ListIndex = 12
    'Use drop-down list Produit
    ComboBoxProduit.Style = fmStyleDropDownList
    'Set combo box to first entry
    ComboBoxProduit.ListIndex = 0
    'Use drop-down list Mot-Clé
    ComboBoxmotCle.Style = fmStyleDropDownList
    'Set combo box to first entry
    ComboBoxmotCle.ListIndex = 0
    'Use drop-down list Type
    ComboBoxType.Style = fmStyleDropDownList
    'Set combo box to first entry
    ComboBoxType.ListIndex = 0
    'Use drop-down list Sous-type
    ComboBoxSoustype.Style = fmStyleDropDownList
    'Set combo box to first entry
    ComboBoxSoustype.ListIndex = 0
End Sub

Private Sub UserForm_Terminate()
    ListBoxDocument.Clear
    ListBoxSupport.Clear
End Sub


Voici la base de donnée: http://dl.free.fr/rSVe7kIOz

Mot de passe: kéké

Merci d'avance de votre aide.

13 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juin 2010 à 20:12
Ok, c'est largement plus clair.
Donc, à faire :
Dans le UserForm_Initialize, tu entres les données dans la ComboBoxProduit comme tu l'as fait.
Pour les autres ComboBox, inutile de les remplir puisque tu ne sais pas quel produit est sélectionné.

Dans le ComboBoxProduit_Click (ou _Change), c'est là que tu remplir la ComboBox suivante, ComboBoxmotCle, avec le Select Case que tu as préparé :
Private Sub ComboBoxProduit_Click()
    ComboBoxmotCle.Clear    ' Vidage de la liste 
    Select Case ComboBoxProduit.Value
    Case 1  'Réducteur
        ComboBoxmotCle.AddItem "Arbre"          'ListIndex = 1
        ComboBoxmotCle.AddItem "Couple mètre"   'ListIndex = 2
    Case 2  'Turbine
        ComboBoxmotCle.AddItem "Turbine HP"                 'ListIndex = 1
        ComboBoxmotCle.AddItem "Turbine Libre"              'ListIndex = 2
        ComboBoxmotCle.AddItem "Ejection et Tuyère"         'ListIndex = 3
        ComboBoxmotCle.AddItem "ZF Etanchéité"              'ListIndex = 4
        ComboBoxmotCle.AddItem "ZF Jeux"                    'ListIndex = 5
        ComboBoxmotCle.AddItem "ZF Veine aérodynamique"     'ListIndex = 6
    Case 3  'Composants communs
        etc ...
    Case 4  'Systèmes
    End Select
        Bproduit = True
End Sub
Mais tu l'auras vu, puisque ComboBoxmotCle n'affiche QUE les items associés au produit sélectionnés, les Items sont numérotés de 1 à X.
Donc, dans ComboBoxmotCle_Click, quand tu feras la même chose pour renseigner ComboBoxType, il faudra faire autant de Select Case que de produit et des Sous-Select Case pour les motclé, exemple :
    Select Case ComboBoxProduit.Value
    Case 1  'Réducteur
        Select Case ComboBoxmotCle.Value
            Case 1 ' Arbre
                ComboBoxProduit.addItem "mot clé après Arbre" ' Index 1
                ComboBoxProduit.addItem "mot clé après Arbre" ' Index 2
            Case 2 ' Couple mètre
                ComboBoxProduit.addItem "mot clé 1 après Couple mètre" ' Index 1
                ComboBoxProduit.addItem "mot clé 2 après Couple mètre" ' Index 2
        End Select
    Case 2  'Turbine
        etc ...
    Case 3  'Composants communs
        etc ...
    Case 4  'Systèmes
    End Select
Mauvais exemple puisque "Arbre" n'a pas de Type, mais c'est l'idée qui compte.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juin 2010 à 20:14
Je me suis trompé de ComboBox dans le dernier code
    Select Case ComboBoxProduit.Value
    Case 1  'Réducteur
        Select Case ComboBoxmotCle.Value
            Case 1 ' Arbre
                ComboBoxType.addItem "mot clé après Arbre" ' Index 1
                ComboBoxType.addItem "mot clé après Arbre" ' Index 2
            Case 2 ' Couple mètre
                ComboBoxType.addItem "mot clé 1 après Couple mètre" ' Index 1
                ComboBoxType.addItem "mot clé 2 après Couple mètre" ' Index 2
        End Select
    Case 2  'Turbine
        etc ...
    Case 3  'Composants communs
        etc ...
    Case 4  'Systèmes
    End Select
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juin 2010 à 11:54
Salut
C'est bien beau de dire que tu n'es pas dans la bonne catégorie, mais il vaudrait mieux dire que tu es sous Excel car il faut avoir lu ton code pour s'en apercevoir !

Et quelle est ta question ?
Parce que tu nous expliques pas mal de choses, mais on ne sait pas ce que tu veux faire. Ce n'est pas à nous d'analyser ton code ou tes données pour s'en dépatouiller : explique ce que tu veux faire.

A quoi servent ComboBoxmotCle_Click ou ComboBoxType_Click puisque tu ne fais que mettre à True une variable : les Select Case ne servent à rien puisque tu ne fais aucune action !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
25 juin 2010 à 18:13
Bonjour,

Merci pour la réponse. Je comprend tout à fait, j'ai trop expliqué sans donner mon problème. Je vous prie de m'excuser.

Je voudrais crée des "liens conditionnels" sur Produit, Mot-Clé, Type et Sous-Type avec les ComboBox.

Voici l'arborescence:



Vous voyez que par exemple, "Arbre" et "Couple Metre" (qui sont des mot-clé) appartient à Réducteur (Produit).
Et que le "Carter" (Type) appartient au Turbine HP (Mot clé, qui appartient au Turbine (Produit).

Donc, si je sélectionne Réducteur, j'aimerai que la sélection se fait automatiquement pour Mot Clé, Type et Sous-type, s'il y'en a.



-----------------------

Car si c'est impossible, il y'a une solution. C'est de mettre les mots en couleurs. Quel est le code pour mettre des couleurs?

MErci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
25 juin 2010 à 20:34
Case 1 ' Arbre
ComboBoxType.addItem "mot clé après Arbre" ' Index 1
ComboBoxType.addItem "mot clé après Arbre" ' Index 2


Si "Arbre" ne possède pas de Type ni de sous-Type, je ne met rien?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 juin 2010 à 00:52
Bah que veux-tu lettre ?
Pense juste à faire un Clear de la ComboBox (de toute façon, avant de commencer à le 1er Select Case, éventuellement ajoute un item du genre "< Non applicable >" ou "< Type non défini >"
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 juin 2010 à 00:56
Méfie toi d'un truc : Il se peut que, quand tu feras les AddItem dans les ComboBox, que celles-ci réagissent au _Click alors qu'il n'y en a pas eu.
Si c'est le cas, cela va entrainer une suite d'évènements non sollicités et ... foutre la m....e.
Tu le sauras en exécutant instruction par instruction avec F9 et F8.
Si tel est le cas, envoie moi un MP, je t'expliquerai comment le bypasser.
0
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
26 juin 2010 à 10:19
Merci beaucoup. Je te tiens au courant!
0
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
28 juin 2010 à 17:57
Bonjour,

J'ai suivi parfaitement votre étape. Et cela ne fonctionne pas. Enfin si, le macro fonctionne mais pas les liens conditionnelles.

Quand je clique sur Réducteur, le mot clé n'apparait pas automatiquement (donc manuellement).

Voilà comment j'ai fait.

Private Sub ComboBoxProduit_Click()
    Select Case ComboBoxProduit.Value
    Case 1  'Réducteur
        Select Case ComboBoxMotCle.Value
            Case 1 'Arbre
            Case 2 'Couple mètre
        End Select
    Case 2  'Turbine
        Select Case ComboBoxMotCle.Value
            Case 3 'Turbine HP
                ComboBoxType.AddItem "Stator"       'ListIndex = 1
                    ComboBoxSousType.AddItem "Distributeur"            'ListIndex = 1
                    ComboBoxSousType.AddItem "Enveloppe"               'ListIndex = 2
                ComboBoxType.AddItem "Rotor"       'ListIndex = 2
                     ComboBoxSousType.AddItem "Pale"                    'ListIndex = 3
                     ComboBoxSousType.AddItem "Disque"                  'ListIndex = 4
                     ComboBoxSousType.AddItem "Attache"                 'ListIndex = 5
                ComboBoxType.AddItem "Carter"       'ListIndex = 3
            Case 4 'Turbine Libre
                ComboBoxType.AddItem "Stator"       'ListIndex = 4
                ComboBoxType.AddItem "Rotor"       'ListIndex = 5
                     ComboBoxSousType.AddItem "Pale"                    'ListIndex = 6
                     ComboBoxSousType.AddItem "Disque"                  'ListIndex = 7
                     ComboBoxSousType.AddItem "Attache"                 'ListIndex = 8
                ComboBoxType.AddItem "Carter"       'ListIndex = 6
                ComboBoxType.AddItem "Blindage"       'ListIndex = 7
            Case 5 'Ejecteur et Tuyère
            Case 6 'ZF Etanchéité gaz
            Case 7 'ZF Jeux
                 ComboBoxType.AddItem "Jeux axiaux"                'ListIndex = 8
                 ComboBoxType.AddItem "Jeux radiaux"               'ListIndex = 9
            Case 8 'ZF Veine aérodynamique
            End Select
    Case 3  'Compossants communs
        Select Case ComboBoxMotCle.Value
            Case 9 'Palier
                ComboBoxType.AddItem "Boîtier"                    'ListIndex = 10
                ComboBoxType.AddItem "Element d'assemblage"       'ListIndex = 11
                ComboBoxType.AddItem "Roulement"                  'ListIndex = 12
                ComboBoxType.AddItem "ZF Lubrification"           'ListIndex = 13
                ComboBoxType.AddItem "ZF Amortissement"           'ListIndex = 14
            Case 10 'Joints et étanchéité
                ComboBoxType.AddItem "Statique"                   'ListIndex = 15
                ComboBoxType.AddItem "Dynamique"                  'ListIndex = 16
                    ComboBoxSousType.AddItem "Labyrinthe"              'ListIndex = 9
                    ComboBoxSousType.AddItem "Joint radiaux"           'ListIndex = 10
                    ComboBoxSousType.AddItem "Joint faciaux"           'ListIndex = 11
            Case 11 'Structure
                ComboBoxType.AddItem "Fixation"                   'ListIndex = 17
                ComboBoxType.AddItem "Blindage"                   'ListIndex = 18
                ComboBoxType.AddItem "Element de liaison"         'ListIndex = 19
                ComboBoxType.AddItem "Carénage"                   'ListIndex = 20
            Case 12 'Pièces d'assemblages
            Case 13 'Transport levage
            Case 14 'ZF Interface cellule
        End Select
    Case 4  'Systèmes
        Select Case ComboBoxMotCle.Value
            Case 15 'Système d'huile
                ComboBoxType.AddItem "Tuyauteries"                'ListIndex = 21
                ComboBoxType.AddItem "Circuit de pression"        'ListIndex = 22
                ComboBoxType.AddItem "Circuit de récupérage"      'ListIndex = 23
                ComboBoxType.AddItem "Circuit de dégazage"        'ListIndex = 24
            Case 16 'Circuit d'air
                ComboBoxType.AddItem "Tuyauteries"                'ListIndex = 25
            Case 17 'Système électrique
                 ComboBoxType.AddItem "Capteur"                    'ListIndex = 26
                 ComboBoxType.AddItem "Vitesse et Couple"          'ListIndex = 27
                 ComboBoxType.AddItem "Température"                'ListIndex = 28
            Case 18 'Systèmes de drainage
                ComboBoxType.AddItem "Drain tuyère"               'ListIndex = 29
                ComboBoxType.AddItem "Receptacles"                'ListIndex = 30
    End Select
End Select
End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 juin 2010 à 10:36
"J'ai suivi parfaitement votre étape"
Je ne crois pas, non

Revois la première réponse que tu as validée (en vert).
Celle que tu as collée en dernier est complètement différente.

- Dans ComboBoxProduit_Click, tu ne dois (tu ne peux) gérer QUE le contenu de la Combo suivante, ComboBoxMotCle

- Il manque la remise à zéro de cette dernière (le .Clear) à faire avant de commencer son remplissage
0
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
30 juin 2010 à 18:29
D'accord. Je comprend mieux. Je met donc pas des types et des sous-types? Comment les faire apparaître alors?
0
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
30 juin 2010 à 18:33
C'est bon. J'ai compris. Merci encore.
0
kekedepau Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
1 juil. 2010 à 20:34
-----------------------------------------------------------------------------------------------------------------

RECHERCHE:

** FAMILLE MOTEUR et PRODUIT:

Je suis en train de créer une boîte de dialogue Recherche Moteurs. J'ai fait le code moi-même et il y'a un problème.

Cela lance une recherche seulement la Famille et non le modèle. Ce que je j'aimerai, c'est la possibilité de rechercher à partir de 2 informations: Famille et/ou Modele. sachant que le boite de dialogue possède 2 listes déroulantes donc 2 combobox!


Merci beaucoup.

------------------------
Option Explicit
'Déclaration des variables
Private strPlage As String, pgRecherche As String, premCell As String, strFamille As String
Private res As Range, cel As Range
Private cpt As Integer, i As Integer
Private mySheet As Worksheet
Private rc As Boolean
Private Sub calculFinRecherche()
'Attention, le champs de calcul d'index est la colone G, si elle est vide, la recherche sera incohérente si des données
'se trouvent dans les autres colonnes
For i = 6 To Range("G65536").End(xlUp).Row
If IsEmpty(Cells(i, 1).Value) Then
Exit For
End If
Next i
End Sub

Private Sub ComboBoxFamille_Change()
Select Case ComboBoxFamille.Value
Case 1 'Arriel
Case 2 'Arrius
Case 3 'TM333
Case 4 'Makila
Case 5 'Ardiden
Case 6 'MTR390
Case 7 'RTM322
Case 8 'Ancien génération
Case 9 'Démonstrateur
Case 10 'SNECMA
Case 11 'Concurrence
End Select
End Sub
Private Sub ComboBoxModele2_Change()
Select Case ComboBoxModele2.Value
Case 1 '1
Case 2 '2
Case 3 '3
Case 4 'Pratt & Whitney
Case 5 'Autres
End Select
End Sub

Private Sub CommandButtonAnnuler_Click()
End
End Sub

Private Sub CommandButtonOk_Click()
If rc True Or ComboBoxFamille.Value <> "Sélectionner" And rc True Or ComboBoxModele2.Value <> "Sélectionner" Then
'Appel de la méthode de recherche
If ActiveSheet.Name = "PORTAIL de RECHERCHE" Then
RechercheComplete
Else
RechercheFeuille
End If
End If
rc = False
End Sub

Private Sub UserForm_Initialise()
i = 0
cpt = 0
rc = False
pgRecherche = ""
'création des choix de la combox Famille
ComboBoxFamille.AddItem "Arriel" 'ListIndex = 1
ComboBoxFamille.AddItem "Arrius" 'ListIndex = 2
ComboBoxFamille.AddItem "TM333" 'ListIndex = 3
ComboBoxFamille.AddItem "Makila" 'ListIndex = 4
ComboBoxFamille.AddItem "Ardiden" 'ListIndex = 5
ComboBoxFamille.AddItem "MTR390" 'ListIndex = 6
ComboBoxFamille.AddItem "RTM322" 'ListIndex = 7
ComboBoxFamille.AddItem "Ancien Génération" 'ListIndex = 8
ComboBoxFamille.AddItem "Démonstrateur" 'ListIndex = 9
ComboBoxFamille.AddItem "SNECMA" 'ListIndex = 10
ComboBoxFamille.AddItem "Concurrence" 'ListIndex = 11
'création des choix de la combox Modele
ComboBoxModele2.AddItem "1" 'ListIndex = 1
ComboBoxModele2.AddItem "2" 'ListIndex = 2
ComboBoxModele2.AddItem "3" 'ListIndex = 3
ComboBoxModele2.AddItem "Pratt & Whitney " 'ListIndex = 4
ComboBoxModele2.AddItem "Autres" 'ListIndex = 5
End Sub

Private Sub RechercheFeuille()
Application.ScreenUpdating = False
'Initialisation de la variable contenant le champ à rechercher
strFamille = ComboBoxFamille.Value

cpt = 0
ActiveSheet.Select
calculFinRecherche
'Formatage de la variable de plage de recherche
strPlage = "k6:L" & i

With ActiveSheet.Range(strPlage)
'Réinitialisation couleur
For Each cel In Range(strPlage)
If cel.Interior.ColorIndex <> xlNone Then
cel.Interior.ColorIndex = xlNone
End If
Next

Set res = .Find(what:=strFamille, LookIn:=xlValues, LookAt:=xlPart)
If Not res Is Nothing Then
premCell = res.Address
Do
res.Interior.ColorIndex = 6
Set res = .FindNext(res)
'incrémentation du compteur si un résultat est trouvé
cpt = cpt + 1
Loop While Not res Is Nothing And res.Address <> premCell
End If
End With

If cpt = 0 Then
MsgBox ("Aucune famille moteur trouvée")
End If
Application.ScreenUpdating = True

End Sub

Private Sub RechercheComplete()
Application.ScreenUpdating = False
'Initialisation de la variable contenant le champ à rechercher
strFamille = ComboBoxFamille.Value

cpt = 0
For Each mySheet In Worksheets
mySheet.Select
calculFinRecherche
If mySheet.Name <> "PORTAIL de RECHERCHE" Then
'Formatage de la variable de plage de recherche
strPlage = "K6:L" & i

With mySheet.Range(strPlage)

'Réinitialisation couleur
For Each cel In Range(strPlage)
If cel.Interior.ColorIndex <> xlNone Then
cel.Interior.ColorIndex = xlNone
End If
Next

Set res = .Find(what:=strFamille, LookIn:=xlValues, LookAt:=xlPart)
If Not res Is Nothing Then
premCell = res.Address
Do
res.Interior.ColorIndex = 6
Set res = .FindNext(res)
'incrémentation du compteur si un résultat est trouvé
cpt = cpt + 1
Loop While Not res Is Nothing And res.Address <> premCell
End If
End With

End If
Next mySheet

Sheets("PORTAIL de RECHERCHE").Select
Range("L27").Value = cpt & " résultats."
Application.ScreenUpdating = True
End Sub
0
Rejoignez-nous