[Résolu] VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Hiraishin

XLDnaute Nouveau
Bonjour le forum,

Pour commencer, je ne sais même pas si c'est possible et je suis rééllement bloqué alors je viens vous demander de l'aide.

Voici mon problème :

Tout d'abord, j'ai créé un UserForm avec une textbox afin d'y renseigner un chiffre, pour l'exemple prenons 50 000.
Une fois cette valeur renseignée, je la place dans une variable, Valeurtext1
Par la suite, voici ce que je voudrais :

Afficher les résultats uniquement supérieur à la valeur renseignée par ma variable, soit tout ce qui est supérieur à 50 000.

Si je voulais afficher uniquement la valeur associée à ma variable, il me suffirait d'écrire ça :

ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom").CurrentPage = Valeurtext1

Mais je veux afficher tout ce qui est supérieur ou égal à ma variable.

Voici le code que j'ai écris, le reste étant confidentiel :

Code:
Private Sub UserForm_Initialize()

Text1.Value = 0

End Sub


Private Sub BoutonOk_Click()

Msg = "Vous avez sélectionné "
    Msg = Msg & Text1.Value
    Msg = Msg & "."
    MsgBox Msg

Valeurtext1 = Text1.Value

ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom").CurrentPage = Valeurtext1

Unload UserForm2

End Sub



Cordialement,

Hiraishin
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Bonjour,

regarde peut être ceci :
Code:
Dim p As PivotItem
Application.ScreenUpdating = False
With ActiveSheet.PivotTables(1).PivotFields("Nom")
    For Each p In .PivotItems
        p.Visible = True
    Next p
    For Each p In .PivotItems
        If p.Value < Val(Valeurtext1) Then p.Visible = False
    Next p
End With

A voir ensuite comment est déclarée et initialisée ta variable "Valeurtext1"

bon après midi
@+
 

Hiraishin

XLDnaute Nouveau
Re : VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Bonjour Pierrot93,

Merci de m'aider, concernant ton code, il a l'air juste, cependant quand je l'utilise, rien ne se passe comme prévu.
De plus, au bout d'une vingtaine de seconde, une erreur apparait : Type mismatch.
Après cela, j'arrête la macro, je regarde le filtrage qui a été fait et rien ne correspond aux critères que j'ai renseigné.

Reprenons mon exemple, soit 50 000 dans la textbox, le filtrage qui est fait avant l'apparition de l'erreur est incorrect, des valeurs en dessous et au dessus des 50 000 sont décochées.

De plus, quand je selectionne Debug, la partie la du code est surlignée en jaune : If p.Value < Val(Valeurtext1) Then
Et la valeur contenue dans p.Visible (juste à la suite) est Type mismatch


Cordialement,

Hiraishin
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Re,

comme dit précédement, voir type de donnée dans ta variable, peut être lieu également de convertir ton "p.value".... voir également s'il n'y a pas dans ton tcd des "items" qui ne sont plus présents dans ta base... sans plus de détails et sans pouvoir tester, difficile à dire....
 

Hiraishin

XLDnaute Nouveau
Re : VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Re,

Concernant ma variable, c'est un chiffre rentré par l'utilisateur, j'ai pris pour exemple 50 000 mais on peut rentré le chiffre que l'on désire.
Les valeurs dans mon tcd sont des chiffres également, par exemple 512, 12400, 980000, 57333.

Comment pourrais je convertir mon p.Value ? Si c'est vraiment ça qui pose problème.
 

Hiraishin

XLDnaute Nouveau
Re : VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Bonjour,

J'ai essayé de cette façon, le même problème persiste. J'ai aussi essayé avec un select case, cela ne fonctionne pas non plus.

J'ai du travail ce matin mais cette après midi je vais essayer de faire un fichier d'exemple sans les données confidentielles et de le joindre, ce sera plus simple pour trouver une solution.

Merci de ton aide, d'ailleurs si d'autres gens ont des idées à proposer, je suis preneur.


Cordialement,

Hiraishin
 

Hiraishin

XLDnaute Nouveau
Re : VBA : PivotItems, afficher les nombres supérieurs au nombre renseigné

Bonjour,

Désolé de remonter le post mais j'ai trouvé une solution à mon problème.
De plus je pense que ça peut intéresser les gens alors voici la solution.

Pour appliquer un filtre sur les valeurs contenues dans le tcd, il faut tout simplement cliquer sur Row Labels (nom par défaut, c'est en anglais, en français je ne sais pas). Ensuite sélectionner Value filters et là, une multitude de choix s'offre à nous.

Il est donc temps d'utiliser l'enregistreur de macro, disons pour appliquer un filtre de 50 000.

Attention, cela dit, j'ai remarqué une chose, le filtre ne s'applique que pour le row labels en 1ere position !
Donc avant d'appliquer votre filtre, faites attention à quelles données vous le faites !

Et voici donc le code :

Code:
ActiveSheet.PivotTables("PivotTable1").PivotFields("Nom_De_La_Ligne_Qui_Sera_Filtrée").PivotFilters _
        .Add Type:=xlValueIsGreaterThan, DataField:=ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Nom_Valeur_Filtrée"), Value1:=50000

En tout cas, merci Pierrot93 pour ton aide !


Cordialement,

Hiraishin
 

Discussions similaires