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 :

Filtre dans Userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut Filtre dans Userform
    Bonjour,

    pour simplifier la recherche dans mon tableau 'intervention garde".
    J'ai créer 2 Userform "recherche et searchbis".

    le 1er userform "searchbis" fonctionne. Je fais des tris sur des combobox puis dans un listbox cela me fait les résultats du tri.
    Le problème est que dans ma fenêtre les résultats dans la listbox sont tronqués, je n'ai pas l'intégralité de mes colonnes. Voici son 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    Private Sub UserForm_Initialize() 
     noCol = 1: ListeCol 1 
     noCol = 2: ListeCol 2   
    noCol = 3: ListeCol 3   
    noCol = 4: ListeCol 4   
    noCol = 5: ListeCol 5   
    noCol = 6: ListeCol 6   
    On Error Resume Next   
    ActiveSheet.ShowAllData 
    End Sub 
     
    Private Sub ComboBox1_DropButtonClick()   
    noCol = 1: ListeCol 1 
    End Sub
    Private Sub ComboBox2_DropButtonClick()   
    noCol = 2: ListeCol 2 
    End Sub 
    Private Sub ComboBox3_DropButtonClick()   
    noCol = 3: ListeCol 3 
    End Sub
    Private Sub ComboBox4_DropButtonClick()   
    noCol = 4: ListeCol 4 
    End Sub  
    Private Sub ComboBox5_DropButtonClick()   
    noCol = 5: ListeCol 5 
    End Sub 
    Private Sub ComboBox6_DropButtonClick()  
    noCol = 6: ListeCol 6 
    End Sub  
     
    Sub ListeCol(noCol)   
    Set MonDico = CreateObject("Scripting.Dictionary")   
    For i = 1 To [bd].Rows.Count     
    ok = True     
    For n = 1 To [bd].Columns.Count       
    If n <> noCol Then         
    If Not Range("bd").Cells(i, n) Like Me("comboBox" & n) Then ok = False      
     End If     
    Next n    
    If ok Then 
     tmp = Range("BD").Cells(i, noCol)        
    MonDico(tmp) = tmp     
    End If   
    Next i   
    MonDico.Add "*", "*"  
    temp = MonDico.items   
    Call Tri(temp, LBound(temp), UBound(temp))   
    Me("ComboBox" & noCol).List = temp 
    End Sub 
     
    Sub Tri(a, gauc, droi) ' Quick sort  
     ref = CStr(a((gauc + droi) \ 2))   
    g = gauc: d = droi   
    Do     
    Do While CStr(a(g)) < ref: g = g + 1: Loop     
    Do While ref < CStr(a(d)): d = d - 1: Loop       
    If g <= d Then         
    temp = a(g): a(g) = a(d): a(d) = temp        
    g = g + 1: d = d - 1       
    End If    
    Loop While g <= d     
    If g < droi Then Call Tri(a, g, droi)     
    If gauc < d Then Call Tri(a, gauc, d)
    End Sub 
     
    Private Sub ComboBox1_Change()  
    filtre End 
    Sub Private Sub ComboBox2_Change()  filtre
    End Sub 
    Private Sub ComboBox3_Change()  
    filtre End 
    Sub Private Sub ComboBox4_Change()  
     filtre End 
    Sub Private Sub ComboBox5_Change()  
    filtre 
    End Sub 
     
    Private Sub ComboBox6_Change() 
    filtre  
    End Sub  
     
    Sub filtre()    
    ligne = 0    
    Me.ListBox1.Clear    
    For i = 1 To [bd].Rows.Count     
    ok = True      
    For n = 1 To [bd].Columns.Count          
    If Not Range("bd").Cells(i, n) Like Me("comboBox" & n) Then ok = False      Next n      
    If ok Then       
    Me.ListBox1.AddItem        
    For k = 1 To [bd].Columns.Count          
    Me.ListBox1.List(ligne, k - 1) = Range("bd").Cells(i, k)       
    Next k        
    ligne = ligne + 1      
    End If    
    Next i    
    On Error Resume Next   ActiveSheet.ShowAllData   [A1].AutoFilter Field:=1, Criteria1:=Me.ComboBox1   If Me.ComboBox2 <> "*" Then [A5].AutoFilter Field:=2, Criteria1:=Me.ComboBox2 [A1].AutoFilter Field:=3, Criteria1:=Me.ComboBox3   [A1].AutoFilter Field:=4, Criteria1:=Me.ComboBox4   [A1].AutoFilter Field:=5, Criteria1:=Me.ComboBox5  '[A1].AutoFilter Field:=6, Criteria1:=Me.ComboBox6 End Sub


    Le 2eme Userform "rechercher" fonctionne à moitié. J'ai un 1er combobox qui me donne une liste sur le deuxième combobox. Par contre, je souhaiterais faire apparaitre par je ne sais quel moyen pour afficher le résultat de mes 2 colonnes "observation et dépannage" en fonction de mon dernier combobox. Enfin, il faudrait quelques chose de clair pour visualiser pour la consultation des résultats.

    J'utiliserais l'un des deux userfoms qui serait le plus pratique pour les utilisateurs.


    MERCI

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Le problème est que dans ma fenêtre les résultats dans la listbox sont tronqués, je n'ai pas l'intégralité de mes colonnes.
    Il faut paramétrer la propriété "ColumnWidths" pour fixer la largeur des colonnes. Tu peux le faire par VBA ou dans la listbox en affichant les propriétés.
    Pour le reste, ça serait bien que tu mettes en pièce jointe un classeur exemple.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Par défaut Filtre dans Userform
    Extra merci Daniel C., j'ai résolu le problème des colonnes grâce à
    la propriété "ColumnWidths" pour fixer la largeur. MERCI.

    Dans l'userform "search1", le filtre fonctionne mais je ne trouve pas ça très pratique et agréable car tout est en ligne et c'est pas facile de consulter l'intégralité des colonnes lorsqu'il y a beaucoup de textes. On n'a pas vraiment de visu global comme dans la feuille "intervention garde".

    Est-ce qu'on peut me donner un coup de pouce pour améliorer cela. Peut-être avec des listview?

    Daniel C. t'as du voir du progrés dans le fichier??

    ps: dans l'accueil, lorsque je clic sur recherche 1 pour appeler userform "searchbis", il me met une erreur ??
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Désolé, je n'ai pas trop de temps actuellement et il faudrait que je me plonge dans la logique de l'appli. Tu devrais poser la question dans un nouveau fil, tu aurais plus de chance d'attirer un répondeur. Je suivrai le nouveau fil et j'interviendrai si j'ai du temps.

Discussions similaires

  1. [XL-2010] Filtre automatique dans userform
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 20/07/2011, 00h42
  2. [XL-2010] Filtre dans userform
    Par Pierre67 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/09/2010, 18h04
  3. [VB.NET] filtre dans base de donnée
    Par speedtug dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/09/2005, 17h12
  4. Application d'un filtre dans sous form (syntaxe)
    Par samlepiratepaddy dans le forum Access
    Réponses: 12
    Dernier message: 15/09/2005, 21h32
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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