Utiliser une macro sur des fichiers différents

Bonjour, je découvre le potentiel des macros mais étant débutant, je me suis rapidement trouvé bloqué.

J'ai créé ma première macro personnelle sur un fichier généré par un autre logiciel en csv.

Mais lorsque j'essaye de l'appliquer sur un qui ne porte pas le même nom, cela ne marche pas.

En effet, dans la macro il y a nom du fichier d'origine!

De plus, je n'arrive pas à insérer un formule qui récupère les données du nom du fichier dans le code de la macro.

Et pour terminer, la fonction "mettre sous forme de tableau" se fait sur une plage de cellules alors que la dimension de celui ci varie en fonction de la quantité de données.

Voici le liste des instructions:

Suppression de la colonne A

Trier par localisation puis GMV

Changer l'intitulé de la colonne A en Loc.

Supprimer la colonne unité de gestion

Mettre le code GEF en seconde colonne

Largeur de colonnes : A à 7, C à 30, D à 40 et E à 7

Renvoyer à la ligne automatiquement tout le tableau

Aligner tout le tableau au centre

Mettre sous forme de tableau clair 1 avec entête

Mettre en page avec marge haut, droite et gauche: 0.5; bas 1.5 et pied de page à 0.5

Pied de page: Page 1 de ?

Insérer une ligne au dessus du tableau et fusionner les 5 premières cellules

Mettre dans cette cellule la formule suivante pour récupérer les données du nom de fichier:
="Quantitées cumulées pour le service " & DROITE(GAUCHE(CELLULE("filename");NBCAR(CELLULE("filename"))-43);NBCAR(GAUCHE(CELLULE("filename");NBCAR(CELLULE("filename"))-43)))-(TROUVE("_";GAUCHE(CELLULE("filename");NBCAR(CELLULE("filename"))-43)))-5) & " du " & TEXTE(DATE(GAUCHE(GAUCHE(DROITE(CELLULE("filename");42);8);4);STXT(GAUCHE(DROITE(CELLULE("filename");42);8);5;2);DROITE(GAUCHE(DROITE(CELLULE("filename");42);8);2));"JJ/MM/AA") & " à " & TEXTE(GAUCHE(DROITE(CELLULE("filename");34);4);"00\:00") &" au " & TEXTE(DATE(GAUCHE(GAUCHE(DROITE(CELLULE("filename");29);8);4);STXT(GAUCHE(DROITE(CELLULE("filename");29);8);5;2);DROITE(GAUCHE(DROITE(CELLULE("filename");29);8);2));"JJ/MM/AA") & " à " & TEXTE(GAUCHE(DROITE(CELLULE("filename");21);4);"00\:00") & CAR(10)&" (calculé le " & TEXTE(DATE(GAUCHE(GAUCHE(DROITE(CELLULE("filename");16);8);4);STXT(GAUCHE(DROITE(CELLULE("filename");16);8);5;2);DROITE(GAUCHE(DROITE(CELLULE("filename");16);8);2));"JJ/MM/AA") & " à " & TEXTE(GAUCHE(DROITE(CELLULE("filename");8);4);"00\:00")&")"

Mettre le texte de cette cellule en gras et taille 14

Mettre la hauteur de cette ligne à 50

Je pense que l'enregistrement automatique a toute ses limites!

Un grand merci pour votre aide

Bonjour

Avec le fichier de votre macro personnelle on y verrait un peu plus clair. Cela vous donnerait plus de chance d'avoir une réponse.

Cordialement

Oups, je n'ai pas mis la bonne formule dans mon message:

="Quantitées cumulées pour le service " & DROITE(GAUCHE(CELLULE("filename");NBCAR(CELLULE("filename"))-43);NBCAR(GAUCHE(CELLULE("filename");NBCAR(CELLULE("filename"))-43)))-(TROUVE("_";GAUCHE(CELLULE("filename");NBCAR(CELLULE("filename"))-43)))-5) & " du " & TEXTE(DATE(GAUCHE(GAUCHE(DROITE(CELLULE("filename");42);8);4);STXT(GAUCHE(DROITE(CELLULE("filename");42);8);5;2);DROITE(GAUCHE(DROITE(CELLULE("filename");42);8);2));"JJ/MM/AA") & " à " & TEXTE(GAUCHE(DROITE(CELLULE("filename");34);4);"00\:00") &" au " & TEXTE(DATE(GAUCHE(GAUCHE(DROITE(CELLULE("filename");29);8);4);STXT(GAUCHE(DROITE(CELLULE("filename");29);8);5;2);DROITE(GAUCHE(DROITE(CELLULE("filename");29);8);2));"JJ/MM/AA") & " à " & TEXTE(GAUCHE(DROITE(CELLULE("filename");21);4);"00\:00") & CAR(10)&" (calculé le " & TEXTE(DATE(GAUCHE(GAUCHE(DROITE(CELLULE("filename");16);8);4);STXT(GAUCHE(DROITE(CELLULE("filename");16);8);5;2);DROITE(GAUCHE(DROITE(CELLULE("filename");16);8);2));"JJ/MM/AA") & " à " & TEXTE(GAUCHE(DROITE(CELLULE("filename");8);4);"00\:00")&")"

Voila ce que çà me donne en enregistrement auto:

Sub Essais5()
'
' Essais5 Macro
'

'
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    ActiveWorkbook.Worksheets("CumulC_9193_C3mat_202110270000_").Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("CumulC_9193_C3mat_202110270000_").Sort.SortFields. _
        Add Key:=Range("A2:A76"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("CumulC_9193_C3mat_202110270000_").Sort.SortFields. _
        Add Key:=Range("C2:C76"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("CumulC_9193_C3mat_202110270000_").Sort
        .SetRange Range("A1:F76")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Loc."
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Selection.Cut
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight
    Columns("A:A").Select
    Selection.ColumnWidth = 7
    Columns("C:C").Select
    Selection.ColumnWidth = 30
    Columns("D:D").Select
    Selection.ColumnWidth = 40
    Columns("E:E").Select
    Selection.ColumnWidth = 7
    Cells.Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Application.WindowState = xlNormal
    Range("A1").Select
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$E$76"), , xlYes).Name = _
        "Tableau1"
    Range("Tableau1[#All]").Select
    ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleLight1"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = "Page &P de &N"
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.196850393700787)
        .RightMargin = Application.InchesToPoints(0.196850393700787)
        .TopMargin = Application.InchesToPoints(0.196850393700787)
        .BottomMargin = Application.InchesToPoints(0.590551181102362)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.196850393700787)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = -3
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A1:E1").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
    With Selection.Font
        .Name = "Calibri"
        .Size = 14
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    Selection.Font.Bold = True
    Application.WindowState = xlNormal
    Rows("1:1").Select
    Selection.RowHeight = 50
    Range("A1:E1").Select
    ActiveCell.FormulaR1C1 = _
        "=""Quantitées cumulées pour le service "" & RIGHT(LEFT(CELL(""filename""),LEN(CELL(""filename""))-43),(LEN(LEFT(CELL(""filename""),LEN(CELL(""filename""))-43)))-(FIND(""_"",LEFT(CELL(""filename""),LEN(CELL(""filename""))-43)))-5) & "" du "" & TEXT(DATE(LEFT(LEFT(RIGHT(CELL(""filename""),42),8),4),MID(LEFT(RIGHT(CELL(""filename""),42),8),5,2),RIGHT(LEFT(RIGHT(CELL(""" & _
        """),42),8),2)),""JJ/MM/AA"") &  "" à "" & TEXT(LEFT(RIGHT(CELL(""filename""),34),4),""00\:00"") &"" au "" & TEXT(DATE(LEFT(LEFT(RIGHT(CELL(""filename""),29),8),4),MID(LEFT(RIGHT(CELL(""filename""),29),8),5,2),RIGHT(LEFT(RIGHT(CELL(""filename""),29),8),2)),""JJ/MM/AA"") & "" à "" & TEXT(LEFT(RIGHT(CELL(""filename""),21),4),""00\:00"") & CHAR(10)&"" (calculé le "" & T" & _
        "LEFT(LEFT(RIGHT(CELL(""filename""),16),8),4),MID(LEFT(RIGHT(CELL(""filename""),16),8),5,2),RIGHT(LEFT(RIGHT(CELL(""filename""),16),8),2)),""JJ/MM/AA"") & "" à "" & TEXT(LEFT(RIGHT(CELL(""filename""),8),4),""00\:00"")&"")"""
    Range("Tableau1[[#Headers],[Loc.]]").Select
End Sub

Mais cela ne fonctionne pas sur la ligne 1

Votre fichier .xlsm serait plus utile

Ma macro a pour but de mettre en page automatiquement un fichier csv généré par une autre logiciel qu'excel pour l'imprimer.

Il n'y a donc pas de xlsm

j'ai trouvé une première réponse à mes problèmes.

En fait, la macro fait référence au nom de la feuille: CumulC_9193_C3mat_202110270000_

J'ai modifié partout en laissant que CumulC et j'ai ajouté ActiveSheet.Name = "CumulC" au début de ma macro

Et en effet, j'arrive à la faire tourner sur des fichier de noms diférents.

reste à régler le problème de la formule et la fonction "mettre en forme de tableau".

Rechercher des sujets similaires à "utiliser macro fichiers differents"