Mise en forme automatique

condors.s

XLDnaute Occasionnel
Bonjour,
Il existe dans Excel un menu pour mettre en forme automatiquement des tableaux.
JE voudrais changer les paramètres pour personnaliser la mise en forme.
Impossible de trouver ou ca se trouve.
Est ce possible ?
Est ce qu'une macro pourrais le faire si Excel ne le permet pas?
Comment faire cette macro?

Merci beaucoup
 

jeanpierre

Nous a quitté
Repose en paix
Re : Mise en forme automatique

Bonjour condors.s,

Parles-tu du menu Format/Mise en forme automatique ?

A part les modèles proposés et quelques options je ne pense pas que l'on puisse personnaliser plus.

Par macro, c'est possible, encore faut-il définir ce que tu veux faire.

Tu peux, par exemple, par Outils/Macro et Nouvelle macro démarrer un enregistrement et, là, tu fais la mise en forme que tu souhaites. Tu arrêtes l'enregistrement et ta macro est prête. (Alt F11 pour la voir)

Bon après-midi.

Jean-Pierre
 

condors.s

XLDnaute Occasionnel
Re : Mise en forme automatique

Merci Jeanpierre,
Je parle bien du menu Format/Mise en forme automatique.

Pour la macro dont tu me parle je ne pense pas que ca soit possible car mes tableaux ne font jamais les memes dimension.
Je joint un exemple de mise en page que je voudrais pouvoir faire automatiquement.

Merci
 

Pièces jointes

  • MISE EN PAGE.xls
    18 KB · Affichages: 87
  • MISE EN PAGE.xls
    18 KB · Affichages: 83
  • MISE EN PAGE.xls
    18 KB · Affichages: 96

Gael

XLDnaute Barbatruc
Re : Mise en forme automatique

Bonjour Condors.s, salut Jean-Pierre,

En complément de la réponse de Jean-Pierre, tu peux aussi enregistrer une macro en choisissant la mise en forme automatique qui se rapproche le plus du résultat souhaité sans oublier de choisir les options, puis tu ajoutes quelques commandes pour modifier la présentation comme tu préfères.

@+

Gael
 

Caillou

XLDnaute Impliqué
Re : Mise en forme automatique

Bonjour à tous,

Comme le dis Jean-Pierre, je penses que tu peux y arriver en enregistrant une macro.
Il te faut juste prendre quelques précautions lors de l'eenregistrement.
Par exemple :
- Ctrl * pour sélectionner le tableau (quelquesoit sa taille)
- Enregistrer avec des références relatives (car a priori les 3 1ères lignes ont toujours la même mise en forme)
- Utiliser les touches de raccourci du style Ctrl Flèches pour les déplacements ou Shift Ctrl Flèches pour les sélections

Caillou
 

jeanpierre

Nous a quitté
Repose en paix
Re : Mise en forme automatique

Re,

Donc, il ne reste plus que la mise en forme proposée par Excel mais qui reste limitative jusqu'à la version 2003. Ensuite, je ne sais pas.

On peut effectivement envisager une macro plus générique à condition d'avoir un cahier des charges précis, mais, là, je n'ai jamais fait, donc je ne sais pas faire.

Mais au vu de ton tableau, il semble toutefois que les propositions d'Excel (la première Simple par exemple) puissent te satisfaire à condition de décocher Quadrillage dans Outils/Option onglet Affichage.

Edit : Bonjour Caillou
 

condors.s

XLDnaute Occasionnel
Re : Mise en forme automatique

Les mises en pages proposées par Excel ne sont pas mauvaises, mais ne répondent pas à la charte graphique de ma boite.
A chaque fois que je fais un tableau (50 fois par jour) je dois refaire toute la mise en page.
Je cherchais juste une astuce pour gagner du temps!!

Je tente la macro et vous dis.

Merci à tous
 

Caillou

XLDnaute Impliqué
Re : Mise en forme automatique

Ci-joint, une macro (un peu commentée)

Code:
Sub MacroMEFCondor()
  Dim Montableau As Range
  Dim NbLigne As Integer
  
  Set Montableau = Selection.CurrentRegion
  NbLigne = Montableau.Rows.Count
  
  'tout le tableau
  '----------------
  With Montableau
    'Motifs
    With .Interior
        .ColorIndex = 2
        .Pattern = xlSolid
    End With
    'Police
    With .Font
        .Name = "Arial"
        .Size = 10
    End With
  End With
  
  '1ere ligne du tableau
  '----------------------
  With Montableau.Rows(1)
    'Police
    With .Font
        .Name = "Arial"
        .Size = 8
        .Bold = True
        .ColorIndex = 38
    End With
    'Bordures
    With .Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
  End With
  
  '2eme ligne du tableau
  '----------------------
  With Montableau.Rows(2)
    'Police
    With .Font
        .Name = "Arial"
        .Size = 8
        .Bold = True
    End With
  End With
  
  '3eme ligne du tableau
  '----------------------
  With Montableau.Rows(3)
    'Police
    With .Font
        .Name = "Arial"
        .Size = 8
        .Bold = True
        .ColorIndex = 38
    End With
    'Bordures
    With .Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With .Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
  End With

  'Dernière ligne du tableau
  '----------------------
  With Montableau.Rows(NbLigne)
    'Police
    With .Font
        .Name = "Arial"
        .Size = 8
        .ColorIndex = 38
    End With
    'Bordures
    With .Borders(xlEdgeTop)
        .LineStyle = xlDash
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With .Borders(xlEdgeBottom)
        .LineStyle = xlDash
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
  End With

End Sub

Caillou
 

Caillou

XLDnaute Impliqué
Re : Mise en forme automatique

Attention, pour que la macro fonctionne correctement, il y a 2 règles à respecter :
1 - le curseur doit etre placé sur une cellule du tableau à mettre en forme
2 - le tableau est d'un bloc (pas de ligne/colonne entièrement vide)

Sinon pour affecter la macro à un bouton, tu peux utiliser l'outil "Bouton" de la barre d'outils "Formulaires", une fois le bouton tracé, une fenêtre de demander quelle macro affecter.

Pour exécuter la macro à l'ouverture il faut utiliser ThisWorkbook_Open
Private Sub Workbook_Open()
MacroMEFCondor
End Sub
mais là, je ne vois pas l'intérêt

Caillou
 

condors.s

XLDnaute Occasionnel
Re : Mise en forme automatique

En fait je voudrais avoir un bouton dans ma barre d'outil pour lancer la macro. Il faut donc que celle-ci ne soit pas liée à une seule feuille de travail mais soit installée par défaut dès que j'ouvre excel...
Merci
 

Caillou

XLDnaute Impliqué
Re : Mise en forme automatique

1. Affichage/Barre d'outils/Personnaliser/onglet Commandes/catégorie Macro
2. Faire glisser le bouton personnalisé vers la barre d'outils
3. Clic droit sur ce bouton dans la barre d'outils
- Affecter une macro (puis choisir la macro)
- Nom pour écrire le texte de l'info bulle
- Modifier l'image du bouton ou Editeur de bouton

Caillou
 

Gael

XLDnaute Barbatruc
Re : Mise en forme automatique

Bonjour à tous,

Ci-dessous une autre macro basée sur une zone sélectionnée manuellement. On sélectionne la zone contenant le tableau puis on exécute la macro:

Code:
Sub format_table()
Dim i As Integer
If Selection.Rows.Count < 7 Or Selection.Columns.Count < 3 Then Exit Sub
 
Selection.ClearFormats

With Selection.Interior
        .ColorIndex = 2
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
    
    With Selection
        .Interior.ColorIndex = 2
        .Rows(1).Borders(xlEdgeTop).Weight = xlThin
        .Rows(3).Borders(xlEdgeTop).Weight = xlThin
        .Rows(3).Borders(xlEdgeBottom).Weight = xlThin
        .Rows(3).HorizontalAlignment = xlRight
        .Rows(.Rows.Count).Borders(xlEdgeTop).Weight = xlHairline
        .Rows(.Rows.Count).Borders(xlEdgeBottom).Weight = xlHairline
        
        With Range(.Cells(1, 1), .Cells(3, .Columns.Count)).Font
            .Name = "Arial"
            .Size = 8
            .Bold = True
            .ColorIndex = 11
        End With
      
        With .Rows(.Rows.Count).Font
            .Name = "Arial"
            .Size = 8
            .ColorIndex = 11
        End With
        
        With Range(.Cells(4, 1), .Cells(.Rows.Count - 2, .Columns.Count))
            .Font.Name = "Arial"
            .Font.Size = 10
            .NumberFormat = "0"
        End With
        
     End With
End Sub

@+

Gael
 

Discussions similaires