Outils divers
j
Bonjour,
J'aimerai poster un outil (non terminé) pour desobfusquer du code VBA (il recherche les mots de + de 30 caractère et il les raccourcis). Je ne sais plus à quelle erreur je m'en été arreté. Le but étant de voir si quelqu'un voudrait en discuter ou bien participer au truc. Comme vous voulez !
Sub RemplacementMotDansProcedure_essai()
'Activer l'édition des macros = Fichier / Option /
'Centre de gestion de la confidentialité /
'Paramètre du centre de gestion de la confidentialité /
'Paramètre des macros / Accès approuvé au modèle d'objet du projet VBA
'Nécéssite d'activer la référence
'"Visual basic For Application Extensibility 5.3"
'
Dim Ancien As String, Nouveau As String, Cible As String
Dim VBComp As VBComponent
Dim i As Integer
Dim Wb As Workbook
Dim tableau(100) As Variant, tabtemp(100) As Variant
a = 0
Set Wb = Workbooks("NomClasseur.xls")
' Ancien = "Feuil1"
' Nouveau = "Feuil3"
For Each VBComp In Wb.VBProject.VBComponents
For i = 1 To VBComp.CodeModule.CountOfLines
Cible = VBComp.CodeModule.Lines(i, 1)
'<---- Ecrire la ligne de code dans tableau() et separez le code avec les " "
x = InStr(1, Cible, " ")
tableau(a) = Mid(Cible, 1, x - 1)
For b = x To Len(Cible)
x1 = InStr(x + 1, Cible, " ")
If x1 <> 0 Then
a = a + 1
tableau(a) = Mid(Cible, x, x1 - x)
x = x1
End If
Next b
b = b - 1
a = a + 1
tableau(a) = Right(Cible, Len(Cible) - x)
'------>
'------>
'<---- Ecrire la ligne de code dans tableau() et separez le code avec les " "
Cible = ""
g = 0
For e = LBound(tableau) To a
If Len(tableau(e)) > 30 Then
For f = 1 To Len(tableau(e))
'''''''''Caractère "."
If Mid(tableau(e), f, 1) = "." Then
tabtemp(g) = Mid(tableau(e), 1, f - 1)
g = g + 1
tabtemp(g) = "."
g = g + 1
tabtemp(g) = Mid(tableau(e), f + 1)
g = g + 1
End If
'''''''''Caractère " "
If Mid(tableau(e), f, 1) = " " Then
tabtemp(g) = Mid(tableau(e), 1, f - 1)
g = g + 1
tabtemp(g) = " "
g = g + 1
tabtemp(g) = Mid(tableau(e), f + 1)
g = g + 1
End If
'''''''''Caractère "("
If Mid(tableau(e), f, 1) = "(" Then
tabtemp(g) = Mid(tableau(e), 1, f - 1)
g = g + 1
tabtemp(g) = "("
g = g + 1
tabtemp(g) = Mid(tableau(e), f + 1)
g = g + 1
End If
'''''''''Caractère ")"
If Mid(tableau(e), f, 1) = ")" Then
tabtemp(g) = Mid(tableau(e), 1, f - 1)
g = g + 1
tabtemp(g) = ")"
g = g + 1
tabtemp(g) = Mid(tableau(e), f + 1)
g = g + 1
End If
Next f
End If
Cible = Cible + tableau(e) + " "
Next e
'------>
'------>
Cible = Replace(Cible, Ancien, Nouveau)
VBComp.CodeModule.ReplaceLine i, Cible
Next i
Next VBComp
For Each VBComp In Wb.VBProject.VBComponents
For i = 1 To VBComp.CodeModule.CountOfLines
Cible = VBComp.CodeModule.Lines(i, 1)
Cible = Replace(Cible, Ancien, Nouveau)
VBComp.CodeModule.ReplaceLine i, Cible
Next i
Next VBComp
End Sub