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
| 'Déclaration des variables
Public liste_onglet As String
Public ongletgeneration
Public nb_onglet, msg1, msg2, msg3, msg4, msg5, msg6, Style1, titre1
Public debut_lig As Integer
Public fin_lig As Integer
Public debut_col As Integer
Public fin_col As Integer
Public colmois As Integer
Public annee As Integer, jour As Integer, mois As String, DateTexte As String
Public date_t As Date, DateFormat As String
Public F_traitement As String, F_chemin As String, TestOnglet As String
Public Sub Generation_tableaux()
'
' Copyright C. GOMEZ - Macro enregistrée le 12/2013
'
'On Error GoTo erreur_general
'==== Variable générales
nb_onglet = Worksheets.Count
msg1 = "le traitement a déjà été réalisé. Voulez vous recommencer ?"
msg1 = msg1 & " oui = suppression des onglets générés : JOURNEE_01, JOURNEE_02,...,"
msg1 = msg1 & " pour recommencer . Non = arrêt traitement"
msg2 = "génération des onglets terminée"
msg3 = "PB lors de l'éxecution - Erreur : "
msg4 = "onglets effacés ! vous pouvez régénérer"
msg5 = "Arrêt traitement"
msg6 = "génération des onglets terminée"
msg7 = "Cette version ne fonctionne que pour l'année XXXX"
Style1 = 4 + 48
titre1 = "Attention"
ongletgeneration = 6
liste_onglet = "Generation" & " " & "1 ER SEMESTRE" & " " & _
"JOURNEE BASE"
' ======= Lancement des actions
Sheets("Generation").Activate
debut_lig = Cells(7, 3)
fin_lig = Cells(8, 3)
debut_col = Cells(10, 3)
fin_col = Cells(11, 3)
annee = Cells(13, 3)
Cells(17, 2).Value = "Traitement en cours ! ! veuillez patienter"
Cells(18, 2).Value = "r r r r r r r"
Application.ScreenUpdating = False
F1 = Generation_Liste()
'F4 = Traitement_final()
sortie_general:
Application.ScreenUpdating = True
Sheets("Generation").Activate
Cells(17, 2).Value = ""
Cells(18, 2).Value = ""
Exit Sub
erreur_general:
Application.ScreenUpdating = True
Sheets("Generation").Activate
Cells(17, 2).Value = ""
Cells(18, 2).Value = ""
msg3 = msg3 & Err.Number
Response = MsgBox(msg3, 0, titre1)
End Sub
Public Function Generation_Liste()
'==== Création des journées
'On Error GoTo erreur_liste
Sheets("1 ER SEMESTRE").Activate
Cells(3, debut_col).Select
colx = debut_col
TestOnglet = 0
While colx <= fin_col
Sheets("1 ER SEMESTRE").Activate
Cells(3, colx).Select
test = ActiveCell.Value
Sheets("Generation").Activate
Application.ScreenUpdating = True
If Cells(18, 2).Value = "r r r r r r r" Then
Cells(18, 2).Value = "q q q q q q q"
Else
Cells(18, 2).Value = "r r r r r r r"
End If
Application.ScreenUpdating = False
Sheets("1 ER SEMESTRE").Activate
'==== réalisation de la génération
If test = "X" Or test = "x" Then
jour = Cells(4, colx)
colmois = colx - jour + 1
mois = Cells(1, colmois)
DateTexte = jour & " " & mois & " " & annee
date_t = CDate(DateTexte)
DateFormat = Format(date_t, "dddd d mmmm yyyy")
TestOnglet = TestOnglet + 1
NomOnglet = "JOURNEE " & TestOnglet
'==== test réalisation traitement précédent
For i = 1 To nb_onglet
Sheets(i).Activate
If ActiveSheet.Name = "JOURNEE 1" Then
Response = MsgBox(msg1, Style1, titre1)
If Response = 6 Then
Sheets(1).Activate
For Each w In Worksheets
Application.DisplayAlerts = False
MyPos = InStr(1, liste_onglet, w.Name, 0)
If MyPos = 0 Then
w.Delete
End If
Application.DisplayAlerts = True
Next w
GoTo sortie_efface
End If
If Response = 7 Then
GoTo sortie_arret
End If
End If
Next i
'==== Génération des onglets et des informations
Sheets("JOURNEE BASE").Select
onglet_temp = Worksheets.Count
Sheets("JOURNEE BASE").Copy After:=Sheets(onglet_temp)
Sheets("JOURNEE BASE (2)").Select
Sheets("JOURNEE BASE (2)").Name = NomOnglet
journee_en_cours = ActiveSheet.Name
Cells(2, 5) = DateFormat
'==== Génération contenu des journées
gene_T = Generation_donnees(journee_en_cours, colx)
End If
colx = colx + 1
Wend
Response = MsgBox(msg2, 0, titre1)
sortie_generation:
Generation_Liste = 1
Exit Function
sortie_arret:
Response = MsgBox(msg5, 0, titre1)
Generation_Liste = 0
Exit Function
sortie_efface:
Response = MsgBox(msg4, 0, titre1)
Generation_Liste = 2
Exit Function
erreur_liste:
Application.ScreenUpdating = True
Sheets("generation").Activate
Cells(17, 2).Value = ""
Cells(18, 2).Value = ""
msg3 = msg3 & Err.Number
Response = MsgBox(msg3, 0, titre1)
End Function
Public Function Generation_donnees(feuillejournee, flagcol)
'
' Copyright C. GOMEZ - Macro enregistrée le 12/2013
'
'On Error GoTo erreur_donnees
Sheets("1 ER SEMESTRE").Activate
ligx_c = 5
colx = flagcol
ligx_l = debut_lig
While ligx_l <= fin_lig
Sheets("1 ER SEMESTRE").Activate
' Récupération des données
matricule = Cells(ligx_l, 2)
code = Cells(ligx_l, 3)
nom = Cells(ligx_l, 4)
valeur = Cells(ligx_l, flagcol)
Sheets(feuillejournee).Activate
' collage des données valides
If Left(valeur, 1) = "v" Or Left(valeur, 1) = "V" Then
Cells(ligx_c, 2).Value = matricule
Cells(ligx_c, 3).Value = code
Cells(ligx_c, 4).Value = nom
Cells(ligx_c, 5).Value = valeur
ligx_c = ligx_c + 1
End If
ligx_l = ligx_l + 1
Wend
Sheets("generation").Activate
Cells(1, 1).Activate
sortie_donnees:
Exit Function
erreur_donnees:
Application.ScreenUpdating = True
Sheets("generation").Activate
Cells(17, 2).Value = ""
Cells(18, 2).Value = ""
msg3 = msg3 & Err.Number
Response = MsgBox(msg3, 0, titre1)
End Function |
Partager