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
| Private Sub bouton_validation_Click()
Dim Ldateini As Long, Ldatefin As Long, DL As Long
Dim Dateini As Date, Datefin As Date
Dim Annee As Integer, Col As Integer, cr As Integer
Dim Cible As String
Dim c As Range, r As Range
choix_raie.Hide 'fermeture de la fiche de coix de la raie
Application.ScreenUpdating = False
With Sheets("Eléments")
.Range("A9:F20").ClearContents 'nettoyage des données de la feuille "Eléments"
.Range("J1").Value = choix_raie.ComboBox1.Value 'définition de la valeur de la cellule J1 comme résultat du choix de la raie
.Range("C8").Value = choix_raie.ComboBox1.Value 'définition de la valeur de la cellule C8 comme résultat du choix de la raie
.Range("C5").Value = TextBox1.Value 'définition de la valeur de la cellule C5 comme étant le résultat du choix de l'année
Cible = .Range("J1").Value 'définition de la valeur recherchée comme étant la valeur de la cellule J1
Annee = .Range("C5").Value 'définition de la valeur de la variable "annee"
Dateini = DateSerial(Annee, 1, 1) 'définition de la variable "dateini" en fonction de la variable "annee"
Datefin = DateSerial(Annee, 12, 31) 'définition de la variable "datefin" en fonction de la variable "annee"
Ldateini = CLng(Dateini) 'définition de la variable "ldateini" (date sous format numérique windows)
Ldatefin = CLng(Datefin) 'définition de la variable "ldatefin" (date sous format numérique windows)
End With
'1/définition de la valeur à chercher
With Sheets("Résultats")
If Cible <> "" Then 'condition non vide pour que la recherche soit faite
Set c = .Rows(4).Find(Cible, LookIn:=xlValues, LookAt:=xlWhole) 'la recherche se fait dans la ligne 4 de la feuille "Résultats"
If Not c Is Nothing Then 'condition si la variable c n'est pas nulle
Col = c.Column
Set c = Nothing
End If
End If
If Col > 0 Then
'2/application du filtre sur la feuille "Résultats"
.AutoFilterMode = False
DL = .Range("A" & .Rows.Count).End(xlUp).Row 'définition de la variable "dl" (dernière ligne)
.Range("A4:Y" & DL).AutoFilter Field:=2, Criteria1:=">=" & Ldateini, Operator:=xlAnd, Criteria2:="<=" & Ldatefin 'filtre de la zone définie en fonction de la valeur C2 de la feuille "Bulletin"
Set Rng = .Cells(4, 2).CurrentRegion
On Error GoTo EmptyFilter
Set Rng = Rng.Offset(1, 0).Resize(Rng.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
For Each r In Rng
If Not r.Row = 4 Then
Sheets("Eléments").Range("A9") = r.Offset(0, 0)
Sheets("Eléments").Range("B9") = r.Offset(0, 1)
Sheets("Eléments").Range("D9") = r.Offset(0, 25)
Sheets("Eléments").Range("C9") = r.Offset(0, Col - 1)
cr = cr + 1
End If
Next r
.AutoFilterMode = False
End If
End With
EmptyFilter:
MsgBox "pas de correspondance"
End Sub |
Partager