Créer une macro pour mettre en forme une feuille et insérer des formules.

Moulinois

XLDnaute Occasionnel
Bonjour !

J'ai un tableau qui sort brut de fonderie de l'extraction d'un état de l'ERP. C'est le fichier DépartF.

L'objectif de la mission que je vous propose ici est de transformer "DépartF" en "ArrivéeF". La macro devrait mettre en forme les données et insérer tout le bazard (=formules) qu'il y a en-dessous et à côté :D

Les cellules jaunes seront à remplir manuellement (trop d'automatisme tue l'automatisme :D)

Le nombre de lignes peut changer.


Est-ce que vous avez des questions ?

Je connais terriblement mal VBA mais je peux sans doute mettre la main à la pate, donnez-moi des tâches de base :p

Merki.
 

Pièces jointes

  • Exemple.zip
    5.6 KB · Affichages: 63
  • Exemple.zip
    5.6 KB · Affichages: 69
  • Exemple.zip
    5.6 KB · Affichages: 69

skoobi

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour,

Voici le début de la macro qui cré le contour du tableau, met en jaune le titre et renomme le titre en B2.
A toi de poursuivre.
Pense à utiliser l'enregistreur de macro pour récupérer une syntaxe.

Code:
Sub Macro1()
    Columns("A").Insert 'insère une colonne
    Rows(1).Insert 'insère une ligne
    With Range("B2").CurrentRegion.Borders(xlEdgeLeft) 'cré la bordure gauche de tout le tableau
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Range("B2").CurrentRegion.Borders(xlEdgeTop) 'cré la bordure haut de tout le tableau
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Range("B2").CurrentRegion.Borders(xlEdgeBottom) 'etc....
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Range("B2").CurrentRegion.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Range("B2:H2").Interior 'met en jaune les titres
        .ColorIndex = 6
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
    With Range("B2:H2").Borders(xlInsideVertical) 'sépare les titres par un trait
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Range("B2:H2").Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Range("B2").Value = "OF" 'écrit "OF" en B2
    
End Sub
 

JCGL

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour à tous,

En partant du principe que le fichier joint est ton fichier d'Import auquel tu as rajouté des couleurs et des formules.

A+
 

Pièces jointes

  • Mise_en_Forme.zip
    13.3 KB · Affichages: 58
  • Mise_en_Forme.zip
    13.3 KB · Affichages: 70
  • Mise_en_Forme.zip
    13.3 KB · Affichages: 61

Staple1600

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour à tous


En reprenant le code de Skoobi
Code:
Sub test_skoobi()
With Range("B2").CurrentRegion
        .BorderAround xlContinuous, xlMedium, xlAutomatic
        .Interior.ColorIndex = 6
    End With
    With Range("B2:H2").Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
End Sub
 

skoobi

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour à tous


En reprenant le code de Skoobi
Code:
Sub test_skoobi()
With Range("B2").CurrentRegion
        .BorderAround xlContinuous, xlMedium, xlAutomatic
        .Interior.ColorIndex = 6
    End With
    With Range("B2:H2").Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
End Sub

Je pensais bien qu'il y avait plus court.....
Merci JM :)
 

skoobi

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour Skoobi


Plus court oui

Mais le résultat est-t-il le bon?

Car je n'ai pas testé sur la pièce jointe ?

Tsstss, pas bien ça.... :p:D

Edit: comme ça c'est mieux: ;)

Code:
Sub Macro1()
    Columns("A").Insert 'insère une colonne
    Rows(1).Insert 'insère une ligne
Range("B2").CurrentRegion.BorderAround xlContinuous, xlMedium, xlAutomatic
With Range("B2:H2").Borders(xlInsideVertical)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
Range("B2:H2").Interior.ColorIndex = 6
Range("B2").Value = "OF" 'écrit "OF" en B2
    
End Sub
 
Dernière édition:

Moulinois

XLDnaute Occasionnel
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonsoir et merci à tous :)

JCGL> C'est pas mal. C'est pas loin d'être ce que je veux :)



Aux autres> Sur la base de vos conseils, en analysant votre boulot et en utilisant l'enregistreur, j'ai fait ça :

Code:
Sub Macro1()
    ActiveWindow.Zoom = 70
    
    Columns("A").Insert 'insère une colonne
    Rows(1).Insert 'insère une ligne
Range("B2").CurrentRegion.BorderAround xlContinuous, xlMedium, xlAutomatic
With Range("B2").CurrentRegion.Borders(xlInsideHorizontal)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
With Range("B2:H2").Borders(xlInsideVertical)
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
End With
Range("B2:H2").BorderAround xlContinuous, xlMedium, xlAutomatic
Range("B2:H2").Interior.ColorIndex = 6
Range("i2").Interior.ColorIndex = 45

Range("B2").Value = "OF" 'écrit "OF" en B2
Range("C2").Value = "Opération"
Range("D2").Value = "Poste"
Range("E2").Value = "Poste"
Range("F2").Value = "Nomenclature"
Range("G2").Value = "Alloué"
Range("H2").Value = "Réel"
Range("i2").Value = "Justification"


    Range("B2:I2").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With



    Range("B2:I2").Select
    Selection.Font.Bold = True
    Columns("A:A").ColumnWidth = 2.75
    Columns("C:C").ColumnWidth = 10.75
    Columns("E:E").ColumnWidth = 27.13
    Columns("I:I").ColumnWidth = 14.75
    
End Sub

Je me pose néanmoins une question (en fait tout un tas mais j'en garde pour plus tard)....comment mettre en forme la colonne I ?
 

Staple1600

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

RE



Merci à Monsieur Skoobi d'avoir testé et modifié en conséquence

Monsieur JCGL, bonsoir


Monsieur Moulinois: ton intention est louable, mais le code de Skoobi ne doit pas être mélangé au code de JCGL

Il faut utiliser soit l'un soit l'autre.
 

JCGL

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour à tous,
Salut Skooby :),
Salut Staple :),

Un essai pour Moulinois qui devra mettre les bordures et les titres de colonnes

A+
 

Pièces jointes

  • Mise_en_Forme_2.zip
    13.9 KB · Affichages: 80

Moulinois

XLDnaute Occasionnel
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour !

Monsieur Moulinois: ton intention est louable, mais le code de Skoobi ne doit pas être mélangé au code de JCGL

Il faut utiliser soit l'un soit l'autre.
Je ne comprends pas pourquoi tu dis ça... J'étais un peu fatigué hier soir :)D) mais je crois me souvenir que je n'ai fait que mélanger le code de Skoobi avec le "mien"


JCGL & les autres> Est-ce possible d'avoir le bloc "Total Pointage";"Coût Main d'Oeuvre" etc en-dessous du tableau (je vous rappelle que la taille du tableau peut varier :() ou est-ce que cela demande trop de boulot ?
(Les formules contenues dans le bloc doivent avoir des références variables également)
Peut-on faire de même avec les formules en J ?


J'ai remplacé la formule en J3 par Range("J3").Formula = "=IF(RC[-3]=0,""-------"",RC[-2]/RC[-3]-1)"

J'ai aussi remplacé le point dans la partie mise en forme automatique par une virgule.

Je crois que nous ne sommes plus très loin de la limite de mes compétences :D


A vous lire,
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Bonjour à tous,

Un essai à modifier suivant ton séparateur décimal
Pour le bloc en dessous : oui c'est posible.
Peut-tu redéposer un fichier Source en *.txt (ton export un wks converti en *.xls

A+
 

Pièces jointes

  • Mise_en_Forme_3.zip
    17.4 KB · Affichages: 56

Moulinois

XLDnaute Occasionnel
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Re,
Peut-tu redéposer un fichier Source en *.txt (ton export un wks converti en *.xls

Je ne suis pas sûr d'avoir compris la question :D
Je t'envoie un *.txt tel qu'exporté par le progiciel (pas certain qu'il soit si exploitable que ça) et un "xls works" du logiciel convertit en "xls excel" par excel.


Pour le bloc en dessous et les formules s'adaptant au nombre de lignes, ça serait tip top :)
Comment qu'on fait ça ?..
 

Pièces jointes

  • Exemple2.zip
    5.2 KB · Affichages: 55
  • Exemple2.zip
    5.2 KB · Affichages: 59
  • Exemple2.zip
    5.2 KB · Affichages: 42
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Re


Monsieur MOULINOIS, ma remarque n'était qu'une innocente boutade

Rien de méchant.

Ce qu'il fallait en retenir c'était de pas mélanger.

(Même si je n'ai rien contre les mélanges.)

Une petite question: peux-tu nous dire le nom de ton progiciel , stp ?
 

Moulinois

XLDnaute Occasionnel
Re : Créer une macro pour mettre en forme une feuille et insérer des formules.

Re
Monsieur MOULINOIS, ma remarque n'était qu'une innocente boutade

Rien de méchant.

Ce qu'il fallait en retenir c'était de pas mélanger.
En fait, j'ai rajouté des choses à moi, pas mélangé.
Enfin je crois me souvenir que c'est ce que j'ai fait...

Une petite question: peux-tu nous dire le nom de ton progiciel , stp ?
Produflex de Cegid (non, ne me frappez pas)
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 047
Membres
101 880
dernier inscrit
Anton_2024