Macro de mise en forme - données brutes

Bonjour à tous,

J'exporte régulièrement en Excel des données d'une application, et chaque fois je dois re-faire une mise en forme spécifique.

À la ligne 1, j'insères une ligne pour mettre une formule en C1, D1 et E1.

En F1, je fait le rapport de E1/10280.

À la ligne 2, je mets le filtre automatique.

Je mets en forme la colonne B en nombre sans décimale.

Je convertis les données de la colonne B (B3:BX) en nombre.

Et, je trie la colonne B par date croissante.

Croyez vous qu'il est possible d'avoir une macro qui fasse systématiquement cette mise en forme?

Merci

Bonjour,

Vue que la manipulation a l'air d'être toujours la même, je vous préconise d'enregistrer vous même une macro en utilisant l'enregistreur. Vous pouvez regarder cette vidéo qui explique comment faire : https://www.youtube.com/watch?v=m-FvqmdKLeA

Cindy

Bonjour,

À tester si ça convient :

Sub Mise_en_forme_PEP()
Dim DerLig As Integer

With Worksheets("Sheet1")  ' nom à adapter
    DerLig = Cells(Rows.Count, "B").End(xlUp).Row  ' trouve dernièr ligne

    .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ' insérer ligne
    .Range("A2:H2").AutoFilter                      ' ajouter filtre
    .Range("B3:B" & DerLig).NumberFormat = "0"      ' formant nombre sans décimale

    .Range("C1").FormulaR1C1 = "=SUBTOTAL(3,R[2]C[-1]:R[9999]C[-1])"
    .Range("D1").FormulaR1C1 = "=SUBTOTAL(3,R[2]C[-1]:R[9999]C[-1])"
    .Range("E1").FormulaR1C1 = "=SUBTOTAL(3,R[2]C[-1]:R[9999]C[-1])"
    .Range("F1").FormulaR1C1 = "=RC[-1]/10280"      ' ajouter formule en F1

    .Range("B3:B" & DerLig).TextToColumns Destination:=Range("B3"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

    .Sort.SortFields.Clear
    .Sort.SortFields.Add2 Key:=Range("C3:C" & DerLig), _
         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With .Sort
        .SetRange Range("A2:H" & DerLig)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

ric

Bonjour ric,

merci pour ta proposition, mais il y a une erreur d'exécution 438 sur le

.Sort.SortFields.Clear

Avec la proposition de CyndiD, j'ai réussi à obtenir ceci, mais cela ne converti pas le contenu des cellules B3:Bx en nombre. Mon rapport export le contenu en texte, et ce n'est pas idéale pour trier des chiffre.

Sub MiseEnForme()
'
' MiseEnForme Macro
' Macro enregistrée le 2018-07-13 par ulangzx
'

'
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Rows("2:2").Select
    Selection.AutoFilter
    Columns("B:B").Select
    Selection.NumberFormat = "0"
    Range("B3").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWindow.SmallScroll Down:=6
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(3,R[2]C:R[11999]C)"
    Range("B2").Select
    Columns("C:C").ColumnWidth = 11.14
    Columns("D:D").EntireColumn.AutoFit
    Columns("E:E").ColumnWidth = 11.14
    Columns("F:F").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("H:H").EntireColumn.AutoFit
    Range("A3:H3").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Sort Key1:=Range("E3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("B1").Select
    Selection.AutoFill Destination:=Range("B1:E1"), Type:=xlFillDefault
    Range("B1:E1").Select
    Selection.Font.Bold = True
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]/10280"
    Range("F1").Select
    Selection.Style = "Percent"
    Selection.Font.Bold = True
End Sub

Bonjour,

Désolé, je n'avais remarqué que tu utilisais Excel 2003.

ric

Excel 2003, à mon grand désespoir...

Bonjour

Avec ce code j'arrive à obtenir à peu près à 100% ce que je souhaite. Tout ce qui me reste à intégrer c'est la conversion en nombre d'une colonne dont les nombres sont stockés en forma lettre.

Sub MiseEnForme()
'
' MiseEnForme Macro
' Macro enregistrée le 2018-07-13 par ulangzx
'

'
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Rows("2:2").Select
    Selection.AutoFilter
    Columns("B:B").Select
    Selection.NumberFormat = "0"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(3,R[2]C:R[11999]C)"
    Columns("C:C").ColumnWidth = 11.14
    Columns("D:D").EntireColumn.AutoFit
    Columns("E:E").ColumnWidth = 11.14
    Columns("F:F").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("H:H").EntireColumn.AutoFit
    Range("A3:H3").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Sort Key1:=Range("E3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("B1").Select
    Selection.AutoFill Destination:=Range("B1:E1"), Type:=xlFillDefault
    Range("B1:E1").Select
    Selection.Font.Bold = True
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]/10280"
    Range("F1").Select
    Selection.Style = "Percent"
    Selection.Font.Bold = True

End Sub

J'ai trouvé ce code sur le net, mais il fonction pour le classeur en entier. J'aimerais avoir l'équivalent seulement pour la colonne B de la feuille active.

Sub Test()
    For Each ws In ActiveWorkbook.Worksheets
        With ws.Range("B3:B15000")
            .NumberFormat = "0"
            .Value = .Value
        End With
    Next
End Sub

Mes tentative d'adaptation n'ont pas porté fruit.

Merci

Bonjour,

Pour la feuille en cours...

Sub Test()

With Range("B3:B15000")
    .NumberFormat = "0"
    .Value = .Value
End With

End Sub

ric

merci beaucoup, c'est grandement apprécié ric.

Je venais juste de trouver une piste semblable icihttps://answers.microsoft.com/fr-fr/office/forum/office_2013_release-excel/convertir-une-colonne-de-donn%C3%A9es-texte-en/d9792709-b98d-4017-a452-30090af29db5

Bon week end à tous.

Rechercher des sujets similaires à "macro mise forme donnees brutes"