Macro mise en forme tableau

Pol

XLDnaute Occasionnel
Bonsoir à tous,

Je souhaiterais automatiser une mise en forme type de tableau.

Merci bcp pour votre aide.
 

Pièces jointes

  • MiseEnFormeTableau.xlsx
    11.4 KB · Affichages: 106

JCGL

XLDnaute Barbatruc
Re : Macro mise en forme tableau

Bonjour à tous,

As-tu essayé avec l'enregistreur de macro ?

A+ à tous

Edition : Voici ce que cela pourrait donner :

VB:
Option Explicit

Sub MeF()
Dim DerL1&, DerL2&, Plage As Range, Titre As Range
DerL1 = Feuil1.Range("E65000").End(xlUp).Row
DerL2 = Feuil1.Range("L65000").End(xlUp).Row
Set Plage = Union(Feuil1.Range("E5:H" & DerL1), Feuil1.Range("L5:T" & DerL2))
Set Titre = Feuil1.Range("E5:H5,L5:T5")
    
    Cells.Interior.Color = xlNone
    Cells.Borders.LineStyle = xlNone
    
    Plage.Borders.Weight = xlMedium
    Plage.Borders(xlInsideHorizontal).LineStyle = xlNone
    Titre.HorizontalAlignment = xlCenter
    Titre.Interior.Color = 5296274
    Titre.ColumnWidth = 10
    
    Range("E5").Select
End Sub
 
Dernière édition:

Pol

XLDnaute Occasionnel
Re : Macro mise en forme tableau

Bonjour JCGL,

On ne sait pas bien compris, je souhaite appliquer ce type de mise en forme à n'importe quelle tableau et peu importe sa taille et son positionnement sur la feuille,

il faut que la macro s'effectue sur la sélection active ( la plage de cellule qui représente mon tableau à mettre en forme )

Merci bcp pour ton aide.
 
G

Guest

Guest
Re : Macro mise en forme tableau

Bonjour,

@Pol: onglet accueil, groupe "Styles", bouton mettre sous forme de talbleau puis jouer avec les styles de tableaux, éventuellement créer un nouveau style.
A+

Salut mon JC:):):)
A+++ l'ami
 

Pol

XLDnaute Occasionnel
Re : Macro mise en forme tableau

Hasco,

Le problème est que je voudrais appliquer ce style à des fichiers anciens ou à des fichiers créés par d'autres personnes, il n'y a pas un autre moyen pour rendre ce nouveau style accessible dans tous fichiers excel ?
 
G

Guest

Guest
Re : Macro mise en forme tableau

Re,

Rien n'ai jamais parfait.

Tu as le choix entre Mise En forme par macro comme l'a montré Jean-claude et par style.

Les deux méthodes ont leurs qualités et leur défauts. Choisit les défauts que tu préfères...arf

A+
 

DoubleZero

XLDnaute Barbatruc
Re : Macro mise en forme tableau

Bonjour, Pol, Hasco :), JCGL :), le Forum,

Peut-être avec ce code, après s'être positionné dans la première cellule du tableau :

Code:
Sub Tableau_mettre_en_forme()
Dim Plage As Range
Set Plage = Selection.CurrentRegion
With Plage
    .Borders.Weight = xlMedium
    .Borders(xlInsideHorizontal).LineStyle = xlNone
End With
With Range(Selection, Selection.End(xlToRight))
    .Interior.Color = 5880731
    .HorizontalAlignment = xlCenter
    .Borders.Weight = xlMedium
    .Font.Bold = True
End With
End Sub

Bises, JCGL :D.

A bientôt :)
 

Pol

XLDnaute Occasionnel
Re : Macro mise en forme tableau

Merci doubleZero, on n'est plus très loin du résultat tant espéré, seul bémol, ne fonctionne pas si le tableau est discontinu ??

plutôt que se situé à la première cellule, on peut déjà sélectionné la plage de cellule qui représente mon tableau à mettre en forme ?
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme tableau

Bonjour Pol, Bonjour Hasco :), Bonjour JC :), Bonjour 00 :),
Je pense que le tableau à mettre en forme peut avoir des trous assez importants pour géner le CurrentRegion.
Donc en adaptant le très bon code de 00
VB:
Sub Tableau_mettre_en_forme_2()
Dim Plage As Range
Set Plage = Selection
With Plage
.Borders.Weight = xlMedium
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
With Plage(1, 1).Resize(1, Plage.Columns.Count)
.Interior.Color = 5880731
.HorizontalAlignment = xlCenter
.Borders.Weight = xlMedium
.Font.Bold = True
End With
End Sub
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Macro mise en forme tableau

Re
On peux même mettre plusieurs tableaux en forme
Selectionner toutes les plages de la feuille à mettre en forme puis:
VB:
Sub Multi_Tableaux()
Dim C As Range
For Each C In Selection.Areas
    With C
        .Interior.ColorIndex = xlNone
        .Borders.Weight = xlMedium
        .Borders(xlInsideHorizontal).LineStyle = xlNone
    End With
    With C(1, 1).Resize(1, C.Columns.Count)
        .Interior.Color = 5880731
        .HorizontalAlignment = xlCenter
        .Borders.Weight = xlMedium
        .Font.Bold = True
    End With
Next C
End Sub
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 233
Messages
2 086 465
Membres
103 224
dernier inscrit
VieuxSeb