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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
|
Function bisextile(madate As Date) As Boolean
bisextile = Day(DateSerial(Year(madate), 3, 0)) = 29
End Function
Function colonnedebut(mois As Integer)
If bisextile(Year(Date)) Then
If mois = 1 Then
colonnedebut = 5
End If
If mois = 2 Then
colonnedebut = 36
End If
If mois = 3 Then
colonnedebut = 65
End If
If mois = 4 Then
colonnedebut = 96
End If
If mois = 5 Then
colonnedebut = 126
End If
If mois = 6 Then
colonnedebut = 157
End If
If mois = 7 Then
colonnedebut = 187
End If
If mois = 8 Then
colonnedebut = 218
End If
If mois = 9 Then
colonnedebut = 249
End If
If mois = 10 Then
colonnedebut = 279
End If
If mois = 11 Then
colonnedebut = 310
End If
If mois = 12 Then
colonnedebut = 340
End If
Else
If mois = 1 Then
colonnedebut = 5
End If
If mois = 2 Then
colonnedebut = 36
End If
If mois = 3 Then
colonnedebut = 64
End If
If mois = 4 Then
colonnedebut = 95
End If
If mois = 5 Then
colonnedebut = 125
End If
If mois = 6 Then
colonnedebut = 156
End If
If mois = 7 Then
colonnedebut = 186
End If
If mois = 8 Then
colonnedebut = 217
End If
If mois = 9 Then
colonnedebut = 248
End If
If mois = 10 Then
colonnedebut = 278
End If
If mois = 11 Then
colonnedebut = 309
End If
If mois = 12 Then
colonnedebut = 339
End If
End If
End Function
Function nbjoursouvres(datedebut, datefin)
Dim i As Long
For i = datedebut To datefin
If Weekday(CDate(i)) <> 1 And Weekday(CDate(i)) <> 7 Then _
nbjoursouvres = nbjoursouvres + 1
Next
End Function
Sub valider()
Dim nom As String
Dim prenom As String
Dim typeconge As String
Dim tampon As Integer
Dim datedebut As Date
Dim datefin As Date
Dim nbjourouvre As Integer
'Worksheets("saisie").Activate
'Worksheets("2018").Activate
'on récupère les différentes valeurs pour nom, prénom, date début, date fin
nom = Worksheets("saisie").Range("C3").Value
prenom = Worksheets("saisie").Range("E3").Value
datedebut = Worksheets("saisie").Range("C7").Value
datefin = Worksheets("saisie").Range("E7").Value
'on recupere la valeur de retour du menu deroulant
tampon = Worksheets("saisie").Range("I11").Value
If tampon = 1 Then
typeconge = "CP"
End If
If tampon = 2 Then
typeconge = "RTT"
End If
If tampon = 3 Then
typeconge = "Recup"
End If
'on initialise ligne et colonne pour que ça regarde la premiere ligne du tableau avec un nom
Dim ligne As Integer
ligne = 2
Dim colonne As Integer
colonne = 1
Dim dernierecase As String
Dim trouve As Boolean
trouve = False
Dim moisselect As Integer
Dim debutcolor As Date
Dim fincolor As Date
'on initialise dernierecase avec la premiere case nom du tableau
dernierecase = Worksheets("2018").Cells(ligne, colonne).Value
Do Until trouve = False
While (dernierecase <> "") 'tant que la case sélectionnée n'est pas vide on rentre dans la boucle
If dernierecase = nom Then 'si la case nom du tableau correspond au nom entrée alors on entre dans la boucle
If typeconge = "CP" Then 'si la personne a sélectionné CP il faut ecrire dans la premiere ligne du tableau correspondant à son nom
'on ne change pas la valeur de ligne
colonne = colonnedebut(Month(datedebut)) 'sélectionne la colonne a laquelle on va commencer à colorier
For colonne = colonne + Day(datedebut) To colonne + Day(datedebut) + nbjourouvre
Worksheets("2018").Cells(ligne, colonne).Interior.ColorIndex = 4 'on colorie la cellule en vert
Next colonne
End If
If typeconge = "RTT" Then 'si la personne a sélectionné RTT il faut ecrire dans la premiere ligne du tableau correspondant à son nom
ligne = ligne + 1 'on ajoute 1 pour etre dans la bonne ligne
colonne = colonnedebut(Month(datedebut)) 'sélectionne la colonne a laquelle on va commencer à colorier
For colonne = colonne + Day(datedebut) To colonne + Day(datedebut) + nbjourouvre
Worksheets("2018").Cells(ligne, colonne).Interior.ColorIndex = 4 'on colorie la cellule en vert
Next colonne
End If
If typeconge = "Recup" Then 'si la personne a sélectionné RTT il faut ecrire dans la premiere ligne du tableau correspondant à son nom
ligne = ligne + 2 'on ajoute deux pour etre dans la bonne ligne
colonne = colonnedebut(Month(datedebut)) 'sélectionne la colonne a laquelle on va commencer à colorier
For colonne = colonne + Day(datedebut) To colonne + Day(datedebut) + nbjourouvre
Worksheets("2018").Cells(ligne, colonne).Interior.ColorIndex = 4 'on colorie la cellule en vert
Next colonne
End If
trouve = True 'on dit a la variable trouve qu'il a trouvé le nom
Else
ligne = ligne + 3 'on ajoute 3 car le nom est une cellule fusionnée contenant 3 lignes
dernierecase = Worksheets("2018").Cells(ligne, colonne).Value 'on attribue a dernierecase le nom de la ligne suivante
End If
Wend
Loop
If trouve = False Then 'si on a pas trouvé le nom dans le tableau alors on créer une nouvelle ligne
Worksheets("2018").Cells(ligne, colonne).Value = nom
Worksheets("2018").Cells(ligne, colonne + 1).Value = prenom
If typeconge = "CP" Then 'si la personne a sélectionné CP il faut ecrire dans la premiere ligne du tableau correspondant à son nom
'on ne change pas la valeur de ligne
colonne = colonnedebut(Month(datedebut)) 'sélectionne la colonne a laquelle on va commencer à colorier
For colonne = colonne + Day(datedebut) To colonne + Day(datedebut) + nbjourouvre
Worksheets("2018").Cells(ligne, colonne).Interior.ColorIndex = 4 'on colorie la cellule en vert
Next colonne
End If
If typeconge = "RTT" Then 'si la personne a sélectionné RTT il faut ecrire dans la premiere ligne du tableau correspondant à son nom
ligne = ligne + 1 'on ajoute 1 pour etre dans la bonne ligne
colonne = colonnedebut(Month(datedebut)) 'sélectionne la colonne a laquelle on va commencer à colorier
For colonne = colonne + Day(datedebut) To colonne + Day(datedebut) + nbjourouvre
Worksheets("2018").Cells(ligne, colonne).Interior.ColorIndex = 4 'on colorie la cellule en vert
Next colonne
End If
If typeconge = "Recup" Then 'si la personne a sélectionné RTT il faut ecrire dans la premiere ligne du tableau correspondant à son nom
ligne = ligne + 2 'on ajoute deux pour etre dans la bonne ligne
colonne = colonnedebut(Month(datedebut)) 'sélectionne la colonne a laquelle on va commencer à colorier
For colonne = colonne + Day(datedebut) To colonne + Day(datedebut) + nbjourouvre
Worksheets("2018").Cells(ligne, colonne).Interior.ColorIndex = 4 'on colorie la cellule en vert
Next colonne
End If
End If
End Sub |
Partager