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 R As Range, Rng As Range, c As Range
Dim annee As Integer, col As Integer
Dim dateini As Date, datefin As Date
Dim ldateini As Long, ldatefin As Long, dl As Long, nblig As Long
Dim cible As String
choix_raie.Hide 'fermeture de la fiche de coix de la raie
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
Application.ScreenUpdating = False
'1/définition de la valeur à chercher
With ActiveSheet
cible = .Range("J1").Value 'définition de la valeur recherchée comme étant la valeur de la cellule J1
If cible <> "" Then 'condition non vide pour que la recherche soit faite
Set c = Sheets("Résultats").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
End With
'2/définition des variables
Sheets("Eléments").Select
Range("A9:F20").ClearContents 'nettoyage des données de la feuille "Eléments"
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 = dateini 'définition de la variable "ldateini" (date sous format numérique windows)
ldatefin = datefin 'définition de la variable "ldatefin" (date sous format numérique windows)
'2/application du filtre sur la feuille "Résultats"
Sheets("Résultats").Select
With ActiveSheet
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"
On Error GoTo EmptyFilter 'si le filtre ne renvoie pas de valeur alors une erreur survient, on décide donc de sortir de la procédure
.Range("A5:B" & dl).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Eléments").Range("A9")
.Range("Z5:Z" & dl).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Eléments").Range("D9")
.Range(Cells(col, 5).Address & ":" & Cells(col, dl).Address).SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Eléments").Range("C9")
End With
Sheets("Résultats").AutoFilterMode = False
Exit Sub
Application.ScreenUpdating = True
EmptyFilter:
MsgBox "pas de correspondance"
End Sub |
Partager