Problème avec une macro pour un TCD
Lucie17_0626
Messages postés
62
Statut
Membre
-
Lucie17_0626 Messages postés 62 Statut Membre -
Lucie17_0626 Messages postés 62 Statut Membre -
Bonjour,
J'ai récupéré et modifié une macro pour créer et modifier un tableau croisé dynamique mais la macro n'apparaît pas dans mon choix de macro je ne peux pas là lancer du tout peut-être que le problème viens de mon code je ne sais pas. J'ai bien activer les macros de mon fichier.
Je vous met mon code en espérant que quelqu'un puisse m'aider merci d'avance
J'ai récupéré et modifié une macro pour créer et modifier un tableau croisé dynamique mais la macro n'apparaît pas dans mon choix de macro je ne peux pas là lancer du tout peut-être que le problème viens de mon code je ne sais pas. J'ai bien activer les macros de mon fichier.
Je vous met mon code en espérant que quelqu'un puisse m'aider merci d'avance
Option Explicit
Sub CreerTCD(ByVal sRngAddress As String, ByVal sRngStart As String, Optional ByVal tcdNom As String = "Tableau croisé dynamique 1")
' Créer un tcd dans une feuille existante à partir d'une plage de cellules
Dim tcd As PivotTable, tcdCache As PivotCache
' Plage de la source de données
Debug.Print "source de donnéees:", sRngAddress
' Cellule où insérer le tcd
Debug.Print "cellule de départ:", sRngStart
' Créer le cache du tcd
Set tcdCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=sRngAddress)
' Créer le tcd à partir du cache
Set tcd = tcdCache.CreatePivotTable( _
TableDestination:=sRngStart, _
TableName:=tcdNom)
' Ordonne le tcd en format tabulaire
tcd.RowAxisLayout xlTabularRow
End Sub
Sub AjouterChampTCD(ByVal sChamp As String, ByVal sZoneTcd As String, Optional ByVal pos As Variant = 1, Optional ByVal sNombreFormat As String = vbNullString, Optional ByVal tcdNom As String = vbNullString)
' Ajoute un champ au tcd dans la zone spécifiée: filtre, ligne, colonne ou valeur
Dim tcd As PivotTable, sTxtChamp As String
On Error GoTo Erreur
If tcdNom <> vbNullString Then
Set tcd = ActiveSheet.PivotTables(tcdNom)
Debug.Print "nom du tcd entré : " & tcdNom
Else
Set tcd = ActiveSheet.PivotTables(1)
Debug.Print "nom du tcd 1 de la feuille : " & tcd.Name
End If
Debug.Print "champ à ajouter :", sChamp
If tcd.PivotFields(sChamp).Orientation = xlHidden Then
Select Case sZoneTcd
' Ajoute un champ en Filtre, Ligne, Colonne
Case "Filtre"
tcd.PivotFields(sChamp).Orientation = xlPageField
Case "Colonne"
tcd.PivotFields(sChamp).Orientation = xlColumnField
Case "Ligne"
tcd.PivotFields(sChamp).Orientation = xlRowField
' Ajoute un champ en Valeur
Case "Somme"
sTxtChamp = "Somme de " & sChamp
tcd.AddDataField tcd.PivotFields(sChamp), sTxtChamp, xlSum
Case "Nombre"
sTxtChamp = "Nombre de " & sChamp
tcd.AddDataField tcd.PivotFields(sChamp), sTxtChamp, xlCount
Case "Moyenne"
sTxtChamp = "Moyenne de " & sChamp
tcd.AddDataField tcd.PivotFields(sChamp), sTxtChamp, xlAverage
Case "Max"
sTxtChamp = "Max de " & sChamp
tcd.AddDataField tcd.PivotFields(sChamp), sTxtChamp, xlMax
Case "Min"
sTxtChamp = "Min de " & sChamp
tcd.AddDataField tcd.PivotFields(sChamp), sTxtChamp, xlMin
Case "Produit"
sTxtChamp = "Produit de " & sChamp
tcd.AddDataField tcd.PivotFields(sChamp), sTxtChamp, xlProduct
Case Else
' par défaut
End Select
' Position dans la liste
'tcd.PivotFields(sChamp).Position = pos
' Format du champ de pivot
'If sNombreFormat <> vbNullString Then tcd.PivotFields(sChamp).NumberFormat = sNombreFormat
End If
Exit Sub
Erreur:
MsgBox "Le champ ne peut être ajouté.", vbExclamation, "Ajout du champ annulé"
End Sub
Sub SupprimerChampTCD(ByVal sChamp As String, Optional ByVal tcdNom As String = vbNullString)
' Supprime un champ du tcd
Dim tcd As PivotTable
If tcdNom <> vbNullString Then
Set tcd = ActiveSheet.PivotTables(tcdNom)
Else
Set tcd = ActiveSheet.PivotTables(1)
End If
Debug.Print "champ à supprimer :", sChamp
If tcd.PivotFields(sChamp).Orientation <> xlHidden Then
tcd.PivotFields(sChamp).Orientation = xlHidden
End If
End Sub
Sub ActualiserTCD(Optional ByVal tcdNom As String = vbNullString)
' Actualise un tcd
Dim tcd As PivotTable
If tcdNom <> vbNullString Then
Set tcd = ActiveSheet.PivotTables(tcdNom)
Else
Set tcd = ActiveSheet.PivotTables(1)
End If
' Actualise un seul tcd
tcd.PivotCache.Refresh
' Actualise tous les tcd
'ActiveWorkbook.RefreshAll
End Sub
Sub SupprimerUnTCD(Optional ByVal tcdNom As String = vbNullString)
On Error GoTo Erreur
If tcdNom <> vbNullString Then
ActiveSheet.PivotTables(tcdNom).TableRange2.Clear
Else
ActiveSheet.PivotTables(1).TableRange2.Clear
End If
Exit Sub
Erreur:
MsgBox "Le tableau croisé dynamique ''" & tcdNom & "'' n'a pas été trouvé.", vbExclamation, "Suppression annulée"
End Sub
Sub ChangerSourceTCD(ByVal sRngAddress As String, Optional ByVal tcdNom As String = vbNullString)
' Change la source de données d'un tcd à partir d'une plage de cellules
Dim tcd As PivotTable, SrcData As String
On Error GoTo Erreur
If tcdNom <> vbNullString Then
Set tcd = ActiveSheet.PivotTables(tcdNom)
Else
Set tcd = ActiveSheet.PivotTables(1)
End If
' Détermine la nouvelle source de données du tcd
SrcData = Application.Evaluate(sRngAddress).Address(ReferenceStyle:=xlR1C1, External:=True)
Debug.Print "nouvelle source:", sRngAddress
' Change la source de données
tcd.ChangePivotCache ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SrcData)
Exit Sub
Erreur:
MsgBox "Impossible de changer la source du TCD.", vbExclamation
End Sub
A voir également:
- Problème avec une macro pour un TCD
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tcd excel - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro maker - Télécharger - Divers Utilitaires
2 réponses
Bonsoir, ta macro est sans doute enregistrée ailleurs ! Tu l'as modifiée dans ton ancien classeur ?
Lucie17_0626
Messages postés
62
Statut
Membre
3
Elle est effectivement dans un a autre fichier mais dans celui que j'ai recréée j'ai modifier quelque information. Tu penses qu'en changeant le nom des macros ça pourrait s'arranger ?
Bonjour,
pourquoi tu le crées à chaque fois par macro ?
En général on le crée une fois, et on se contente de copier-coller les nouvelles données et de le rafraîchir.
En définissant éventuellement la nouvelle source si on n'a pas pu mettre les données en Tableau structuré.
eric
pourquoi tu le crées à chaque fois par macro ?
En général on le crée une fois, et on se contente de copier-coller les nouvelles données et de le rafraîchir.
En définissant éventuellement la nouvelle source si on n'a pas pu mettre les données en Tableau structuré.
eric
Je crée un TCD par mois avec les informations qui change mais la structure ne change pas la macro n'a pas de soucis de se côté là mais il me semble qu'elle est lié a un autre fichier et je voudrais qu'elle soit indépendante. J'ai tester la macro et un autre fichier s'ouvre automatiquement. Je ne sais pas trop comment j'ai fait pour les liés. Je suis débutante en macro.
C'est ce que j'ai fait plusieurs fois même mais lorsque je lance la macro pour justement créer automatiquement le TCD elle reste lié au fichier initiale.
Je me suis dis que peut-être dans le code j'avais mis une ligne qui lié les deux fichiers mais je n'ai rien vu.
Mais merci beaucoup pour ton aide.
Je me suis dis que peut-être dans le code j'avais mis une ligne qui lié les deux fichiers mais je n'ai rien vu.
Mais merci beaucoup pour ton aide.