Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 ?
 

ERIC S

XLDnaute Barbatruc
Re : TCD + Filtre en VBA

Bonjour

essaie de joindre un bout de fichier (non confidentiel). Cela nous éviter de raisonner dans le vide ou de tenter de reconstruire ce que tu as déjà fait
 

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
 

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.
 

CaptainMonDom

XLDnaute Nouveau
Re : TCD + Filtre en VBA

Bonjour,

En fait je vais compiler plusieur TCD (10 au total) dans une fiche de synthèse par affaire, mais aussi une synthèse de l'acivité globale (ce qui diffère c'est le niveau de détail)

A+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…