Dans TCD, tester l'existence d'un champ

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

E
Réponses
6
Affichages
1 K
erictran
E
D
Réponses
0
Affichages
2 K
Demha_2022
D
D
Réponses
1
Affichages
939
DelphineDF
D
J
  • Question Question
Réponses
11
Affichages
1 K
J
L
  • Question Question
Réponses
4
Affichages
1 K
loiseau jonathan
L
E
Réponses
6
Affichages
2 K
ELucie
E
V
Réponses
69
Affichages
9 K
V
Retour