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

mise en forme conditionnelle et tableau croisé

12 réponses
Avatar
Roberto
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement

10 réponses

1 2
Avatar
LSteph
Bonjour,

Si une plage doit s'étendre à plus de lignes ou colonnes a priori je
ne dois rien avoir autour sinon on va l'écraser
j'essayerai donc simplement d'appliquer ma MEFC à la plage
potentiellement maximale de mon tableau.

Cordialement.

--
LSteph


On 8 sep, 15:30, "Roberto" wrote:
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tablea u
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement
Avatar
michdenis
Bonjour,

Dans le module de la feuille où est le TDC, ajoute cette procédure.
À chaque fois que tu mets à jour ton TDC, la procédure est déclenchée.
La mise à forme conditionnelle est mise à jour sur l'ensemble de la plage
du champ retenu.
Évidemment, tu devras modifier un peu la procédure pour qu'elle
reflète l'environnement de ton application.

'-------------------------------
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim Pt As PivotTable, Pf As PivotField, X As String
'Tu peux remplacer le numéro du TDC de la feuille
'par son nom
Set Pt = Me.PivotTables(1)

'Test pour vérifier que la mise à jour s'adresse au bon TDC
'de la feuille si tu as plus d'un TDC dans cette dernière.
If Pt.Name = Target.Name Then
'Tu peux remplacer le numéro du champ par son nom
Set Pf = Pt.PivotFields(1)
'X contient l'adresse de la plage du champ
X = Pf.DataRange.Offset(, 1).Address
With Me.Range(X)
'Supprime l'ancienne mise en forme conditionnelle
.FormatConditions.Delete
'Ajoute la nouvelle mise en forme conditionnelle
With .FormatConditions
.Add Type:=xlExpression, Formula1:="=$B$6>5"
End With
'Le format de la mise en forme conditionnelle
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.399945066682943
End With
End With
End If
End Sub
'-------------------------------

--
MichD
--------------------------------------------


"Roberto" a écrit dans le message de groupe de discussion :
4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement
Avatar
DanielCo
Bonjour.
Regarde le fichier suivant :
http://www.cijoint.fr/cjlink.php?file=cj201009/cijIPgp2EZ.pdf
C'est en anglais, mais il y a des dessins. C'est ppour XL2007 et
postérieur.
Cordialement.
Daniel


Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement
Avatar
LSteph
Evidemment si on peut faire très compliqué pourquoi faire simple?

On 8 sep, 16:35, "michdenis" wrote:
Bonjour,

Dans le module de la feuille où est le TDC, ajoute cette procédure.
À chaque fois que tu mets à jour ton TDC, la procédure est déclen chée.
La mise à forme conditionnelle est mise à jour sur l'ensemble de la p lage
du champ retenu.
Évidemment, tu devras modifier un peu la procédure pour qu'elle
reflète l'environnement de ton application.

'-------------------------------
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim Pt As PivotTable, Pf As PivotField, X As String
'Tu peux remplacer le numéro du TDC de la feuille
'par son nom
Set Pt = Me.PivotTables(1)

'Test pour vérifier que la mise à jour s'adresse au bon TDC
'de la feuille si tu as plus d'un TDC dans cette dernière.
If Pt.Name = Target.Name Then
    'Tu peux remplacer le numéro du champ par son nom
    Set Pf = Pt.PivotFields(1)
    'X contient l'adresse de la plage du champ
    X = Pf.DataRange.Offset(, 1).Address
    With Me.Range(X)
        'Supprime l'ancienne mise en forme conditionnelle
        .FormatConditions.Delete
        'Ajoute la nouvelle mise en forme conditionnelle
        With .FormatConditions
            .Add Type:=xlExpression, Formula1:="=$B$6>5 "
        End With
        'Le format de la mise en forme conditionnelle
        With .FormatConditions(1).Font
            .Bold = True
            .Italic = False
            .ThemeColor = xlThemeColorLight2
            .TintAndShade = 0.399945066682943
        End With
    End With
End If
End Sub
'-------------------------------

--
MichD
--------------------------------------------

"Roberto" a écrit dans le message de group e de discussion :
4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tablea u
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement
Avatar
michdenis
On peut toujours simplifier... au lieu de refaire la mise en forme
conditionnelle dans le code, on peut simplement réaffecter l'étendue
de la plage de cellules d'un "Nom" (insertion / nom / définir) que l'on
a utilisé dans la mise en forme conditionnelle...

'------------------------
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim Pt As PivotTable, Pf As PivotField, X As String
'Tu peux remplacer le numéro du TDC de la feuille
'par son nom
Set Pt = Me.PivotTables(1)

'Test pour vérifier que la mise à jour s'adresse au bon TDC
'de la feuille si tu as plus d'un TDC dans cette dernière.
If Pt.Name = Target.Name Then
'Tu peux remplacer le numéro du champ par son nom
Set Pf = Pt.PivotFields(1)
Pf.DataRange.Name ="NomDeLaPlageDeCellules"
End If
End Sub
'-------------------------------

--
MichD
--------------------------------------------


"LSteph" a écrit dans le message de groupe de discussion :

Evidemment si on peut faire très compliqué pourquoi faire simple?

On 8 sep, 16:35, "michdenis" wrote:
Bonjour,

Dans le module de la feuille où est le TDC, ajoute cette procédure.
À chaque fois que tu mets à jour ton TDC, la procédure est déclenchée.
La mise à forme conditionnelle est mise à jour sur l'ensemble de la plage
du champ retenu.
Évidemment, tu devras modifier un peu la procédure pour qu'elle
reflète l'environnement de ton application.

'-------------------------------
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim Pt As PivotTable, Pf As PivotField, X As String
'Tu peux remplacer le numéro du TDC de la feuille
'par son nom
Set Pt = Me.PivotTables(1)

'Test pour vérifier que la mise à jour s'adresse au bon TDC
'de la feuille si tu as plus d'un TDC dans cette dernière.
If Pt.Name = Target.Name Then
'Tu peux remplacer le numéro du champ par son nom
Set Pf = Pt.PivotFields(1)
'X contient l'adresse de la plage du champ
X = Pf.DataRange.Offset(, 1).Address
With Me.Range(X)
'Supprime l'ancienne mise en forme conditionnelle
.FormatConditions.Delete
'Ajoute la nouvelle mise en forme conditionnelle
With .FormatConditions
.Add Type:=xlExpression, Formula1:="=$B$6>5"
End With
'Le format de la mise en forme conditionnelle
With .FormatConditions(1).Font
.Bold = True
.Italic = False
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.399945066682943
End With
End With
End If
End Sub
'-------------------------------

--
MichD
--------------------------------------------

"Roberto" a écrit dans le message de groupe de discussion :
4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement
Avatar
LSteph
;o) Non plus simplement cette solution que j'indiquais .. sans avoir
besoin de code ni verifier ceci:

'de la feuille si tu as plus d'un TDC dans cette dernière



Si Roberto à un TCD en A:E 1:50 et qu'il sait que son tcd pourrait
même aller jusqu'en X500
Il n'est tout de même pas fou et ne va pas mettre un second tableau
dans la même plage

D'où cette suggestion:
Appliquer la MEFC à la plage maximale du tcd soit dans l'exemple
a1:x500

Cordialement.

--
LSteph

On 8 sep, 21:11, "michdenis" wrote:
On peut toujours simplifier... au lieu de refaire la mise en forme
conditionnelle dans le code, on peut simplement réaffecter l'étendue
de la plage de cellules d'un "Nom" (insertion / nom / définir) que l'on
a utilisé dans la mise en forme conditionnelle...

'------------------------
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim Pt As PivotTable, Pf As PivotField, X As String
'Tu peux remplacer le numéro du TDC de la feuille
'par son nom
Set Pt = Me.PivotTables(1)

'Test pour vérifier que la mise à jour s'adresse au bon TDC
'de la feuille si tu as plus d'un TDC dans cette dernière.
If Pt.Name = Target.Name Then
    'Tu peux remplacer le numéro du champ par son nom
    Set Pf = Pt.PivotFields(1)
    Pf.DataRange.Name ="NomDeLaPlageDeCellules"
End If
End Sub
'-------------------------------

--
MichD
--------------------------------------------

"LSteph" a écrit dans le message de groupe de disc ussion :

Evidemment si on peut faire très compliqué pourquoi faire simple?

On 8 sep, 16:35, "michdenis" wrote:



> Bonjour,

> Dans le module de la feuille où est le TDC, ajoute cette procédure.
> À chaque fois que tu mets à jour ton TDC, la procédure est décl enchée.
> La mise à forme conditionnelle est mise à jour sur l'ensemble de la plage
> du champ retenu.
> Évidemment, tu devras modifier un peu la procédure pour qu'elle
> reflète l'environnement de ton application.

> '-------------------------------
> Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

> Dim Pt As PivotTable, Pf As PivotField, X As String
> 'Tu peux remplacer le numéro du TDC de la feuille
> 'par son nom
> Set Pt = Me.PivotTables(1)

> 'Test pour vérifier que la mise à jour s'adresse au bon TDC
> 'de la feuille si tu as plus d'un TDC dans cette dernière.
> If Pt.Name = Target.Name Then
>     'Tu peux remplacer le numéro du champ par son nom
>     Set Pf = Pt.PivotFields(1)
>     'X contient l'adresse de la plage du champ
>     X = Pf.DataRange.Offset(, 1).Address
>     With Me.Range(X)
>         'Supprime l'ancienne mise en forme conditionnelle
>         .FormatConditions.Delete
>         'Ajoute la nouvelle mise en forme conditionnelle
>         With .FormatConditions
>             .Add Type:=xlExpression, Formula1:="=$B$6 >5"
>         End With
>         'Le format de la mise en forme conditionnelle
>         With .FormatConditions(1).Font
>             .Bold = True
>             .Italic = False
>             .ThemeColor = xlThemeColorLight2
>             .TintAndShade = 0.399945066682943
>         End With
>     End With
> End If
> End Sub
> '-------------------------------

> --
> MichD
> --------------------------------------------

> "Roberto" a écrit dans le message de gro upe de discussion :
> 4c87900c$0$5389$
> Bonjour,
> Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tabl eau
> croisé dynamique qui s'étendrait à l'actualisation du tableau, su r les
> éléments qui se seraient ajoutés en dehors de la plage définie au départ de
> la mise en place du format conditionnel.

> Merci

> Cordialement- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -
Avatar
Roberto
Merci beaucoup pour toutes vos réponses.

Très cordialement

Roberto


"Roberto" a écrit dans le message de groupe de
discussion : 4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ
de la mise en place du format conditionnel.

Merci

Cordialement



Avatar
Roberto
Bonjour,

Merci pour vos réponses, mais Daniel ,pourrais-tu m'expliquer davantage la
syntaxe de
la formule :

- L'adresse dans la boite de dialogue dans le champ Apply Rule to : est R5C7
ça correspond à quelle cellule dans le TCD de l'exemple ?
- Dans la formule =RC/RC[-1]>1.1 - RC c'est la colonne RC je suppose ?
- Les crochets et le point comme séparateur décimal sont-ils le fait de
Version anglaise ?

Merci




"Roberto" a écrit dans le message de groupe de
discussion : 4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ
de la mise en place du format conditionnel.

Merci

Cordialement



Avatar
DanielCo
Ceci dit, tu peux utiliser une formule en références A1.
Daniel


Bonjour,

Merci pour vos réponses, mais Daniel ,pourrais-tu m'expliquer davantage la
syntaxe de
la formule :

- L'adresse dans la boite de dialogue dans le champ Apply Rule to : est R5C7
ça correspond à quelle cellule dans le TCD de l'exemple ?
- Dans la formule =RC/RC[-1]>1.1 - RC c'est la colonne RC je suppose ?
- Les crochets et le point comme séparateur décimal sont-ils le fait de
Version anglaise ?

Merci




"Roberto" a écrit dans le message de groupe de
discussion : 4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un tableau
croisé dynamique qui s'étendrait à l'actualisation du tableau, sur les
éléments qui se seraient ajoutés en dehors de la plage définie au départ de
la mise en place du format conditionnel.

Merci

Cordialement



Avatar
Roberto
Ok, merci encore, mais dans cet exemple le format conditionnel s'applique
sur la même plage de cellules que s'applique la condition or, dans mon cas,
je veux appliquer le format conditionnel sur la 1ère colonne de mon TCD qui
contient les éléments en ligne du tableau, ces élément sont des noms de
vendeurs et la condition s'applique sur les résultats qu'ils ont obtenus et
qui sont dans la colonne total du tableau, les éléments en colonne sont des
départements. Ces noms de vendeurs en lignes sont triés par ordre alpha >,
le dernier de la liste s'appelle Robert, si j'ajoute dans ma base TOTO,
après actualisation du tableau, TOTO vient s'ajouter en fin de liste en
dehors de la plage définie au départ pour la création du format
conditionnel.

Je cherche une solution hors VBA, c'est plus pour le jeu intellectuel que
pour améliorer l'interprétation des résultats.

Merci encore

Roberto

"DanielCo" a écrit dans le message de groupe de
discussion : i6d9g7$1ea$
Ceci dit, tu peux utiliser une formule en références A1.
Daniel


Bonjour,

Merci pour vos réponses, mais Daniel ,pourrais-tu m'expliquer davantage
la syntaxe de
la formule :

- L'adresse dans la boite de dialogue dans le champ Apply Rule to : est
R5C7
ça correspond à quelle cellule dans le TCD de l'exemple ?
- Dans la formule =RC/RC[-1]>1.1 - RC c'est la colonne RC je suppose ?
- Les crochets et le point comme séparateur décimal sont-ils le fait de
Version anglaise ?

Merci




"Roberto" a écrit dans le message de groupe
de discussion : 4c87900c$0$5389$
Bonjour,
Y-a-t'il moyen d'appliquer une mise en forme conditionnelle sur un
tableau croisé dynamique qui s'étendrait à l'actualisation du tableau,
sur les éléments qui se seraient ajoutés en dehors de la plage définie
au départ de la mise en place du format conditionnel.

Merci

Cordialement









1 2