VBA - Copier le style d'un TCD d'un fichier vers un autre

Bonjour à tous,

Après quelques recherches, je me suis rendu à l'évidence. Excel ne permet pas de copier un style de TCD personnalisé d'un classeur à un autre. (Si vous pouvez me contredire, n'hésitez surtout pas ^^).

Je me suis donc mis en quête d'un script qui me permettrait de le faire.
Finalement j'ai codé ceci :

Sub importStyleTCD()
    Dim i As Integer
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim oldStyleTCD As TableStyle
    Dim newStyleTCD As TableStyle

    Set wb1 = ActiveWorkbook
    Set oldStyleTCD = wb1.TableStyles("old Style TCD") 'Mon style à copier
    For i = 1 To Workbooks.Count
        Set wb2 = Workbooks(i)
        If wb1.Name <> wb2.Name Then
            Set newStyleTCD = wb2.TableStyles.Add("new Style TCD")
            Set newStyleTCD = oldStyleTCD
        End If
    Next i
End Sub

Malheureusement, mon nouveau style de TCD sur le fichier de destination est absent de toute mise en forme. Il n'apparait même pas dans la liste des styles de TCD alors que la propriété newStyleTCD.ShowAsAvailablePivotTableStyle = True

Je me demande donc comment faire une copie "profonde" de mon style de TCD, bien distincte de mon style d'origine mais avec toutes les propriétés de mise en page qui sont copiées... Et là, je fais appel à vos connaissances.

Merci pour votre aide.

Et bonne journée,

Bonjour,

Copie/Colle ton TCD sur l'autre fichier, le style crée va apparaitre. Non ?

Bonjour JB,

Malheureusement non. Le style n'est justement pas copié. Contrairement par exemple au style d'un tableau classique. Ce qui est d'autant plus surprenant que les style de TCD tout comme les styles de tableau sont tout deux des objets de type "TableStyle".

Bonjour

De deux choses l'une :

  • si ce sont des styles purement Excel et si tu ne les as pas dans les 2 classeurs c'est soit le thème qui n'est pas le même soit le format de fichier
  • si ce sont des styles créés à partir d'un style Excel, il est possible de créer un template xlt du classeur pour pouvoir utiliser ce style dans d'autres classeurs

Bonjour JB,

Malheureusement non. Le style n'est justement pas copié. Contrairement par exemple au style d'un tableau classique. Ce qui est d'autant plus surprenant que les style de TCD tout comme les styles de tableau sont tout deux des objets de type "TableStyle".

Bonjour,

Chez moi ça fonctionne, bizarre. Nous disposons de la même version pourtant

Je réponds à ce sujet avec un peu de retard.

Bonjour

De deux choses l'une :

si ce sont des styles purement Excel et si tu ne les as pas dans les 2 classeurs c'est soit le thème qui n'est pas le même soit le format de fichier

si ce sont des styles créés à partir d'un style Excel, il est possible de créer un template xlt du classeur pour pouvoir utiliser ce style dans d'autres classeurs

Bonjour 78chris,

Ce ne sont pas des styles purement Excel dans le sens où le style que j'essaye de copier est un style totalement personnalisé (pas un au choix parmi les styles proposés par Excel).

Mon TCD

styletcd1

Mon style personnalisé

styletcd2

De fait, sur le second fichier, je n'ai pas ce style personnalisé. Tout le but de la manip est justement de copier ce style du fichier 1 vers le fichier 2. Par contre, le fichier 1 comme le fichier 2 ont le même thème général (Office) et le même format de fichier (.xlsx)

Idéalement le fichier 2 aurait dû être créé sur base d'un fichier .xltx contenant ce style personnalisé (D'ailleurs, ce fichier existe) mais... ce n'est pas le cas, il s'agit d'anciens fichiers. J'aimerais maintenant pouvoir uniformiser mes tableaux préexistants sans devoir, dans chacun d'entre eux, recréer le style personnalisé.

Voilà pour les quelques précisions.

Bonjour,

Chez moi ça fonctionne, bizarre. Nous disposons de la même version pourtant

Bonjour JB_,

Cela fonctionne en effet lorsque je copie un TCD avec un style connu par les deux fichiers Excel (càd un parmi la liste des styles proposés par Excel). Mais pas lorsqu'il s'agit d'un style personnalisé. En tout cas pas chez moi Je viens de refaire la manip pour m'en assurer. En utilisant deux fichiers .xlsx. Un avec mon style personnalisé, l'autre sans, et en faisant un simple copié collé du TCD du premier vers le deuxième... Résultat, TCD vierge de toute mise en forme (on dirait qu'il est tout nu )

styletcdtoutnu

Merci pour vos réponses :)

Bonjour Catab,

C'est normal, avec ma méthode et en période de canicule, le TCD se met à l'aise

Tu peux aussi essayer de dupliquer l'onglet où ton TCD est présent sur ton autre classeur...

Ou sinon, duplique ton fichier Excel carrément, tu auras juste à changer tes données sources.

La vache... Ca fonctionne... J'ai copié collé la feuille, et ce coup-ci, le TCD a gardé sa mise en page. Et ça a ajouté mon style de TCD au fichier. Du coup je peux l'appliquer sur tous les autres TCD du fichier...

Si simple, comment n'y ai-je pas pensé

Je te remercie pour le coup de main.

Bonne fin de journée,

Rechercher des sujets similaires à "vba copier style tcd fichier"