Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajuster mes colonnes en fonction de l'actualisation de mon TCD

4 réponses
Avatar
Christine Imbeault
Bonjour à tous,

TCC Mes fonctions
colonne1 colonne2 Fonction1 Fonctions 2

J'ai une fois de plus besoin de vos talents. Je travaille sous Excel 2003.
J'ai créé un tableau croisé dynamique et j'ai ajouté des fonctions dans les
colonnes à côté de mon tableau croisé dynamique. Lorsque j'actualise ou
ajoute des éléments en colonne dans mon tcd, ce dernier affiche plus ou moins
de colonne.

Mon problème

1. si le tcd affiche plus de colonne, il écrase mes fonctions. Y a-t-il un
moyen pour déplacer mes colonnes de fonctions en fonction du nombre de
colonne ajouter dans mon tcd ?

2. Si le tableau affiche moins de colonne, il y a des colonnes vides entre
mon tcd et mes fonctions. Y a-t-il un moyen pour déplacer mes colonnes de
fonctions en fonction du nombre de colonne enlever de mon tcd ?

Merci et bonne fin de journée
Christine

4 réponses

Avatar
Laurent
Bonjour,
La solution la plus simple serait de placer les fonctions avant le TCD,
comme cela pas de risque d'écrasement.
Par contre s'il ya plus de lignes dans le TCD il faudra recopier les
fonctions.

Sinon essayer d'inserer les fonctions dans le TCD.

Pour ma part, je détache complètement les focntions du TCD ( souvent sur une
autre feuille)

Laurent

"Christine Imbeault" a écrit :

Bonjour à tous,

TCC Mes fonctions
colonne1 colonne2 Fonction1 Fonctions 2

J'ai une fois de plus besoin de vos talents. Je travaille sous Excel 2003.
J'ai créé un tableau croisé dynamique et j'ai ajouté des fonctions dans les
colonnes à côté de mon tableau croisé dynamique. Lorsque j'actualise ou
ajoute des éléments en colonne dans mon tcd, ce dernier affiche plus ou moins
de colonne.

Mon problème

1. si le tcd affiche plus de colonne, il écrase mes fonctions. Y a-t-il un
moyen pour déplacer mes colonnes de fonctions en fonction du nombre de
colonne ajouter dans mon tcd ?

2. Si le tableau affiche moins de colonne, il y a des colonnes vides entre
mon tcd et mes fonctions. Y a-t-il un moyen pour déplacer mes colonnes de
fonctions en fonction du nombre de colonne enlever de mon tcd ?

Merci et bonne fin de journée
Christine



Avatar
MichDenis
L'idéal, c'est de créer des champs calculer... ça évite les difficultés que tu éprouves
lorsque tu mets à jour ton tdc.
Toutefois, il y a un événement feuille qui s'exécute lorsque tu mets ton TDC à jour. On
peut utiliser cet événement
pour mettre aussi à jour les 2 colonnes fonctions.
Voici un petit exemple de ce que cela peut donner :

En premier lieu, créé une plage nommée au niveau de la feuille
Dans le code je prends le nom "Feuil3!Denis" et ce nom fait
référence au 2 colonnes de droite juste à côté du TDC y compris
la ligne d'étiquette. mais excluant les lignes du champ page si
il en existe un.
J'ai aussi supposé que ton TDC avait le même point d'encrage
dans la feuille concernant la première colonne de gauche.

Attention : le service de messagerie peut avoir coupé des lignes
de code à des endroit inopportuns.

Tester rapidement... ça l'air de fonctionner !
'--------------------------------------------
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim Rg As Range, X As String
'Définis un variable objet Range de la dimension
'du pivottable ligne d'étiquette et les totaux
'moins les lignes du champ page
Set Rg = Target.TableRange1
'Redimensionne cette variable pour qu'elle soit égale
'au 2 colonnes à côté du pivottable (le "-3" inclus
'la ligne de sous-totaux... faut adapter si le pivottable n'en a pas.
'Set Rg = Rg.Offset(2, Rg.Columns.Count).Resize(Rg.Rows.Count - 3, Rg.Columns.Count - 1)
'Si l'intersection est nulle
X = Names("Feuil3!Denis")
R = Replace(Right(X, Len(X) - 1), """", "")
If Intersect(Rg, Range(R)) Is Nothing Then
'Vider l'ancienne plage
Range(R).Clear
'modifie l'adresse de la plage nommée
Names.Add Me.Name & "!Denis", Rg.Resize(, 2).Address ', False
Set Rg = Rg.Offset(2, Rg.Columns.Count).Resize(Rg.Rows.Count - 3, Rg.Columns.Count -
1)
'Copie les fonctions (celle affichée n'est qu'un exemple
'comment recopie la dernière colonne du tdc
Rg.Offset(-1) = "Étiquette1"
Rg.Offset(-1, 1) = "Étiquette2"
Rg.Formula = "=" & Rg.Offset(, -1).Address(0, 0)
Rg.Offset(, 1).Formula = "=Laformule"
Rg.Resize(, 2).EntireRow.AutoFit

ElseIf Not Intersect(Rg, Range(R)) Is Nothing Then
If Union(Rg, Range(R)).Address <> Rg.Address Then
Rg.Offset(, Rg.Columns.Count).Clear
Names.Add Me.Name & "!Denis", Rg.Resize(, 2).Address ', False
Set Rg = Rg.Offset(2, Rg.Columns.Count).Resize(Rg.Rows.Count - 3,
Rg.Columns.Count - 1)
Rg.Offset(-1) = "Étiquette1"
Rg.Offset(-1, 1) = "Étiquette2"
Rg.Formula = "=" & Rg.Offset(, -1).Address(0, 0)
Rg.Offset(, 1) = "=Laformule"
Rg.Resize(, 2).EntireRow.AutoFit
Else
Names.Add Me.Name & "!Denis", Rg.Resize(, 2).Address ', False
Set Rg = Rg.Offset(2, Rg.Columns.Count).Resize(Rg.Rows.Count - 3,
Rg.Columns.Count - 1)
Rg.Offset(-1) = "Étiquette1"
Rg.Offset(-1, 1) = "Étiquette2"
Rg.Formula = "=" & Rg.Offset(, -1).Address(0, 0)
Rg.Offset(, 1) = "=Laformule"
Rg.Resize(, 2).EntireRow.AutoFit
End If
End If
End Sub
'--------------------------------------------



"Christine Imbeault" a écrit dans le message
de groupe de discussion :
Bonjour à tous,

TCC Mes fonctions
colonne1 colonne2 Fonction1 Fonctions 2

J'ai une fois de plus besoin de vos talents. Je travaille sous Excel 2003.
J'ai créé un tableau croisé dynamique et j'ai ajouté des fonctions dans les
colonnes à côté de mon tableau croisé dynamique. Lorsque j'actualise ou
ajoute des éléments en colonne dans mon tcd, ce dernier affiche plus ou moins
de colonne.

Mon problème

1. si le tcd affiche plus de colonne, il écrase mes fonctions. Y a-t-il un
moyen pour déplacer mes colonnes de fonctions en fonction du nombre de
colonne ajouter dans mon tcd ?

2. Si le tableau affiche moins de colonne, il y a des colonnes vides entre
mon tcd et mes fonctions. Y a-t-il un moyen pour déplacer mes colonnes de
fonctions en fonction du nombre de colonne enlever de mon tcd ?

Merci et bonne fin de journée
Christine
Avatar
MichDenis
Petite correction : à trois endroits dans le code,
il y a cette ligne de code :
Rg.Resize(, 2).EntireRow.AutoFit
Il faut corriger pour :
Rg.Resize(, 2).EntireColumn.AutoFit
Avatar
Christine Imbeault
Bonjour,

Merci de la réponse, elle est bien utile.

Merci

"Laurent" a écrit :

Bonjour,
La solution la plus simple serait de placer les fonctions avant le TCD,
comme cela pas de risque d'écrasement.
Par contre s'il ya plus de lignes dans le TCD il faudra recopier les
fonctions.

Sinon essayer d'inserer les fonctions dans le TCD.

Pour ma part, je détache complètement les focntions du TCD ( souvent sur une
autre feuille)

Laurent

"Christine Imbeault" a écrit :

> Bonjour à tous,
>
> TCC Mes fonctions
> colonne1 colonne2 Fonction1 Fonctions 2
>
> J'ai une fois de plus besoin de vos talents. Je travaille sous Excel 2003.
> J'ai créé un tableau croisé dynamique et j'ai ajouté des fonctions dans les
> colonnes à côté de mon tableau croisé dynamique. Lorsque j'actualise ou
> ajoute des éléments en colonne dans mon tcd, ce dernier affiche plus ou moins
> de colonne.
>
> Mon problème
>
> 1. si le tcd affiche plus de colonne, il écrase mes fonctions. Y a-t-il un
> moyen pour déplacer mes colonnes de fonctions en fonction du nombre de
> colonne ajouter dans mon tcd ?
>
> 2. Si le tableau affiche moins de colonne, il y a des colonnes vides entre
> mon tcd et mes fonctions. Y a-t-il un moyen pour déplacer mes colonnes de
> fonctions en fonction du nombre de colonne enlever de mon tcd ?
>
> Merci et bonne fin de journée
> Christine
>