Bonjour à tous,
Je relance ce topic, car bien que la macro développée ci-dessus réponde parfaitement à mes attentes, j'ai pu constater quelques petits "bugs" à l'usage depuis quelques mois.
Il me faut parfois relancer une deuxième fois la macro afin que la sélection des communes (via codes INSEE) se fasse correctement, sinon de manière aléatoire la macro me laissait quelques communes sélectionné issus d'une précédente requête.
Par exemple paris 1er arrondissement issu d'une précédente requête restait sélectionné dans le TCD alors que ma nouvelle requête n'intégrait que 2 communes de Seine et Marne. Pour corriger cela, je relance donc une 2eme fois la macro.
Afin de palier à ce problème j'ai donc doublé mon code au sein de la macro :
Sub Macro1()
Application.ScreenUpdating = False
'Macro Dan pour Patar91
Dim pi As PivotItem
Dim pt As String
Dim feuille As Worksheet
Set feuille = Worksheets("feuille 2")
pt = "TCD" 'nom du TCD en A2
With feuille.PivotTables(pt).PivotFields("Codes Communes")
.EnableMultiplePageItems = True
.CurrentPage = "(All)" 'ou TOUS
.AutoSort xlAscending, "Codes Communes"
End With
With Worksheets("feuille 3")
For Each pi In feuille.PivotTables(pt).PivotFields("Codes Communes").PivotItems
On Error Resume Next
If .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(pi, LookIn:=xlValues, LookAt:=xlWhole).Row > 0 Then
If Err = 0 Then
pi.Visible = True
Else: pi.Visible = False
End If
End If
Next pi
For Each pi In feuille.PivotTables(pt).PivotFields("Codes Communes").PivotItems
On Error Resume Next
If .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(pi, LookIn:=xlValues, LookAt:=xlWhole).Row > 0 Then
If Err = 0 Then
pi.Visible = True
Else: pi.Visible = False
End If
End If
Next pi
End With
End Sub
Cependant j'imagine que ce format ne doit pas être très optimisé, c'est pourquoi je fais appel à vos expertises pour m'aider à simplifier le code, voir idéalement à accélérer son execution qui par conséquence se retrouve doublé en raison du doublement de la requête.
En pièce jointe un extrait excel.
Merci par avance pour vos réponses