je suis a la recherche d'un filtre de données exel car j'en avais un qui me donne toute satisfaction mais depuis que nous sommes passe a exel 2010 j'ai perdu toutes mes fonctions de filtrage, vous avez compris que je suis une bille au niveau informatique
A priori la listview n'existe plus sur vba 2010 ou 2013
mon problème c'est mon truc etait pour moi parfait car j'avais 4 ComboBox de filtrage (ex 1 type de machine,son modele et la partie incrimine+ le numero le tous venais gentiment ce mettre dans listview et je clicker dessus avec un lien j'allais directement sur le fichier en question. en plus il y avais une recherche par mot
si quelqu'un a une idee ? ci-dessous les code vba 2003 de mon application
A priori la listview n'existe plus sur vba 2010 ou 2013
mon problème c'est mon truc etait pour moi parfait car j'avais 4 ComboBox de filtrage (ex 1 type de machine,son modele et la partie incrimine+ le numero le tous venais gentiment ce mettre dans listview et je clicker dessus avec un lien j'allais directement sur le fichier en question. en plus il y avais une recherche par mot
si quelqu'un a une idee ? ci-dessous les code vba 2003 de mon application
- Code:
Option Explicit
Option Compare Text 'la casse n'est pas prise en compte
Dim L& 'mémorisation
Private Sub ComboBox1_Change()
Dim d1 As Object, d2 As Object, d3 As Object
Dim w As Worksheet, derlig&, t1, t2, t3, cb$, i&, s$
ComboBox2.RowSource = "": ComboBox3.RowSource = "": ComboBox4.RowSource = ""
Union([Type], [Thème], [Numéro]).ClearContents
If Application.CountIf([Machine], ComboBox1) = 0 Then _
ComboBox1 = "": If TextBox1 = "" Then ComboBox1.DropDown: GoTo 1
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Set d3 = CreateObject("Scripting.Dictionary")
Set w = Sheets("SOMMAIRE COMMUN")
w.AutoFilterMode = False
derlig = w.Cells.Find("*", w.[A1], xlFormulas, , xlByRows, xlPrevious).Row
t1 = Application.Transpose(w.Range("C3:C" & derlig))
t2 = Application.Transpose(w.Range("D3:D" & derlig))
t3 = Application.Transpose(w.Range("E3:E" & derlig))
cb = ComboBox1
For i = 1 To UBound(t1)
s = Trim(w.Cells(i + 2, "H"))
If IIf(cb = "(vide)", s = "", cb = "" Or cb = s Or s = "commun") Then
If t1(i) <> "" And Not d1.exists(t1(i)) Then d1.Add t1(i), t1(i)
If t2(i) <> "" And Not d2.exists(t2(i)) Then d2.Add t2(i), t2(i)
If t3(i) <> "" And Not d3.exists(t3(i)) Then d3.Add t3(i), t3(i)
End If
Next
'---RowSources---
If d1.Count Then
[Type].Resize(d1.Count) = Application.Transpose(d1.items)
[Type].Sort [Type], xlAscending, Header:=xlNo
ComboBox2.RowSource = "Type"
End If
If d2.Count Then
[Thème].Resize(d2.Count) = Application.Transpose(d2.items)
[Thème].Sort [Thème], xlAscending, Header:=xlNo
ComboBox3.RowSource = "Thème"
End If
If d3.Count Then
[Numéro].Resize(d3.Count) = Application.Transpose(d3.items)
[Numéro].Resize(, 2).Sort [Numéro].Offset(, 1), xlAscending, [Numéro], , xlDescending, Header:=xlNo
ComboBox4.RowSource = "Numéro"
End If
'--------
1 RECHERCHE
End Sub
Private Sub ComboBox2_Change() 'Type
RECHERCHE
End Sub
Private Sub ComboBox3_Change() 'Thème
RECHERCHE
End Sub
Private Sub ComboBox4_Change() 'Numéro
RECHERCHE
End Sub
Private Sub CommandButton1_Click() 'RAZ
ComboBox1 = "": ComboBox2 = "": ComboBox3 = "": ComboBox4 = "": TextBox1 = "": ComboBox1.SetFocus
End Sub
Private Sub Label5_Click() 'Mots clés
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
RECHERCHE
End Sub
Private Sub Label6_Click()
TextBox1.SetFocus
TextBox1.SelStart = 0
RECHERCHE
End Sub
Private Sub Label8_Click() 'lien hypertexte
On Error Resume Next
Sheets("SOMMAIRE COMMUN").Cells(L, "N").Hyperlinks(1).Follow True
End Sub
Private Sub ListView1_Click()
Label8 = ""
L = ListView1.SelectedItem
On Error Resume Next
Label8 = Sheets("SOMMAIRE COMMUN").Cells(L, "N").Hyperlinks(1).Parent
End Sub
Private Sub TextBox1_Change()
If TextBox1 = "" Then RECHERCHE
End Sub
Private Sub UserForm_Initialize()
Union([Type], [Thème], [Numéro]).ClearContents
With ListView1.ColumnHeaders
.Add , , "L", 0 'n° de ligne dans la feuille de calcul
.Add , , "MACHINES", 70
.Add , , "TYPES", 40
.Add , , "THEMES", 80, 2 'centrée
.Add , , "Intitulé", 450
End With
End Sub
Sub RECHERCHE()
Dim w As Worksheet, derlig&, cb$, i&, motclé As Boolean, s$, h As Object
With ListView1
.ListItems.Clear
Dernière édition par polien le Mer 17 Sep 2014 - 15:09, édité 1 fois (Raison : utilise les balises [code] pour montrer ton code stp (Polien))