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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| Option Explicit
Global Const zone_cryospace = "Cryospace"
Global Const zone_assistantTechnique = "AssistantTechnique"
Global Const zone_interimaire = "Intérimaire"
Global Const zone_personnel = "Personnel"
Global Const zone_sortie = "Sortie"
Global Const Nouvelle_zone = "Liste_Gestion"
Public Sub Nouvelle_Liste()
Dim str_gestion As String
Dim dtm_date As Date
Dim str_zone As String
Dim Ligne As Range
Dim Liste_ligne As Range
Dim wkbook As Workbook
Set wkbook = ActiveWorkbook
str_gestion = Worksheets(onglet_formulaire).Range("K11").Value
dtm_date = CDate(Worksheets(onglet_formulaire).Range("K10").Value)
wkbook.Sheets("Liste Employé").Copy After:=Sheets(10)
wkbook.Sheets("Liste Employé (2)").Name = Nouvelle_zone
wkbook.Names.Add Name:=Nouvelle_zone, RefersToR1C1:="='Liste_Gestion'!R1C1:R3C21" 'Chr(39) & Nouvelle_zone & Chr(39) & "!R1C1:R3C21"
Select Case str_gestion
Case "Cryospace"
str_zone = zone_cryospace
Case "Intérimaire"
str_zone = zone_interimaire
Case "Assistant Technique"
str_zone = zone_assistantTechnique
End Select
For Each Ligne In Evaluate(zone_sortie).Rows
DoEvents
If VarType(Ligne.Columns("U").Value) = vbDate Then
If Ligne.Columns("W") = str_gestion Then 'W est la colonne masquée : Gestion ** Test si il correspond à la demande
If CDate(Ligne.Columns("U")) <= dtm_date And CDate(Ligne.Columns("V")) >= dtm_date Then 'S'il est compris entre les dates
'*** Ajout d'une ligne dans liste gestion
Set Liste_ligne = Evaluate(Nouvelle_zone)
Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count)
Liste_ligne.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set Liste_ligne = Evaluate(Nouvelle_zone)
Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count - 1)
'*** Copie de la ligne
Ligne.Copy
Liste_ligne.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
End If
End If
Next Ligne
For Each Ligne In Evaluate(str_zone).Rows
DoEvents
If VarType(Ligne.Columns("U").Value) = vbDate Then
If CDate(Ligne.Columns("U").Value) <= dtm_date And (CDate(Ligne.Columns("V")) >= dtm_date Or (Ligne.Columns("V") = "")) Then 'S'il est compris entre les dates
'*** Ajout d'une ligne dans liste gestion
Set Liste_ligne = Evaluate(Nouvelle_zone)
Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count)
Liste_ligne.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set Liste_ligne = Evaluate(Nouvelle_zone)
Set Liste_ligne = Liste_ligne.Rows(Liste_ligne.Rows.Count - 1)
'*** Copie de la ligne
Ligne.Copy
Liste_ligne.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
End If
Next Ligne
wkbook.Sheets(Nouvelle_zone).Visible = True
Application.CutCopyMode = False
wkbook.Sheets(Nouvelle_zone).Move
ActiveWorkbook.Sheets(Nouvelle_zone).Activate
wkbook.Names(Nouvelle_zone).Delete
ActiveWorkbook.Sheets(Nouvelle_zone).Name = InputBox("Veuillez entrer un nom d'onglet pour cette nouvelle liste", "Information complémentaire")
wkbook.Activate
Set wkbook = Nothing
End Sub |
Partager