Vérifier l'existence d'une contenu dans un TCD

Bonjour,

Je souhaiterai vérifier l'existence d'une valeur dans un TCD avant de lancer un filtre automatisé par un bouton si la valeur est existante. Sinon, ouverture d'un message d'erreur.

J'ai créé la base suivante mais une erreur intervient à "LookAt:=1xWhole". Je ne sais pas si je m'y suis bien pris du tout .

' Bouton valider qui sert à lancer la macro de recherche
Private Sub CommandButton1_Click()

Dim Valeur_Test As String

Valeur_Test = Range("G7").Value 'La valeur que je souhaite tester

'L'étape où je bloque complet. je ne sais pas comment aller faire chercher le contenu dans mon filtre
Set Lig = ActiveSheet.PivotTable("TCD2").PivotFields("ARTICLE").Find(Valeur_Test,LookIn:=x1Values, LookAt:=1xWhole)
If Not Lig Is Nothing Then

Then
'Si on la trouve, alors on change le filtre

ActiveSheet.PivotTables("TCD2").PivotFields("TYPE").ClearAllFilters
ActiveSheet.PivotTables("TCD2").PivotFields("ARTICLE").ClearAllFilters
ActiveSheet.PivotTables("TCD2").PivotFields("TYPE").CurrentPage = "ACCESSOIRE"
ActiveSheet.PivotTables("TCD2").PivotFields("ARTICLE").CurrentPage = ActiveSheet.Range("G7").Value

Else
'Si on la trouve pas, crée boite message Erreur
MsgBox "La référence n'existe pas", vbExclamation

End If

End Sub

Merci d'avance pour votre aide.

Bonjour

J'ai créé la base suivante mais une erreur intervient à "LookAt:=1xWhole"

Logique c'est --> LookAt:=XLWhole et LookIn:=XLValues

Donc pas de chiffre 1

Faites un nouveau test

Crdlt

Merci pour le retour mais malgré cette correction, j'ai toujours une erreur à cet endroit

re

Essayez ceci

Lig = ActiveSheet.PivotTable("TCD2").PivotFields("ARTICLE").Find(Valeur_Test,LookIn:=xlValues, LookAt:=xlWhole).row

Est-ce vous êtes sur que Valeur_test sera toujours dans le TCD ? ou il se peut que la valeur ne soit pas trouvée ?

Faites le test avec une valeur se trouvant dans le TCD

Vous avez un THEN de trop plus bas aussi

Toujours en erreur...

Il se peut que la valeur ne soit pas dans le TCD. En fait, je souhaiterais que cela mette le message d'erreur en route afin d'éviter un bug

Re

Il se peut que la valeur ne soit pas dans le TCD. En fait, je souhaiterais que cela mette le message d'erreur en route afin d'éviter un bug

Ok c'est prévu mais avant je vous demandais de tester une valeur existante pour vérifier si erreur il y a ou pas

Sinon voici ce que vous pouvez mettre

On error resume next
Lig = ActiveSheet.PivotTable("TCD2").PivotFields("ARTICLE").Find(Valeur_Test,LookIn:=xlValues, LookAt:=xlWhole).row
If Err.number > 0 then Msgbox "Pas de valeur trouvée !" :Exit sub

Cordialement

Il y a toujours l'erreur malgré la présence de la valeur

Bonjour à tous

Peut-être une différence de type.

Sinon poste ton exemple

Re

En fait quand je regarde votre macro, j'ai l'impression que vous cherchez une valeur dans la champ de page qui est peut être cachée par le filtre.

Si vous essayez ceci plutot

Valeur_Test = Activesheet.Range("G7").Value 'La valeur que je souhaite tester
On error resume next
ActiveSheet.PivotTables("TCD2").PivotFields("ARTICLE").CurrentPage = Valeur_test
If Err.number > 0 then Msgbox "Valeur non trouvée dans le TCD" : Exit sub

'Si on la trouve, alors on change le filtre

ActiveSheet.PivotTables("TCD2").PivotFields("TYPE").ClearAllFilters
ActiveSheet.PivotTables("TCD2").PivotFields("ARTICLE").ClearAllFilters
ActiveSheet.PivotTables("TCD2").PivotFields("TYPE").CurrentPage = "ACCESSOIRE"
ActiveSheet.PivotTables("TCD2").PivotFields("ARTICLE").CurrentPage = Valeur_Test
'..... la suite du code
End sub

Sinon placez au moins une photo de votre TCD où mieux le fichier..

Crdlt

RE

Bien vu Dan

Il faudrait chercher dans la source ou faire une boucle sur les pivotitems

Re

Peut être utiliser une macro comme celle proposée (dim. mai 17, 2020 3:06 pm) le mois passé dans ce fil ?? --> https://forum.excel-pratique.com/viewtopic.php?f=2&t=141848

En gros, boucler sur l'item Currentpage pour aller vérifier si la valeur_test s'y trouve

Crdlt

Bonjour,

Merci à tous pour vos réponses. Effectivement la valeur recherchée est caché par le filtre donc la correction a supprimé l'erreur. Tout fonctionne bien pour la recherche, en revanche, le message d'erreur lui ne fonctionne pas…

Il me filtre toutes les valeurs même non comprise dans le TCD

RE

D'où l’intérêt de chercher dans la source...

Paramétrer le TCD afin de réinitialiser le cache afin de ne pas traîner les anciennes valeurs

Re

Sans le fichier ou au moins un vue du TCD, c'est un peu chercher une aiguille dans une boite de foin ...

Essayez un peu de mettre ceci juste avant ou après le On error resume next

ActiveSheet.PivotTables("TCD2").PivotCache.Refresh

RE

R

ActiveSheet.PivotTables("TCD2").PivotCache.Refresh

Cela ne suffit pas mais il suffit de paramétrer le TCD une fois pour toutes lors de sa construction

Rechercher des sujets similaires à "verifier existence contenu tcd"