Dans TCD, tester l'existence d'un champ

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

Dans un TCD, je n’arrive pas à tester la présence d’un champ et du coup, mon code plante quand la feuille ne contient pas ce champ.
Qui peut me dire comment on écrit en VBA quelque chose comme « si le PivotFiled(‘’ Produit’’) n’existe pas, alors … »


Merci d’avance pour vos lumières


xxxxxxx Actuellement, j’ai ça xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Sub Ajuster_Largeur_Colonne_Produit()

If ActiveSheet.PivotTables.Count > 0 Then

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Produit").LabelRange.Select

With Selection
. ColumnWidth = 60
End With


End If

End Sub
 

Sebast

XLDnaute Impliqué
Re : Dans TCD, tester l'existence d'un champ

Bonjour Chris,

je viens de tester ta proposition sur mon fichier initial (que je n'avais plus hier soir car sur une autre PC).
Effectivement, ça fonctionne, donc je ne sais pas ce qui s'est passé ...
En revanche, tu écris qu'une instruction manque : où dois-je placer (testchamp = 0) ?

Encore merci pour ton aide
 

gant1801

XLDnaute Junior
Re : Dans TCD, tester l'existence d'un champ

Bonjour à tous,
Pierrot93 j'ai essayé d'adapter ta solution à mon problème (tester si un critère existe et non un champ:

Function testchamp(pf As String) As PivotItem
On Error Resume Next
Set testchamp = ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immobilisation").PivotItems(pf)
End Function

Je fais ensuite le test:

Sub test()
If Not testchamp("2000000") Is Nothing Then
MsgBox "chmp existe"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immobilisation").PivotItems("2000000").Visible = True
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immobilisation").CurrentPage = 2000000
Else
MsgBox "chmp n'existe pas"
End If
End Sub

La macro ci-dessous marche parfaitement, mais lorsque je fais quelques modifications elle se met à planter (j'ai besoin d'utiliser cette formule dans une boucle for...next)

Sub test()
Dim A As Long
A = 2000000
If Not testchamp(A) Is Nothing Then
MsgBox "chmp existe"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immobilisation").PivotItems(A).Visible = True
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immobilisation").CurrentPage = A
Else
MsgBox "chmp n'existe pas"
End If
End Sub

Si vous avez des solutions à me proposer, je suis preneur!
Merci de votre aide
 

Discussions similaires

Réponses
11
Affichages
986

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin