Filtre, TCD et message d'erreur.

Tsoin42

XLDnaute Nouveau
Bonjour le forum !

J'ai de nouveau d'un problème et je viens donc vers vous.

Fichier joint: J'ai crée un petit fichier reprenant le principe de mon fichier sur lequel je travaille et j'ai d'ailleurs rencontré un problème un peu bizarre : Mon TCD confond les légumes et les agrumes, j'ai du refaire le TCD et pour le moment tout va bien ! :rolleyes: Bref !

Je souhaite filtrer à l'aide d'une liste créée via la validation des données (F14) qui filtrera le TCD par le filtre de rapport (ici "Type").

J'ai navigué parmi vos sujets et je suis tombée sur le code suivant qui fonctionne parfaitement :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, _
Range("F14")) Is Nothing Then
    Dim Selection_Liste As String
    Selection_Liste = Range("F14").Value
        
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Type").CurrentPage = Selection_Liste
End If

End Sub

Problème rencontré: Seulement voilà, mon fichier de base évolue tous les jours par conséquent quand je filtre pour les années/mois/semaines vides forcément il n'y a pas de valeur. Cependant, le TCD reste rempli avec les données du dernier filtre consulté.

Dans mon exemple de fichier joint, j'ai rajouté à la liste des validations de données "Céréales" alors que ma base de données n'en contient pas encore. Il serait intéressant ,quand on sélectionne "Céréales", qu'un message d'erreur apparaîsse pour nous notifier qu'il n'existe rien dans la base de données.

Résultat souhaité : Lorsque je sélectionne un filtre qui n'est pas encore dans la Base de Données, j'obtiens un message d'erreur soulignant l'absence des données relatives au filtre.

Disons que si ce n'est pas possible (j'en doute vu vos connaissances Excel;) ) ce n'est pas grave en soi, c'est simplement pour éviter des problèmes lors de la resaisie des informations et éviter qu'on se retrouve avec des données du mois de Juin alors qu'elles ne sont pas encore enregistrées pour l'année en cours.
Aussi, je ne peux pas enlever les noms de filtre dans la mesure où ces noms existent dans la BDD des années précédentes.

Voilà j'espère que vous pourrez m'aider ;).

Bonne journée,

Tsoin42.

P.S: Je profite de ce message pour remercier tous les contributeurs de ce site, franchement je ne sais pas ce que j'aurais fait sans ce site et toutes ces réponses ! J'ai fait bonne impression auprès de mon maitre de stage en lui faisant de beaux petits trucs Excel, en simplifiant des fichiers et les opérateurs sont contents ! Alors un grand merci à vous tous !:D
 

Pièces jointes

  • Test macro TCD et filtre.xls
    53.5 KB · Affichages: 43

chris

XLDnaute Barbatruc
Re : Filtre, TCD et message d'erreur.

Bonjour
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, _
Range("F14")) Is Nothing Then
    Dim Selection_Liste As String
    Selection_Liste = Range("F14").Value
    y = Cells(1, 2).CurrentRegion.Rows.Count
   If Application.CountIf(Range("B1:B" & y), Selection_Liste) = 0 Then
        MsgBox "Valeur non présente"
        Exit Sub
    Else
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Type").CurrentPage = Selection_Liste
    End If
End If

End Sub
 

Tsoin42

XLDnaute Nouveau
Re : Filtre, TCD et message d'erreur.

Merci de ta réponse Chris, le code fonctionne bien sur le fichier que j'ai envoyé. Néanmoins, sur mon fichier de base je ne peux pas appliquer le code suivant :
Code:
y = Cells(1, 2).CurrentRegion.Rows.Count
   If Application.CountIf(Range("B1:B" & y), Selection_Liste) = 0 Then
        MsgBox "Valeur non présente"
        Exit Sub

En effet, le fichier sur lequel je travaille n'a pas de BDD mais seulement les TCD qui en découlent; la BDD étant dans d'autres classeurs.

Vu que je suis très débutante en VBA je ne sais pas trop comment l'adapter à mon fichier, je dois mettre le nom du classeur peut-être ? :eek:
 

chris

XLDnaute Barbatruc
Re : Filtre, TCD et message d'erreur.

Re

On dit et on répète qu'il faut donner des exemples représentatifs et toutes les données du problème !

Le TCD lit ces classeurs comment : le TCD a été construit avec le classeur ouvert où en indiquant source de données externes ?

Question à 100 sous : si le TCD et la liste déroulante sont côte en côte je ne vois pas l'intérêt. MAis tu ne nous a sans doute pas tout dit sur le classeur de synthèse. Essaie de donner de vrais exemples surtout si des dates sont en jeu...
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 902
Membres
101 834
dernier inscrit
Jeremy06510