TCD + Filtre en VBA

CaptainMonDom

XLDnaute Nouveau
Bonjour,

Je souhaite réaliser des fiches de synthèse grâce à des Tableaux croisés dynamique.
Pour ce faire j'utilise du code VBA.

Je vais chercher dans un tableau des valeurs que je dépose dans une variable.
J'utilise ensuite cette variable pour filtrer le TCD. Ensuite j'irai copier les valeurs dans la fiche de synthèse.

Globalement, le code fonctionne. Seulement, il se peut que la variable que je vais chercher, n'existe pas dans le TCD.
Dans ce cas, excel inscrit dans la zone du filtre la variable et garde les valeurs précédentes.

En ce qui me concerne, je souhaiterai que lorsque la variable est inconnue dans le filtre du TCD, il m'inscrive un texte dans une case.

Ci-joint le code :
'Création d'une variable pour avoir le nombre d'affaires à traiter
Dim NBAFF As Integer
Range("A8").Select
NBAFF = ActiveCell.Value
'Création d'une variable avec le nom d'affaire
Dim NOMAFF As String
'On lance une boucle
For A = 11 To NBAFF + 9
Range("A" & A).Select
NOMAFF = ActiveCell.Value
'on insert la boucle d'erreur
On Error Resume Next
'on filtre le TCD2 avec le nom de l'affaire
ActiveSheet.PivotTables("TCD2").PageFields("Affaire").CurrentPage = NOMAFF
'action si la variable n'existe pas
If Err.Number <> 0 Then
Range("F" & A).Select
ActiveCell.Value = "toto"
Else: End If

Next

end sub()

Pouvez vous m'aider ?
 

La braise

XLDnaute Occasionnel
Re : TCD + Filtre en VBA

SAlut,

Il faut faire un "petit" TCD qui liste les valeur existante que tu souhaite appeler dans ton "gros" TCD.
Tu fais une boucle sur les valeurs présentes dans le petit TCD, et tu te sers de ces valeurs pour alimenter le gros.
Ainsi tu n’appelleras jamais des valeurs qui n’existent pas.
;)
 

ERIC S

XLDnaute Barbatruc
Re : TCD + Filtre en VBA

Re

N'étant pas un spécialiste du TCD, je cherche souvent à l'éviter * : une autre approche en utilisant le rechercheV ou l'équiv, tu testes si ta variable est trouvée et en cas d'erreur tu avertis l'utilisateur....

(*) mais j'admire ceux qui naviguent avec cet outil puissant :eek:
 

CaptainMonDom

XLDnaute Nouveau
Re : TCD + Filtre en VBA

Bonjour,

Ci-joint un fichier exemple qui à le même esprit que mon fichier.

Vous constaterez à l'exécution de la macro, que lorsque nous souhaitons traiter l'affaire "Chien", la macro filtre le TCD2 avec la valeur Chien alors que celle-ci n'existe pas dans le TCD2. Et récupère les données du filtre précédent.

Le code est le suivant :
Sub Macro1()
'
' Macro1 Macro
'

'On compte le nombre d'affaire présente
Range("B16").Select
ActiveCell.FormulaR1C1 = "=+COUNTA(R[1]C[-1]:R[5]C[-1])"
'On met cette valeur dans une variable
Dim A As Integer
Range("B16").Select
A = ActiveCell.Value
'On prépare une variable pour affecter le nom de l'affaire pour le filtre
Dim NOMAFF As String
'On lance une boucle de traitement
For B = 17 To (16 + A)
Range("A" & B).Select
NOMAFF = ActiveCell.Value
'on insert la boucle d'erreur
On Error Resume Next
'on filtre le TCD2 avec le nom de l'affaire
ActiveSheet.PivotTables("TCD2").PageFields("Affaire").CurrentPage = NOMAFF
'action si la variable n'existe pas
If Err.Number <> 0 Then
Range("K" & 6).Select
ActiveCell.Value = "Pas de données"
Else: End If
'action si la variable existe
'On complète l'affaire
Range("K6").Select
ActiveCell.Value = NOMAFF
'On complète le nombre d'heures
Dim NBH As Integer
Range("F20").Select
NBH = ActiveCell.Value
Range("K8").Select
ActiveCell.Value = NBH
Next
End Sub
 

Pièces jointes

  • test.xlsm
    24.4 KB · Affichages: 135
  • test.xlsm
    24.4 KB · Affichages: 142
  • test.xlsm
    24.4 KB · Affichages: 148

CaptainMonDom

XLDnaute Nouveau
Re : TCD + Filtre en VBA

Je comprends, et si j'avais une solution simple je n'hésiterais pas.
Pour info, je vais chercher des extractions dans plusieurs systèmes, avec à chaque fois plusieurs millier de lignes.
Par chance ces infos on 1 ou 2 info en commun et qui plus est j'arrive à les extraires vers excel.
Ce sont les raisons qui me pousse vers ces choix. Je reste néanmoins ouvert à toute proposition.
 

Statistiques des forums

Discussions
312 540
Messages
2 089 408
Membres
104 163
dernier inscrit
Lolo37