Private pl As Range 'déclare la variable pl (PLage)
Private Sub UserForm_Initialize()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
With Sheets("RESULTATS") 'prend en compte l'onglet "RESULTATS"
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = .Range("A2:A" & dl) 'définit la plage pl (colonne A)
End With 'fin de la prise en compte de l'onglet "RESULTATS"
End Sub
Private Sub CommandButton1_Click() 'bouton "VALIDER"
Dim j As Byte 'déclare la variable j (Jour)
Dim m As Byte 'déclare la variable m (Mois)
Dim a As Integer 'déclare la variable a (Année)
Dim c As String 'déclare la variable c (Critère)
Dim test As Boolean 'déclare la variable test
Sheets("Recup").Range("A1").CurrentRegion.Clear 'efface les anciennes données de l'onglet "Recup"
If Me.TextBox1.Value <> "" Then 'condition 1 : si la TextBox1 n'est pas vide
j = Day(Me.TextBox1.Value) 'définit le jour j
m = Month(Me.TextBox1.Value) 'définit le mois m
a = Year(Me.TextBox1.Value) 'définit l'année a
c = Format(m, "00") & "/" & Format(j, "00") & "/" & a 'définit le critère c (inverse le mois et le jour de la date de la TextBox1)
With Sheets("RESULTATS") 'prend en compte l'onglet "RESULTATS"
.Range("A1").AutoFilter 'active le filtre automatique
.Range("A1").AutoFilter Field:=3, Criteria1:="<>" & c 'filtre la colonne C avec "différent de c" comme critère
If Me.TextBox2.Value <> "" Then 'condition 2 : si la TextBox2 n'est pas vide
'filtre la colonne J avec "ne commençant pas par" la valeur de la TextBox2 comme critère
.Range("A1").AutoFilter Field:=10, Criteria1:="<>" & Me.TextBox2.Value & "*"
test = True 'définit la variable test
End If 'fin de la condition 2
'copy les lignes visibles dans A1 de l'onglet "Recup"
pl.SpecialCells(xlCellTypeVisible).EntireRow.Copy Sheets("Recup").Range("A1")
.Range("A1").AutoFilter 'désactive le filtre automatique
End With 'fin de la prise en compte de l'onglet "RESULTATS"
End If 'fin de la condition 1
If test = True Then Unload Me: Exit Sub 'si la variable test est vraie, sort de la procédure
If Me.TextBox2.Value <> "" Then 'condition 3 : si la textbox2 n'est pas vide
With Sheets("RESULTATS") 'prend en compte l'onglet "RESULTATS"
.Range("A1").AutoFilter 'active le filtre automatique
'filtre la colonne J avec "ne commençant pas par" la valeur de la TextBox2 comme critère
.Range("A1").AutoFilter Field:=10, Criteria1:="<>" & Me.TextBox2.Value & "*"
'copy les lignes visibles dans A1 de l'onglet "Recup"
pl.SpecialCells(xlCellTypeVisible).EntireRow.Copy Sheets("Recup").Range("A1")
.Range("A1").AutoFilter 'désactive le filtre automatique
End With 'fin de la prise en compte de l'onglet "RESULTATS"
End If 'fin de la condition 3
Unload Me 'vide et ferme l'UserForm
End Sub