Filtre sur liste avec condition sur la même feuille

cs_YVO22 Messages postés 14 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 17 mars 2009 - 20 févr. 2009 à 23:13
cs_YVO22 Messages postés 14 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 17 mars 2009 - 25 févr. 2009 à 20:10
Bonsoir a tous
J'ai un problème avec une liste que je voudrais filtrer.
Dans ma feuille "basefil"
       J'ai une 1ere colonne "A" qui contient une centaine de numéros différents correspondants a des machines (A1 étant le titre numéro de machine)
       J'ai aussi une colonne "I" qui contient 3 possibilités : "DPAS","DPAA" et "DPGC"correspondants a un type de montage.("I1" étant le titre type)
 Ces numéros ne sont pas rangées dans la colonne "A" a suivre par categories (par exemple toutes les DPAS puis les DPAA etc...) d'ou la difficulté de les récuperer.
A partir d'une userform:
  Sachant que  "textbox3" (donne le type de facon automatique) ,comment puis-je afficher dans le combobox "numfil" les numéros correspondants. 
J'ai beau chercher je n'y arrive pas sauf en rangeant les numéros par type et donc simplement endéclarant une plage de données.
Si quelq'un a une solution je suis prenneur
Merci
Bonne soirée

2 réponses

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
22 févr. 2009 à 14:29
Salut YVO
Je te suggère cette solution avec un "ComboBox" (ou "ListBox") qui contiendra les types de machines et une "ListBox" (ou "ComboBox") pour les N° de nomenclatures

***** Partie déclarations du module de code de l'UserForm *********
'Tableaux des N° nomenclatures pour les différents types de machines
Private TB_DPAS() As String, TB_DPAA() As String, TB_DPGC() As String
'Tableau des types de machines
Private TB_Types()
'Constantes des 3 types de machinesPrivate Const DPAS As String "DPAS", DPAA As String "DPAA", DPGC As String = "DPGC"
********* Zône de code *************
'Procédure de démarrage l'ouverture de l'UserForm
Private Sub UserForm_Initialize()
    Filtrage
    TypeMachine.List = TB_Types
    TypeMachine.ListIndex = 0
    N°Machine.List = TB_DPAS
End Sub

' Procédure d'évènement "Change" de la ComboBox contenant les 3 types
Private Sub TypeMachine_Change()
    ' Remplissage de la ListBox qui reçoit les N° nomenc. suivant le type choisit
    If TypeMachine.List(TypeMachine.ListIndex) = DPAS Then
        N°Machine.List = TB_DPAS
    ElseIf TypeMachine.List(TypeMachine.ListIndex) = DPAA Then
        N°Machine.List = TB_DPAA
    ElseIf TypeMachine.List(TypeMachine.ListIndex) = DPGC Then
        N°Machine.List = TB_DPGC
    End If
End Sub

' Procédure de rangement des N° nomenclatures en tableaux
Private Sub Filtrage()
    Dim i As Integer
    ' Variables object "Range" des plages utiles
    Dim N°Machine As Range, TypeMachine As Range
    ' Variables pour comptage
    Dim k As Integer, l As Integer, m As Integer
    ' Tableau des types de machines
    TB_Types = Array(DPAS, DPAA, DPGC)
    'Algorithme de rangement en tableaux
    With Sheets("basefil")
        ' Référence de la plage des N° nomenclatures
        Set N°Machine = Range("a2", Range("a2").End(xlDown))
        ' Référence de la plage des types de machines
        Set TypeMachine = Range("i2", Range("i2").End(xlDown))
        ' Bouclage sur la plage des types de machines
        For i = 1 To TypeMachine.Rows.Count
            If TypeMachine.Cells(i).Value = DPAS Then
                ReDim Preserve TB_DPAS(k)
                TB_DPAS(k) = N°Machine.Cells(i).Value
                k = k + 1
            ElseIf TypeMachine.Cells(i).Value = DPAA Then
                ReDim Preserve TB_DPAA(l)
                TB_DPAA(l) = N°Machine.Cells(i).Value
                l = l + 1
            ElseIf TypeMachine.Cells(i).Value = DPGC Then
                ReDim Preserve TB_DPGC(m)
                TB_DPGC(m) = N°Machine.Cells(i).Value
                m = m + 1
            End If
        Next i
    End With
End Sub

En espérant d'avoir été compris et utile je te souhaite bonne programmation.
Bye, bye
0
cs_YVO22 Messages postés 14 Date d'inscription lundi 25 décembre 2000 Statut Membre Dernière intervention 17 mars 2009
25 févr. 2009 à 20:10
Merci
Cela fonctionne
A bientot
Yvo
0
Rejoignez-nous