Mise en forme d'un tableau en workbook open

Bonjour à tous,

Je pense m'en être sorti pour les codes d'extraction et de formule.

En revanche je ne maitrise absolument pas la mise en forme.

J'aimerais si possible que le tableau créer dans la feuille "Suivi" soit mis en forme.

Les colonnes ajustées et une mise en forme classique sympa. Dans le style : TableStyle = "TableStyleMedium2"

Pourriez vous m'aider SVP ?

4cession-nav.xlsm (39.81 Ko)

Bonjour

J'aimerais si possible que le tableau créer dans la feuille "Suivi" soit mis en forme.

Hum... pour comprendre --> vous créez la feuille Suivi depuis la feuille 1. Quelle mise en forme souhaitez vous ?

Déjà une chose dans votre code au niveau déclaration de variable,

Dim c1, c2, c3, c4, c5, c6, c7, c8 As Range

Seul C8 est déclarée en Range, les autres sont toutes en Variant. Donc comme ceci

Dim c1 As Range, c2 As Range, c3 As Range, c4 As Range, c5 As Range, c6 As Range, c7 As Range, c8 As Range

A corriger aussi pour les deux autres lignes DIM précédentes

Bonjour Dan,

Merci beaucoup pour la réponse.

La mise en forme idéale serait la bleue moyenne SVP.

Par avance merci.

Re

Faites une photo de ce que vous voulez que je comprenne

Bonjour,

Le code vba pour changer un objet table structurée est

ThisWorkbook.Worksheets(1).ListObjects("Table1").TableStyle = "TableStyleMedium2"

a adapter en fonction de vos feuilles et noms de tables bien entendu

Comme ceci ?

image

Il y a aussi un truc que vous devriez m'expliquer. Lorsque la feuille suivi existe, qu'est ce le code doit faire, là il passe à la boucle For j = 2 To dligne ..... next j pour aller définir le Lastrow. C'est incompréhensible
L'idée que j'avais était que chaque fois que vous ouvrez le fichier vous réimportez les données de la feuille 1 vers suivi. En gros on pourrait supprimer la feuille Suivi à chaque fois, ce qui me parait plus simple (sauf si vous modifiez des données après et que vous voulez les conserver...)


NB : il faudrait donner un nom à la place de Colonne 1 dans la colonne G. Dites-moi quel nom donner

Oui Dan comme cela !

Oui Dan comme cela !

Ok pour ?
il y a 3 questions...

Dan,

Pour la colonne 1 le nom serait Total Mensuel

Pour le tableau oui en bleu comme ça,

Et non pas besoin de supprimer la feuille "suivi"

Encore merci à toi !

Et non pas besoin de supprimer la feuille "suivi"

Si on ne supprime pas la feuille Suivi, il faut alors supprimer les données ou mieux le tableau avant de réimporter. Ok pour vous ?
Et si la feuille suivi existe, bah le code ne fait rien.

Ok pour moi Dan.

re

Faites comme ceci

1. Allez dans THISWORKBOOK
2. Supprimez tout le code que vous avez et remplacez-le par celui ci-dessous

Private Sub Workbook_Open()
Call CreerSuivi
End Sub

3. Dans l'éditeur VBA, allez dans le menu Insertion et cliquez sur "Module"
4. dans la fenêtre de ce nouveau module, mettez ce code

Option Explicit
Sub CreerSuivi()
Dim Nsheet As String, fexi As String
Dim j As Integer, dligne As Integer
Dim realise As Boolean
Dim c As Range

fexi = "1"
Nsheet = "Suivi" 'Nom donné à la feuille d'export et de traitement des données

On Error Resume Next
Application.DisplayAlerts = False
Worksheets(Nsheet).Delete 'supprimer feuille suivi
Application.DisplayAlerts = True

Worksheets.Add.Name = Nsheet 'creer feuille suivi

With Worksheets(fexi)
    'Copie les colonnes dans la nouvelle feuille suivi

    Set c = .Rows(1).Find("Projet", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(1)

    Set c = .Rows(1).Find("Sous-famille", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(2)

    Set c = .Rows(1).Find("Modèle", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(3)

    Set c = .Rows(1).Find("Quant. util.", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(4)

    Set c = .Rows(1).Find("Jours Tot.", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(5)

    Set c = .Rows(1).Find("Taux Princ.", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(6)

    Set c = .Rows(1).Find("Date de début", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(8)

    Set c = .Rows(1).Find("Date de fin", LookIn:=xlValues)
    .Columns(c.Column).Copy Sheets(Nsheet).Columns(9)

End With

With Worksheets(Nsheet)
    dligne = .UsedRange.Rows.Count

    For j = 2 To dligne
        If .Range("d" & j) = "0" Then .Range("d" & j) = 1

        .Range("f" & j) = Replace(.Range("f" & j), ",", ".")
        .Range("g" & j) = Replace(.Range("g" & j), ",", ".")
        .Range("G" & j).FormulaLocal = "=E" & j & "*F" & j
    Next j

    .Range("g2:g" & dligne).Formula = "=d2*e2*f2"

    'mise en forme
    With .Range("A1:I1")
        .Font.Bold = True
        .Font.Underline = xlUnderlineStyleSingle
    End With

    .ListObjects.Add(xlSrcRange, Range("$A$1:$I$" & dligne), , xlYes).Name = "Tableau1"
    With .ListObjects("Tableau1")
        .TableStyle = "TableStyleMedium2"
        .Range.EntireColumn.AutoFit
        .ShowTotals = True
        .HeaderRowRange(7) = "Total Mensuel"
        .ListColumns(7).TotalsCalculation = xlTotalsCalculationSum
    End With
End With
End Sub

Si ok, pensez à cloturer le fil

Crdlt

Merci beaucoup Dan ça fonctionne et j'apprends ! Bonne fin de journée.

Rechercher des sujets similaires à "mise forme tableau workbook open"