VBA Modifier le Header d'un tableau structuré

Bonjour à tous

Modifier le header d'un tableau structuré:

J'utilise le code suivant qui fonctionne.

Range("ARD_Table05_DonneesResultat[[#Headers],[Nom]:[Prénom]]").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
End With

L'idée est de variabiliser et de remplacer les noms de colonnes par des variables. Ici, Nom et Prénom (qui sont les titres de colonnes).

Par exemple var1 = "Nom2"

var2 = 'Prénom2"

Mais je ne parviens pas à trouver la syntaxe qui va bien.

Quelqu'un aurait il une idée?

Merci à vous.

Bonjour,

[Pense à mettre ton code entre balises </>]

Peut-être ainsi :

Sub Select_Header()
Dim Var1, Var2
Var1 = "nom1": Var2 = "nom3"
With Range("ARD_Table05_DonneesResultat[[#Headers],[" & Var1 & "]:[" & Var2 & "]]")
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlBottom
End With
End Sub

Bonne apm

Merci beaucoup pour ta rapidité et ton efficacité, ça fonctionne très bien.

Ps: tu me dis de penser à mettre mon code entre balises, mais je ne comprends pas ce que tu veux dire.

Zar78

Comme tu peux le voir, tu peux facilement lire/copier mon code, car il est inséré entre les balises :

image

Mais en lisant la charte, ainsi que les fonctionnalités, tu en apprendras bien plus...

Bonnes lectures

Merci à toi, c'est plus clair maintenant.

Bonjour à tous

J'ai une question complémentaire, et je me suis posé la question de savoir si je devais utiliser ce même post ou en ouvrir un autre ?

Grâce à votre aide, j'ai pu écrire le code adéquat pour remplacer le nom des colonnes par des variables.

Mais je ne parviens pas à trouver le bon code pour remplacer le nom de la table.

Voici les exemples utilisés:

' Code généré par l'enregistreur de macro excel
  Range("ARD_TabAn2021[[#Data],[#Totals],[2021" & Chr(10) & "Cotisation]:[2021" & Chr(10) & "Butterfly]]"). _        'Exec OK

' Code avec remplacement du nom des colonnes par des variables  
' https://forum.excel-pratique.com/excel/vba-modifier-le-header-d-un-tableau-structure-181731
  Range("ARD_TabAn2021[[#Data],[#Totals],[" & ARD_NomColonneDebut & "]:[" & ARD_NomColonneFin & "]]"). _             'Exec OK

  Dim TableNomString As String
  Dim TableNomRange  As Range
      TableNomString = "ARD_TabAn2021"
  Set TableNomRange = Range(TableNomString)

' Code avec remplacement du nom de la table  KO
  Range("TableNomRange[[#Data],[#Totals],[" & ARD_NomColonneDebut & "]:[" & ARD_NomColonneFin & "]]"). _            'Exec KO Table
  Range("TableNomString[[#Data],[#Totals],[" & ARD_NomColonneDebut & "]:[" & ARD_NomColonneFin & "]]"). _           'Exec KO Table en string

  Range("[" & TableNomString & "][[#Data],[#Totals],[" & ARD_NomColonneDebut & "]:[" & ARD_NomColonneFin & "]]"). _ 'Exec KO
  Range("[" & TableNomRange & "][[#Data],[#Totals],[" & ARD_NomColonneDebut & "]:[" & ARD_NomColonneFin & "]]"). _  'Exec KO

Auriez vous une idée pour la syntaxe à utiliser pour variabiliser le nom de la table?

Et si quelqu'un connait un site, où ce type de syntaxe est documenté, je suis preneur.

Merci à vous.

Bonsoir,

Vous devez tout simplement utiliser la classe dédiée aux tableaux structurés = ListObject

ci-dessous exemple

Sub exemple()
    Dim Var1, Var2, Var3
    Var1 = "nom1": Var2 = "nom2"
    Var_tab_old = "ARD_TabAn2021": Var_tab_new = "ARD_TabAn2022"

    With Range(Var_tab_old).ListObject
        .HeaderRowRange.Value = Array(Var1, Var2) 'modif entêtes
        .Name = Var_tab_new 'modif nom tableau
    End With

End Sub

NB : voir mon tutoriel pour le code relatif à un tableau structuré : https://forum.excel-pratique.com/astuces/tableau-structure-instructions-vba-specifiques-a-cet-objet-...

Rechercher des sujets similaires à "vba modifier header tableau structure"