Bonjour à tous j'utilise une macro qui mer permet de faire une recherche sur une periode de date j'ulilise pour cela une listbox et cette macro
le probleme c'est que j'utilise aussi une fonction par mot clef et la j'utilise une listview
et cette macro
ma question est la suivante comment faire pour avoir les deux fonction sur soit dans listbox soit soit une listview.
merci d'avance de votre aide
Code:
Option Explicit
Option Base 1
Dim TabGeneral As Variant
Dim TabRecup() As Variant
Dim rng As Range
Dim DerLigne As Long
Dim Lgn As Long
Dim DerCol As Integer
Dim X As Long
Dim DateDebut As Long
Dim DateFin As Long
Sub Search()
Dim Recherche As Object
X = 0
With USF1
If .R1 = "" Or .R2 = "" Then Exit Sub
If Not IsDate(.R1) Or Not IsDate(.R2) Then Exit Sub
.ListBox1.clear
DateDebut = Format(.R1, "00000"): DateFin = Format(.R2, "00000")
End With
Application.ScreenUpdating = False
With Worksheets("BDD")
DerLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
DerCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set rng = .Range(.Cells(2, 1), .Cells(DerLigne, DerCol))
End With
With rng
.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess
TabGeneral = .Value
End With
For Lgn = 1 To UBound(TabGeneral, 1)
If Format(TabGeneral(Lgn, 3), "00000") >= DateDebut And Format(TabGeneral(Lgn, 3), "00000") <= DateFin And TabGeneral(Lgn, 6) = USF1.Deb_Vac.Caption Then
X = X + 1
ReDim Preserve TabRecup(7, X)
TabRecup(1, X) = TabGeneral(Lgn, 1)
TabRecup(2, X) = TabGeneral(Lgn, 2)
TabRecup(3, X) = TabGeneral(Lgn, 3)
TabRecup(4, X) = TabGeneral(Lgn, 4)
TabRecup(5, X) = TabGeneral(Lgn, 5)
TabRecup(6, X) = TabGeneral(Lgn, 6)
End If
Next Lgn
With USF1.ListBox1
If X > 1 Then
.List = Application.Transpose(TabRecup)
ElseIf X = 1 Then
.Column = Application.Transpose(TabRecup)
End If
End With
End Sub
le probleme c'est que j'utilise aussi une fonction par mot clef et la j'utilise une listview
et cette macro
Code:
Dim i&, fin&
If R3 = "" Then ListView1.ListItems.clear: Exit Sub
fin = Feuil3.Range("A65536").End(xlUp).Row
mm = Feuil3.Range("A2:AH" & fin)
For i = 1 To UBound(mm)
For a = 1 To UBound(mm, 2)
If mm(i, a) Like "*" & R3 & "*" Then mm(i, 34) = "oui"
Next a
Next i
y = 1
For i = 1 To UBound(mm)
If mm(i, 34) = "oui" Then y = y + 1
Next
If y < 2 Then ListView1.ListItems.clear: GoTo 1
ReDim bb(y - 1, 33)
y = 1
For i = 1 To UBound(mm)
If mm(i, 34) = "oui" Then
For a = 1 To 33
bb(y, a) = mm(i, a)
Next a
y = y + 1
End If
Next i
With ListView1
.ListItems.clear
.View = lvwReport
.FullRowSelect = True
.Gridlines = True
For i = 1 To UBound(bb)
.ListItems.Add , , bb(i, 1)
For a = 2 To UBound(bb, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , bb(i, a)
Next a
Next i
1 End With
End Sub
merci d'avance de votre aide