Aide pour creer un macro

Bonjour,

J'ai un petit soucis pour enegistrer un macro.

J'ai mis en piece jointe un fichier, avec plusieurs feuilles excel. Je voudrais creer un macro qui puisse etre utiliser dans chacune de ces feuilles afin de selectionnee la totalite des colonnes, y inserer un tableau (Inserer => Tableau) et enfin surligner la derniere colonne.

Vous remarquerez que le nombre de colonnes varient, ce qui rend la tache compliquee car mon macro selectionne toujours un nombre fixe de colonnes...

Si quelqu'un aurait la solution,

Merci d'avance

Yann

29sample.xlsb (17.59 Ko)

Je n'ai pas ouvert ton fichier mais essaye de nommer ta plage à modifier avec la formule decaler

Hey,

Merci pour ton aide.

Mais je n'ai pas vtraiment compris ta reponse

et voila qui devrait t'aider :

Option Explicit

Sub mise_en_forme_tableau()

' crée par ls039
' 19/08/2015

Dim i As Integer, lg As Integer, cl As Integer

For i = 1 To Sheets.Count 'boucle sur les onglets

    Sheets(i).Select 'selectionne l'onglet
    Cells(1, 1).Select 'selectionne la celulle de la première ligne et de la première colonne

    Range(Selection, Selection.End(xlDown)).Select 'selectionne les celulles non vide de la première ligne
    Range(Selection, Selection.End(xlToRight)).Select 'selectionne ensuite les lignes jusqu'a la dernière non vide
    ActiveSheet.ListObjects.Add(xlSrcRange, Range(Selection, Selection), , xlNo).Name = "Tableau" & i ' créer le tableau et le nomme en fonction du numéo d'onglet

cl = Cells(1, Columns.Count).End(xlToLeft).Column 'dtermine le num de la dernière colonne non vide
lg = Range("A1").CurrentRegion.Rows.Count 'dtermine le num de la dernière ligne non vide
Cells(lg, cl).Select ' selectionne la dernière celullue non vide (en bas à droite)
Range(Selection, Selection.End(xlUp)).Select 'selectionne la dernière colonne non vide

   'mise en forme de la colonne :
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent6
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With

Next i 'prochain onglet

End Sub

Bonjour,

Une autre approche à étudier.

Cdlt.

Public Sub DEMO()
Dim wb As Workbook
Dim ws As Worksheet
Dim lst As ListObject
Dim i As Long, c As Long

    Application.ScreenUpdating = False

    Set wb = ThisWorkbook

    For Each ws In wb.Worksheets
        Set lst = ws.ListObjects.Add(xlSrcRange, ws.Cells(1).CurrentRegion, , xlNo)
        i = i + 1
        With lst
            .Name = "Tableau " & i
            .TableStyle = ""
            c = .ListColumns.Count
            .ListColumns(c).Range.Interior.Color = vbYellow
        End With
    Next ws

    Set lst = Nothing
    Set wb = Nothing

End Sub

si le sujet est résolu merci de le notifier ...

Le deuxieme code ne marche pas, lorsque je lance le macro il me dit " a table cannot overlap another table". La ligne suivante est soulignee en jaune:

"Set lst = ws.ListObjects.Add(xlSrcRange, ws.Cells(1).CurrentRegion, , xlNo)"

Le premier marche en revenche tres bien, c'est exactement ce qu'il me fallait

Juste une mini petit probleme, quand le macro insere le tableau, il rajoute une ligne avec "colomn1", "column2", "column 3", etc alors que j'aimerais que la premiere ligne du tableau, ou on peut appliquer les filtres, corresponde a la premiere ligne de la fiche excel.

Je sais pas si je me suis fait comprendre,

Merci beaucoup en tout cas

Re,

Ton fichier avec la procédure envoyée précédemment (procédure DEMO)

Ou est l'erreur?

Ou alors, ton vrai fichier est différent de ton exemple...Vu le message d'alerte...

Cdlt.

30sample.xlsb (16.60 Ko)

Salut,

remplace cette ligne :

ActiveSheet.ListObjects.Add(xlSrcRange, Range(Selection, Selection), , xlNo).Name = "Tableau" & i

par celle ci, il n'y a que le dernier paramètre qui change, xlYEs au lieu de xlNo :

ActiveSheet.ListObjects.Add(xlSrcRange, Range(Selection, Selection), , xlYes).Name = "Tableau" & i

Un grand Merci. Pile ce qu'il me fallait !

Rechercher des sujets similaires à "aide creer macro"