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
| 'REP_FICHIER est une cnstante que j'ai déclaré et qui contient le chemin du classeur excel.
'message est une variable qui correspond a strChaine, mais elle est passée en paramètre.
'Procédure permettant le traitement du message, et l'insertion dans le fichier Excel
Sub InsertIntoExcel(ByVal message As String)
Dim myArray() As String, myArrayB() As String, _
myArrayC() As String, myArrayD() As String, _
myArrayE() As String, myArrayF() As String
Dim xlApp As Excel.Application
Dim xl_Book As Excel.Workbook
Dim xl_Sheet As Excel.Worksheet
Dim xlApp_Cree As Boolean
Dim xl_Book_Cree As Boolean
Dim cheminFic As String
Dim i As Integer, _
m As Integer, n As Integer, o As Integer
Dim j As Integer, k As Integer, l As Integer
Dim x As Byte, y As Byte
Dim cel As Range, laPlage As Range
'Initialisation des variables
cheminFic = ""
m = 0
n = 0
o = 0
'On désactive la mise à jour de l'écran pour accélérer l'exécution du code
Application.ScreenUpdating = False
'Split de message avec comme paramètre "WAN" et stockage dans le tableau myArray
myArray = Split(message, "WAN")
'Pour chaque ligne récupérée dans le tableau pendant le traitement du message
For i = 0 To UBound(myArray())
'Si il s'agit d'un site à accès bloqué, on insère la ligne dans le tableau myArrayB,
If myArray(i) Like "*blocked*" Then
ReDim Preserve myArrayB(0 To m)
myArrayB(m) = ReplaceStr(myArray(i))
m = m + 1
'Sinon, si il s'agit d'un accès autorisé, on récupère le début de la chaine dans le tableau myArrayD
ElseIf myArray(i) Like "*Access site*" Then
ReDim Preserve myArrayD(0 To n)
myArrayD(n) = ReplaceStr(myArray(i))
n = n + 1
'et on récupère la fin de cette chaine dans le tableau myArrayE (à cause de la précense des 2 "WAN"
'dans les chaines représentant un accès autorisé
ElseIf myArray(i) Like " - Destination*" Then
ReDim Preserve myArrayE(0 To o)
myArrayE(o) = ReplaceStr(myArray(i))
o = o + 1
End If
Next i
'Evite le message d'erreur lors du test de l'existence de l'instance Excel
On Error Resume Next
'Test l'existence d'une instance Excel
Set xlApp = GetObject(, "Excel.Application")
'Si il n'y en a pas on la crée
If xlApp Is Nothing Then
Set xlApp = CreateObject("Excel.Application")
xlApp_Cree = True
Else
xl_Book_Cree = True
End If
On Error GoTo 0
'On ouvre le fichier Excel
cheminFic = REP_FICHIER
Set xl_Book = xlApp.Workbooks.Open(cheminFic)
Set xl_Sheet = xl_Book.Worksheets(1)
With xl_Sheet
'Split de chaque ligne de myArrayB avec comme paramètre " - " et stockage dans le tableau myArrayC
For j = 0 To UBound(myArrayB())
myArrayC = Split(myArrayB(j), " - ")
ReDim Preserve myArrayC(0 To UBound(myArrayC()))
Range("A" & j + .Cells(Rows.Count, 1).End(xlUp).Row + 1).Resize(, UBound(myArrayC()) + 1) = myArrayC
Next j
'Split de chaque ligne de myArrayD associé à myArrayE avec comme paramètre " - " et stockage dans le tableau myArrayF
For k = 0 To UBound(myArrayD())
myArrayF = Split(myArrayD(k) & myArrayE(k), " - ")
ReDim Preserve myArrayF(0 To UBound(myArrayF()))
Range("A" & .Cells(Rows.Count, 2).End(xlUp).Row + 1).Resize(, UBound(myArrayF()) + 1) = myArrayF
Next k
'Suppression Cellules Vides & Mise en forme
For l = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
With .Cells(l, 2)
If .Offset(0, -1).Text = "" Then
.Offset(0, -1).Delete xlToLeft
End If
End With
Next
'Permet la suppresion du jour (ex : "Mon") pour n'avoir que la date
Set laPlage = .Range("A2:A" & .Cells(Rows.Count, 2).End(xlUp).Row)
For Each cel In laPlage
For x = 1 To Len(cel)
If IsNumeric(Mid(cel, x, 1)) Then
y = x
Exit For
End If
Next x
'Pb depuis l'ajout de l'ouverure du fichier
cel.Value = CDate(Mid(cel.Text, y, Len(cel) - y + 1))
Next cel
End With
'Destruction des tableaux dynamiques
Erase myArray
Erase myArrayB
Erase myArrayC
Erase myArrayD
Erase myArrayE
Erase myArrayF
'Si on avai lancé une instance Excel on la ferme
If xlApp_Cree Then
xlApp.Quit
ElseIf xl_Book_Cree Then
xl_Book.Close
End If
'On réactive la mise à jour de l'écran
Application.ScreenUpdating = True
'On décharge les objets en mémoire
Set xlApp = Nothing
Set xl_Book = Nothing
Set xl_Sheet = Nothing
End Sub
'Fonction permettant de supprimer les informations inutiles
Function ReplaceStr(strCh As String) As String
Dim replaceStr1 As String, replaceStr2 As String, replaceStr3 As String, replaceStr4 As String
replaceStr1 = Replace(strCh, "[Forward]", "")
replaceStr2 = Replace(replaceStr1, "Source:", "")
replaceStr3 = Replace(replaceStr2, "LAN", "")
replaceStr4 = Replace(replaceStr3, ",", " ")
ReplaceStr = Replace(replaceStr4, "Destination:", "")
End Function |
Partager