Macro de mise en forme - données brutes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 400
Appréciations reçues : 2
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 12 juillet 2018, 20:58

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
Liste des BT_complété_janvier.xls
(119.5 Kio) Téléchargé 6 fois
Avatar du membre
CindyD
Membre fidèle
Membre fidèle
Messages : 266
Appréciations reçues : 20
Inscrit le : 11 juillet 2018
Version d'Excel : 2016 FR
Contact :

Message par CindyD » 13 juillet 2018, 16:23

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
Pour des demandes d'automatisation de fichiers de plus grande ampleur, n'hésitez pas à me contacter : https://www.linkedin.com/in/cindy-dolomieu-63234283/
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'399
Appréciations reçues : 92
Inscrit le : 29 mai 2018
Version d'Excel : 2016 (365)

Message par ric » 13 juillet 2018, 19:13

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
Smart Indenter,
Excel fermé, https://www.add-ins.com/macro-products- ... a-code.htm .
Puis, clic-droit sur le code.

Ma formation avance ... je ne sais pas quelle forme j'aurai. :P
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 400
Appréciations reçues : 2
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 13 juillet 2018, 19:41

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
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'399
Appréciations reçues : 92
Inscrit le : 29 mai 2018
Version d'Excel : 2016 (365)

Message par ric » 13 juillet 2018, 19:45

Bonjour,

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


ric
Smart Indenter,
Excel fermé, https://www.add-ins.com/macro-products- ... a-code.htm .
Puis, clic-droit sur le code.

Ma formation avance ... je ne sais pas quelle forme j'aurai. :P
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 400
Appréciations reçues : 2
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 13 juillet 2018, 19:51

Excel 2003, à mon grand désespoir...
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 400
Appréciations reçues : 2
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 13 juillet 2018, 22:03

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
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'399
Appréciations reçues : 92
Inscrit le : 29 mai 2018
Version d'Excel : 2016 (365)

Message par ric » 13 juillet 2018, 22:10

Bonjour,

Pour la feuille en cours...
Sub Test()

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

End Sub
ric
Smart Indenter,
Excel fermé, https://www.add-ins.com/macro-products- ... a-code.htm .
Puis, clic-droit sur le code.

Ma formation avance ... je ne sais pas quelle forme j'aurai. :P
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 400
Appréciations reçues : 2
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 13 juillet 2018, 22:20

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

Je venais juste de trouver une piste semblable icihttps://answers.microsoft.com/fr-fr/off ... 090af29db5

Bon week end à tous.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message