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 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
| Public NiveauTension(10)
Public CausePerturbation(-1 To 100)
Public NaturePerturbation(100)
Public EffetPerturbation(20)
Public LieuPerturbation(999)
Public NumColonne(15, 1)
Public AdresseFichier2
'Cette macro affiche la boîte de dialogue pour sélectionner le fichier source
Sub AdressFich()
Dim objDialog
'Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
Application.GetOpenFilename
objDialog.OpenFileOpenDlg
ChoixFichier.AdressFichierAvis = objDialog.Filename
AdresseFichier2 = ChoixFichier.AdressFichierAvis
End Sub
'
'Fonction utile au calcul de la semaine au forma ISO
'
Function YearStart(WhichYear As Integer) As Date
Dim WeekDay As Integer
Dim NewYear As Date
NewYear = DateSerial(WhichYear, 1, 1)
WeekDay = (NewYear - 2) Mod 7
If WeekDay < 4 Then
YearStart = NewYear - WeekDay
Else
YearStart = NewYear - WeekDay + 7
End If
End Function
'
'Fonction pour calculer le numéro de la semaine
'
Public Function ISOWeekNum(AnyDate As Date, _
Optional WhichFormat As Variant) As Integer
'
' WhichFormat: missing or <> 2 then returns week number,
' = 2 then YYWW
'
Dim ThisYear As Integer
Dim PreviousYearStart As Date
Dim ThisYearStart As Date
Dim NextYearStart As Date
Dim YearNum As Integer
ThisYear = Year(AnyDate)
ThisYearStart = YearStart(ThisYear)
PreviousYearStart = YearStart(ThisYear - 1)
NextYearStart = YearStart(ThisYear + 1)
Select Case AnyDate
Case Is >= NextYearStart
ISOWeekNum = (AnyDate - NextYearStart) \ 7 + 1
YearNum = Year(AnyDate) + 1
Case Is < ThisYearStart
ISOWeekNum = (AnyDate - PreviousYearStart) \ 7 + 1
YearNum = Year(AnyDate) - 1
Case Else
ISOWeekNum = (AnyDate - ThisYearStart) \ 7 + 1
YearNum = Year(AnyDate)
End Select
If IsMissing(WhichFormat) Then
Exit Function
End If
If WhichFormat = 2 Then
ISOWeekNum = CInt(Format(Right(YearNum, 2), "00") & _
Format(ISOWeekNum, "00"))
End If
End Function
Sub MiseEnForme()
'
' MiseEnForme Macro
' Macro enregistrée le 13.06.2006 par Romande-Energie
'
'
NomFichier1 = ActiveWorkbook.Name
Workbooks.Open AdresseFichier2
For I = Len(AdresseFichier2) To 1 Step -1
If Mid$(AdresseFichier2, I, 1) = "\" Then Exit For
Next
NomFichier2 = Mid$(AdresseFichier2, I + 1)
NiveauTension(1) = "BT"
NiveauTension(2) = "5"
NiveauTension(3) = "10"
NiveauTension(4) = "13"
NiveauTension(5) = "17"
NiveauTension(6) = "20"
NiveauTension(7) = "40"
NiveauTension(8) = "60"
NiveauTension(9) = "125"
NiveauTension(10) = "220"
CausePerturbation(0) = "Cause Inconnue"
CausePerturbation(11) = "Orage, foudre"
CausePerturbation(12) = "Vent, chute d'arbres, branche"
CausePerturbation(13) = "Neige"
CausePerturbation(19) = "Influence atmosph. : Autre"
CausePerturbation(21) = "Tierce personne"
CausePerturbation(22) = "Animaux"
CausePerturbation(23) = "Abattage arbres, branches"
CausePerturbation(24) = "Machines de chantier"
CausePerturbation(25) = "Glissement de terrain, avalanche"
CausePerturbation(27) = "Incendie, inondation"
CausePerturbation(28) = "Accident de la circulation"
CausePerturbation(29) = "Influence étrangère : Autre"
CausePerturbation(81) = "Répercussion du propre réseau de même tension"
CausePerturbation(82) = "Répercussion du propre réseau d'une autre tension"
CausePerturbation(84) = "Répercussion du réseau d'un tiers d'une même tension"
CausePerturbation(85) = "Répercussion du réseau d'un tiers d'une autre tension"
CausePerturbation(86) = "Répercussion d'une installation d'un client privé"
CausePerturbation(41) = "Fausse manoeuvre : Ouverture d'un sectionneur sous charge"
CausePerturbation(42) = "Fausse manoeuvre : Mise à terre d'un équipement sous tension"
CausePerturbation(43) = "Fausse manoeuvre : Mise sous tension d'un équipement mis à terre"
CausePerturbation(44) = "Fausse manoeuvre : Erreur de commande"
CausePerturbation(49) = "Fausse manoeuvre : Autre"
CausePerturbation(73) = "Défaillance matériel"
CausePerturbation(74) = "Mauvais montage"
CausePerturbation(76) = "Sollicitation excessive"
CausePerturbation(78) = "Vieillissement, corrosion"
CausePerturbation(79) = "Défaillance matériel : Autre"
CausePerturbation(50) = "Surcharge électrique"
CausePerturbation(-1) = "Travaux programmés"
NaturePerturbation(20) = "Défaut permanent à la terre"
NaturePerturbation(58) = "Court-circuit avec mise à la terre"
NaturePerturbation(59) = "Court-circuit sans mise à la terre"
NaturePerturbation(80) = "Mise hors-tension du réseau d'alimentation amont"
NaturePerturbation(0) = "Autres"
NaturePerturbation(71) = "Par suite de dommage au matériel lui-même"
NaturePerturbation(72) = "Ayant pour origine le non-fonctionnement d'un autre appareil"
NaturePerturbation(73) = "Ayant pour origine une surcharge"
NaturePerturbation(79) = "Fausse manoeuvre, autres"
EffetPerturbation(11) = "Sans déclenchement d'un matériel d'équipement (terre permanente)"
EffetPerturbation(14) = "Avec déclenchement définitif (Ex : Fusible MT, disjoncteur"
EffetPerturbation(16) = "Avec RA non réussi et fermeture manuelle réussie"
EffetPerturbation(17) = "Avec Ra non réussi et fermeture manuelle non réussie"
EffetPerturbation(18) = "Avec RA non réussi sans essai de fermeture"
EffetPerturbation(19) = "Défaillance du réseau d'alimentation amont"
LieuPerturbation(901) = "Dans un poste RE"
LieuPerturbation(999) = "Dans un poste tiers"
LieuPerturbation(998) = "Dans un réseau non RE"
LieuPerturbation(11) = "Poteaux bois"
LieuPerturbation(12) = "Potelet BT sur toit"
LieuPerturbation(13) = "Pylônes sans conducteur de garde"
LieuPerturbation(14) = "Pylônes avec conducteur de garde"
LieuPerturbation(15) = "Mâts tubulaires sans conducteur de garde"
LieuPerturbation(16) = "Mâts tubulaires avec conducteur de garde"
LieuPerturbation(17) = "Mâts béton sans conducteur de garde"
LieuPerturbation(18) = "Mâts béton avec conducteur de garde"
LieuPerturbation(21) = "Parafoudres ou sectionneur de ligne"
LieuPerturbation(31) = "Câble reliant stations"
LieuPerturbation(32) = "Câble reliant lignes aériennes"
LieuPerturbation(33) = "Câble reliant lignes aériennes à une station"
LieuPerturbation(34) = "Câble dans une station, dans un poste"
LieuPerturbation(38) = "Câble reliant armoire BT"
LieuPerturbation(39) = "Autre câble ou câble d'un client BT"
LieuPerturbation(111) = "Dans une station aérienne"
LieuPerturbation(113) = "Station blindée métallique (Panel, S&S, Creuset)"
LieuPerturbation(115) = "Station blindée polyester (Peyer, Panel, CVE)"
LieuPerturbation(110) = "Station béton (CVE, Béton, Rutsch, Gram)"
LieuPerturbation(116) = "Station massive (Haute, G1-G3, Incorporée M1-M4)"
LieuPerturbation(118) = "Station en sous-sol, en caverne"
LieuPerturbation(199) = "Station privée (ex. SEB)"
LieuPerturbation(902) = "Dans une armoire BT"
LieuPerturbation(909) = "Fausse manoeuvre"
LieuPerturbation(0) = "Lieu inconnu"
NumColonne(0, 1) = "Nr"
NumColonne(1, 1) = "Type d'avis"
NumColonne(2, 1) = "Déclenchement le"
NumColonne(3, 1) = "Durée hors service"
NumColonne(4, 1) = "Site"
NumColonne(5, 1) = "Poste"
NumColonne(6, 1) = "Désignation de l'objet"
NumColonne(7, 1) = "Niveau de tension"
NumColonne(8, 1) = "Station MT/BT"
NumColonne(9, 1) = "Cause de la perturbation"
NumColonne(10, 1) = "Nature de la perturbation"
NumColonne(11, 1) = "Effet de la perturbation"
NumColonne(12, 1) = "Lieu de la perturbation"
NumColonne(13, 1) = "Commune"
Windows(NomFichier2).Activate
'
' Recherche le numéro de la colonne où se trouve l'information
'
For C = 0 To 15
For I = 1 To 80
If Cells(2, I) = NumColonne(C, 1) Then
NumColonne(C, 0) = I
I = I + 100
End If
Next I
Next C
'
' Copie les données importées du livre d'équipe et vient les mettre en forme
' dans le fichier de debriefing
'
C = 3
I = 3
While Cells(C, 1) <> Empty
NumAvis = Cells(C, NumColonne(0, 0))
TypeAvis = Cells(C, NumColonne(1, 0))
If TypeAvis = "Avis de perturbation" Then
TypeAvis = "AP"
Else
TypeAvis = "AT"
End If
Annee = Year(Cells(C, NumColonne(2, 0)))
Datede = CDate(Cells(C, NumColonne(2, 0)))
Week = ISOWeekNum(Cells(C, NumColonne(2, 0)))
DureeHorsService = Cells(C, NumColonne(3, 0))
Site = Cells(C, NumColonne(4, 0))
Poste = Cells(C, NumColonne(5, 0))
DepartMT = Cells(C, NumColonne(6, 0))
NivTens = Cells(C, NumColonne(7, 0))
Station = Cells(C, NumColonne(8, 0))
CauseP = Cells(C, NumColonne(9, 0))
NatureP = Cells(C, NumColonne(10, 0))
EffetP = Cells(C, NumColonne(11, 0))
LieuP = Cells(C, NumColonne(12, 0))
Commune = Cells(C, NumColonne(13, 0))
Windows(NomFichier1).Activate
Existe = False
While Cells(I, 1) <> Empty
If Cells(I, 1) = NumAvis Then
Existe = True
End If
I = I + 1
Wend
If Existe = False Then
Cells(I, 1) = NumAvis
Cells(I, 2) = TypeAvis
Cells(I, 3) = Annee
Cells(I, 4) = Week
Cells(I, 5) = Datede
Cells(I, 6) = DureeHorsService / 24
Cells(I, 8) = Site
Cells(I, 9) = Poste
Cells(I, 10) = DepartMT
Cells(I, 12) = NiveauTension(NivTens)
Cells(I, 13) = Commune
Cells(I, 14) = Station
Cells(I, 17) = CausePerturbation(CauseP)
Cells(I, 18) = NaturePerturbation(NatureP)
Cells(I, 19) = EffetPerturbation(EffetP)
Cells(I, 20) = LieuPerturbation(LieuP)
End If
I = 3
C = C + 1
Windows(NomFichier2).Activate
Wend
Windows(NomFichier2).Activate
ActiveWorkbook.Close savechanges:=False
Windows(NomFichier1).Activate
End Sub |
Partager