Appliquer une macro (enregistreur) à des fichiers portant différents noms
Bonjour,
Je sollicite votre aide car je suis un peu bloqué. J'ai une macro qui applique de la mise en page et des calculs à des fichiers .csv que je reçois (un chaque jour).
Mon but est depuis cette macro de pouvoir, après avoir ouvert le nouveau .csv du jour, lui appliquer cette macro.
Dans ma macro j'ai des lignes propres au fichier originel ex :
Windows("Cortal_very_passive_20230127.csv").ActivateComment pourrais-je faire pour rendre ma macro applicable à tous fichiers après que ces derniers aient été ouverts.
Je vous remercie.
Sub MacroV3()
'
' MacroV3 Macro
'
' Touche de raccourci du clavier: Ctrl+p
'
Windows("Cortal_very_passive_20230127.csv").Activate
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1)), _
TrailingMinusNumbers:=True
ActiveWindow.ScrollColumn = 2
Range("S1").Select
ActiveCell.FormulaR1C1 = "Penny Stock"
Range("S2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-4]<1,""OUI"",""NON"")"
Range("S2").Select
Selection.AutoFill Destination:=Range("S2:S183")
Range("S2:S183").Select
Range("T1").Select
ActiveCell.FormulaR1C1 = "Calcul Déviation"
Range("T2").Select
ActiveCell.FormulaR1C1 = "=ABS((RC[-10]/RC[-5])-1)"
Range("T2").Select
Selection.Style = "Percent"
Selection.AutoFill Destination:=Range("T2:T183")
Range("T2:T183").Select
Range("U1").Select
ActiveCell.FormulaR1C1 = "A purger"
Range("U2").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]=""NON"",IF(RC[-1]>70%,""Purge"",""Keep""),IF(RC[-11]<(RC[-6]+1),""Keep"",""Purge""))"
Range("U2").Select
Selection.AutoFill Destination:=Range("U2:U183")
Range("U2:U183").Select
ActiveWindow.SmallScroll Down:=-21
Range("V1").Select
ActiveCell.FormulaR1C1 = "EDA/DMA"
Range("V2").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(RC[-17]=""11FORN"",RC[-17]=""11CORT""),""DMA"",""EDA"")"
Range("V2").Select
Selection.AutoFill Destination:=Range("V2:V183")
Range("V2:V183").Select
Range("W1").Select
ActiveCell.FormulaR1C1 = "IF Client"
Range("W2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-17]=9,""BDDF"",""FORTIS"")"
Range("W2").Select
Selection.AutoFill Destination:=Range("W2:W183")
Range("W2:W183").Select
Range("Y22").Select
Columns("L:L").Select
Selection.TextToColumns Destination:=Range("L1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
":", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Range("L1").Select
ActiveCell.FormulaR1C1 = "Code MIC"
Range("M1").Select
ActiveCell.FormulaR1C1 = "Mnémonique"
Columns("P:P").Select
Selection.NumberFormat = "@"
Selection.TextToColumns Destination:=Range("P1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
":", FieldInfo:=Array(1, 2), TrailingMinusNumbers:=True
Columns("K:K").Select
Selection.NumberFormat = "#,##0.00"
Columns("U:U").Select
ActiveWorkbook.Worksheets("Cortal_very_passive_20230127").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Cortal_very_passive_20230127").Sort.SortFields.Add2 _
Key:=Range("U1:U183"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Cortal_very_passive_20230127").Sort
.SetRange Range("A2:W183")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Selection.FormatConditions.Add Type:=xlTextString, String:="Purge", _
TextOperator:=xlContains
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlTextString, String:="Keep", _
TextOperator:=xlContains
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Windows("Cortal_very_passive_20230127.xlsx").Activate
End SubP.S : (macro en lien)
Bonjour Question-Boy,
Si le schéma général des fichiers CSV est le même que celui indiqué.
Alors il suffit de mettre en début de macro ceci.
Sub MacroV3()
'
' MacroV3 Macro
'
' Touche de raccourci du clavier: Ctrl+p
'
Fich = InputBox("Inscrire le nom du fichier sans l'extension", "ATTENTION")
If Fich = "" Then MsgBox "Fichier non renseigné": Exit Sub Else Fich = Fich & ".csv"
Windows(Fich).ActivateAttention, le nom de la feuille du fichier Excel doit être aussi renommé, si différente. Par le même procédé, avec l'emploi d'un inputBox et d'une variable, par exemple appelé Onglet voire Sht.
Onglet = InputBox("Inscrire le nom de la feuille","Ensuite")
ActiveWorkbook.Worksheets(Onglet)De même si le fichier Excel ne porte pas le même nom.