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
|
cbox = Array("PERIODICITE", "REPRISE_J", "REPRISE_S", "CRITICITE", "Urgence", "Topage")
'alerte = wdoc.Tables(4).Cell(3, 2).Range.text
tabcell = Array("alerte")
' Conversion des variables en long pour éviter les dépassements de capacité
' Plus d'info :
' http://www.lesite.net/contents/1189-vbscript-types-de-donnees
Debut=Clng(Debut)
Fin=Clng(Fin)
Tps=Clng(Tps)
Duree=Clng(Duree)
' Affichage du type de données, 3 = long
'Wscript.echo VarType(Debut) & " " & VarType(Fin) & " " & VarType(Tps) & " " & VarType(Duree)
' Oui = 6 / Non = 7
popup_btn = Sh.Popup ("Début du script " & WScript.ScriptName, , "", 4)
'(strText,[nSecondsToWait],[strTitle],[nType])
if popup_btn = 7 Then Call fin_script
' Récupération de l'heure courante et transformation en seconde
debut = (Left(Time,2) * 3600) + (Mid(Time,4,2) * 60) + (Right(Time,2))
cpt = 0
Set fCsv = fso.OpenTextFile( dir_in & "\" & fic_in, 1)
ligne_fic_in = fCsv.ReadLine ' Permet de sauter la première ligne qui est un entête
fcr_prec = ""
' Lecture du fichier fic_in ligne à ligne
While Not fCsv.AtEndOfStream
if cpt = 1 then call fin_script
tb = Split(fCsv.ReadLine, ";") ' Création d'un tableau par ligne
fcr_lue = tb(0) ' Récupération de la FCR à traiter
edition = tb(1) ' Récupération de l'édition qui contient la FCR
Wscript.echo "fcr_lue : " & fcr_lue & vbcrlf & _
"fcr_prec : " & fcr_prec
wdo.visible = False
Set wdocs = wdo.Documents
Set wdoc = wdocs.Open(repertoire & "\" & edition & "\" & fcr_lue) 'Ouverture
' Récupération du champ correspondant à l'alerte '
' A sanitiser. '
'Wscript.Echo wdoc.Tables(4).Cell(3, 2).Range.text
'-------------------------------------------------'
'Du code pour faire les correction'
' Détection du type de zone à modifier : combobox/cellule d'un tableau
Wscript.echo tb(4) & "-> " & tb(5)
' Rennomage pour correspondre au contenu de la FCR '
IF tb(4) = "PERIODICITE" OR tb(4) = "REPRISE_J" OR tb(4) = "REPRISE_S" Then rub = tb(4)
If tb(4) = "impact" Then rub = "CRITICITE"
If tb(4) = "urgence" Then rub = "Urgence"
If tb(4) = "Toppage CR" Then rub = "TOPAGE"
IF tb(4) = "" Then rub = ""
If IsInArray(rub, cbox) Then
Wscript.Echo wdoc. & rub & .text
'wdoc.rub.text = tb(5)
else
WScript.Echo "No"
End If
'-------------------------------------------------'
cpt = cpt + 1
' Test de rupture dernière
If fcr_prec = fcr_lue Then
' Même FCR on poursuit les corrections sans fermer le fichier
Wscript.echo "Les FCRs sont identiques, on ne ferme pas le fichier"
Else
' FCR différente on ferme le fichier en l'enregistrant dans un dossier
' et on passe à la FCR suivante'
Wscript.echo "Les FCRs sont différentes, on peu fermer le fichier"
'wdo.Run "lecture_fcr_chargement_MAESCOT",fic_out_central,fic_out_open,fic_out_reseau,Edition
wdoc.Close(0) 'fermeture FCR ouverte précédemment sans sauvegarder
End IF
fcr_prec = fcr_lue ' Stocke le nom de la FCR qui vient d'être traitée pour la gestion de la rupture dernière
Wend
Wscript.echo "Lignes lues : " & cpt
Call fin_script
' ****************************************************************************** '
''
'' Fin du script, début des sous routines
''
' ****************************************************************************** '
' Sous routine pour gérer la fin du script
' (le vbs ne gère les Goto que pour les erreurs)
Sub fin_script()
WScript.Echo "Fin du script " & WScript.ScriptName & vbcrlf & _
cpt & " objets traités "'en " & duree & " (HH:MM:SS)"
WScript.Quit
end sub
Function IsInArray(strIn, arrCheck)
'IsInArray: Checks for a value inside an array
'Author: Justin Doles - www.DigitalDeviation.com
Dim bFlag : bFlag = False
If IsArray(arrCheck) AND Not IsNull(strIn) Then
Dim i
For i = 0 to UBound(arrCheck)
If LCase(arrcheck(i)) = LCase(strIn) Then
bFlag = True
Exit For
End If
Next
End If
IsInArray = bFlag
End Function |
Partager