xl2003.TCD.appliquerla selectiond'un item de colonne du tcd source au tcd cible

Accordially

XLDnaute Nouveau
Bonjour,
Ce qui fonctionne : appliquer à mon champ de page(TCD source) la valeur sélectionnée dans une liste déroulante, et propager cette sélection aux autres TCD du fichier.
Maintenant, je bloque sur la manière de rédiger le code pour que lorsque j'exclus un item d'un champ de colonne( ou de ligne) dans mon TCD source, ce changement prenne effet dans les autres TCD du mon Fichier.

Est-ce que vous pouvez m'aider ?

Ça serait magnifique.
Afin de donner une piste, et peut-être, aider quelqu'un d'autre voici la première partie du code qui fonctionne :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Cette macro permet de changer tous les Champs de page "DateRéférence" des TCD du fichier
'en fonction de la valeur de la cellule D2
Dim ws As Worksheet
Dim pt As PivotTable
Dim pi As PivotItem

Dim strField As String

strField = "DateRéférence"

On Error Resume Next
Application.EnableEvents = False
Application.ScreenUpdating = False

    If Target.Address = Range("D2").Address Then 'adresse de la cellule où l'on choisit la date à filtrer
        
        For Each ws In ThisWorkbook.Worksheets
            For Each pt In ws.PivotTables
                With pt.PageFields(strField)
                    For Each pi In .PivotItems
                        If pi.Value = Target.Value Then
                            .CurrentPage = Target.Value
                            Exit For
                        Else          'sinon, afficher tous les enregistrements
                            .CurrentPage = "(Tous)"
                        End If
                    Next pi
                End With
            Next pt
        Next ws
    
    End If

Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Merci à l'avance de votre disponibilité

Accordially
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : xl2003.TCD.appliquerla selectiond'un item de colonne du tcd source au tcd cible

Bonjour cotcot,
Une proposition (un peu barbare) qui fonctionne sur l'exemple.
Remplacer la fin du code par
Code:
[COLOR=blue]With[/COLOR] TCD1
  [COLOR=green] 'On liste les items[/COLOR]
    [COLOR=blue]For[/COLOR] i = 1 [COLOR=blue]To[/COLOR] .PivotItems.Count
      [COLOR=green] 'Si l'item n'est pas visible dans le TCD "Maitre"[/COLOR]
        [COLOR=blue]If[/COLOR] .PivotItems(i).Visible = [COLOR=blue]False Then[/COLOR]
       [COLOR=green]'***En cas d'erreure on saute la ligne***[/COLOR]
       [COLOR=blue]On Error Resume Next[/COLOR]
      [COLOR=green] 'On masque le même item dans le TCD2[/COLOR]
            TCD2.PivotItems(.PivotItems(i).Caption).Visible = [COLOR=blue]False[/COLOR]
        [COLOR=blue]End If[/COLOR]
    [COLOR=blue]Next[/COLOR] i
[COLOR=blue]End With[/COLOR]
 

cotcot

XLDnaute Junior
Re : xl2003.TCD.appliquerla selectiond'un item de colonne du tcd source au tcd cible

Re Efge, re à toutes et à tous!
Désolé de répondre si tard, je n'avais pas internet ou je me trouvais et j'étais en congés!
Je test de suite ce que tu m'as donné !

Merci encore pour l'intéret que tu portes à ma requête !

Et bonne journée à tous !!
 

cotcot

XLDnaute Junior
Re : xl2003.TCD.appliquerla selectiond'un item de colonne du tcd source au tcd cible

Et bien cela est parfait je crois :)

Je voulais savoir si c'était possible que, lorsque je modifie le champ "objet du marché", et bien le champ "numéro de marché" se modifie pour ainsi impacter le deuxième TCD? Si cela n'est pas possible et bien je me contenterais de cette solution qui est déjà très bien!!!

Dans tout les cas merci encore!! :)

J'aurais cependant une dernière modification à effectuer sur ce code. En fait je voudrais que lorsque l'élément n'existe pas dans le TCD 1 et bien qu'il me renvoit une erreure ou un message enfin qui ne me renvoie pas les éléments vides.

Merci encore Efgé :)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 242
Messages
2 086 536
Membres
103 244
dernier inscrit
lavitzdecreu