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
|
'Déclaration des variables
Dim Liste, Gardes, Sequence, Durée, NbCol, L, a()
Sub userform_initialize()
Gpt.Value = (Sheets("Rens_sdis").Range("a2")) 'Groupement
Zone.Value = (Sheets("Rens_sdis").Range("b2")) 'Zone
Centre.Value = (Sheets("Rens_sdis").Range("c2")) 'Centre
NbCol = 4 'Nombre de colonnes de la liste sur la feuille Thèmes
L = 200 'Nombre de lignes dans la liste
ReDim a(1 To L, 1 To NbCol)
Me.choix.MultiSelect = fmMultiSelectMulti
Me.choix.ColumnCount = NbCol
Me.choix.ColumnWidths = "130;30;30;40"
'Remplissage des colonnes 1 à 3 de la listbox nommée choix,
Set Liste = Sheets("Agents")
Set Thèmes = Sheets("Thèmes")
Set Durée = Sheets("Rens_sdis")
Set Gardes = Sheets("Rens_sdis")
'Remplir la ligne jusqu'à la dernière ligne trouvée
Me.choix.List = Range(Liste.[a4], Liste.[d65000].End(xlUp)).Value ' liste des noms
Me.Sequence_pédagogique.List = Range(Thèmes.[c3], Thèmes.[c65000].End(xlUp)).Value 'liste des séquences
Me.Temps.List = Range(Durée.[i5], Durée.[i65000].End(xlUp)).Value ' liste des durées
Me.Equipe_garde.List = Range(Gardes.[d5], Gardes.[g65000].End(xlUp)).Value
'Option de sélection multiple
End Sub
Private Sub cmdValider_Click()
' On teste la saisie du thémes de manoeuvres
If Me.Equipe_garde.Text = "" Then
MsgBox "Vous devez entrer une équipe de garde"
Me.Equipe_garde.SetFocus
Exit Sub
End If
' On teste la saisie de la dat
If Me.DateSaisie.Text = "" Then
MsgBox "Vous devez entrer une date."
Me.DateSaisie.SetFocus
Exit Sub
End If
If Not IsDate(DateSaisie.Text) Then
MsgBox "format incorrect"
DateSaisie.Text = ""
Exit Sub
End If
'On teste la saisie de l'agent
If Me.Equipe_garde.Value = "" Then
MsgBox "Vous devez entrer un Nom."
Me.Equipe_garde.SetFocus
Exit Sub
End If
' On teste la saisie du thémes de manoeuvres
If Me.Sequence_pédagogique.Text = "" Then
MsgBox "Vous devez entrer une Sequence pédagogique."
'Me.Sequence_pédagogique.SetFocus
Exit Sub
End If
' On teste la saisie de l'agent
If Me.Temps.Value = "" Then
MsgBox "Vous devez entrer un temps de formation ."
Me.Temps.SetFocus
Exit Sub
End If
Dim bOk As Boolean 'On teste la saisie de l'agent
bOk = False
For w = 0 To Me.choix.ListCount - 1
If Me.choix.Selected(w) = True Then
bOk = True
Exit For
End If
Next w
If bOk Then
'c'est bon
Else
MsgBox "Vous devez entrer au moins un Nom"
Me.choix.SetFocus
Exit Sub
End If
'Endroit de la feuille où remplir la base
Dim k As Byte ' boucle sur la listbox et transfert les données contenues dans les différents controls
For k = 0 To Me.choix.ListCount - 1
If Me.choix.Selected(k) = True Then
ligne = ligne + 1
For c = 0 To NbCol - 1 'boucle sur les colonnes
a(ligne, c + 1) = Me.choix.List(k, c)
Next c
Range("a65536").End(xlUp).Offset(1, 0).Value = DateSaisie ' remplissage de la colonne date
Range("b65536").End(xlUp).Offset(1, 0).Value = Format(DateSaisie, "mmmm") ' remplissage de la colonne mois
Range("c65536").End(xlUp).Offset(1, 0).Value = Format(DateSaisie, "yyyy") ' remplissage de la colonne Année
Range("d65536").End(xlUp).Offset(1, 0).Value = Gpt ' remplissage de la colonne groupement
Range("e65536").End(xlUp).Offset(1, 0).Value = Zone ' remplissage de la colonne zone
Range("f65536").End(xlUp).Offset(1, 0).Value = Centre ' remplissage de la colonne centre
Range("g65536").End(xlUp).Offset(1, 0).Value = Format(Equipe_garde, "0") ' remplissage de la colonne Equipe_garde
Range("l65536").End(xlUp).Offset(1, 0).Value = Module ' remplissage de la colonne module
Range("m65536").End(xlUp).Offset(1, 0).Value = Thème ' remplissage de la colonne uv
Range("n65536").End(xlUp).Offset(1, 0).Value = Sequence_pédagogique ' remplissage de la colonne Sequence
Range("o65536").End(xlUp).Offset(1, 0).Value = Format(Temps, "# ##0,00") ' remplissage de la colonne temps
Range("p65536").End(xlUp).Offset(1, 0).Value = Format(Formation, "0") ' remplissage de la colonne for
Range("q65536").End(xlUp).Offset(1, 0).Value = Format(Abs_for, "0") ' remplissage de la colonne Abs for
End If
Next k 'boucle sur les lignes
Range("h65536").End(xlUp).Offset(1, 0).Resize(UBound(a), NbCol) = a 'remplissage de la colonne grade, nom ,statut
'Call nombre
Dim intRet As Integer
Dim y As Control
intRet = MsgBox("Veux tu enregistrer une nouvelle date, ou appuie sur non pour fermer le programme", vbInformation + vbYesNo, " Enregistrement effectué avec succès")
If intRet = vbYes Then
DateSaisie.Value = ""
Module.Value = ""
Thème.Value = ""
Formation.Value = ""
Abs_for.Value = ""
userform_initialize
For Each y In Me.Controls
Select Case TypeName(y)
Case "ComboBox"
y.ListIndex = -1
End Select
Next y
Else
If intRet = vbNo Then
'procédure si click sur Non les combos sont vidé
ActiveWorkbook.Save
Unload Me
UserForm2.Show
End If
End If
End Sub
Private Sub Sequence_pédagogique_Click()
ligne = Sheets("Thèmes").[c:c].Find(Sequence_pédagogique, LookIn:=xlValues).Row
Me.Module = Sheets("Thèmes").Cells(ligne, 1)
Me.Thème = Sheets("Thèmes").Cells(ligne, 2)
Dim Tbl
Dim Tbl2
Dim x As Integer
Dim y As Integer
Dim Retour_for As Integer
Dim Retour_Abs As Integer
Tbl = Array("SAP", "OPD", "INC", "SR", "Fdf", "CAD")
For x = 0 To UBound(Tbl)
If Module.Text = Tbl(x) Then Retour_for = 1: Exit For ' renvoie 1 si la txt module est = à une valeur de la table
Next x
Formation = Retour_for
Tbl2 = Array("Abs for")
For y = 0 To UBound(Tbl2)
If Module.Text = Tbl2(y) Then Retour_Abs = 1: Exit For ' renvoie 1 si la txt module est = à une valeur de la table2
Next y
Abs_for = Retour_Abs
End Sub
Private Sub DateSaisie_Change()
Dim valeur As Byte
DateSaisie.MaxLength = 10
valeur = Len(DateSaisie)
If valeur = 2 Or valeur = 5 Then DateSaisie = DateSaisie & "/"
End Sub
Private Sub Nom_Click()
Dim a()
a = Me.choix.List
NbCol = UBound(a, 2) - LBound(a, 2) + 1
Call tri(a(), LBound(a), UBound(a), NbCol, 0)
Me.choix.List = a
Me.tri_Equipe.ForeColor = vbBlack
Me.Nom.ForeColor = vbRed
'Me.LCP.ForeColor = vbBlack
End Sub
Private Sub tri_Equipe_Click()
Dim a()
a = Me.choix.List
NbCol = UBound(a, 2) - LBound(a, 2) + 1
Call tri(a(), LBound(a), UBound(a), NbCol, 3)
Me.choix.List = a
Me.Nom.ForeColor = vbBlack
Me.tri_Equipe.ForeColor = vbRed
'Me.LCP.ForeColor = vbBlack
End Sub
Sub tri(a(), gauc, droi, NbCol, colTri) ' Quick sort
ref = a((gauc + droi) \ 2, colTri)
g = gauc: d = droi
Do
Do While a(g, colTri) < ref: g = g + 1: Loop
Do While ref < a(d, colTri): d = d - 1: Loop
If g <= d Then
For c = 0 To NbCol - 1
temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
Next
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi, NbCol, colTri)
If gauc < d Then Call tri(a, gauc, d, NbCol, colTri)
End Sub
Private Sub CommandButton1_Click()
Calendrier.Show
End Sub |
Partager