XL 2013 VBA Gestion d'erreur avec fonction Getpivotdata

Vero2782

XLDnaute Nouveau
Bonjour,

Mon code fonctionnait presque bien jusqu'à ce que je veuille lui ajouter une condition.

Pour chaque item de la liste (FOR EACH), il va chercher la donnée de la variable NBGB dans un TCD (GetPIVOTDATA) et me la colle dans la colone à droite de la liste recherchée (OFFSET(0,1))

Par contre, lorsque je recherche une valeur qui n'est pas dans le TCD, il me colle la valeur de la variable précédente alors que je voudrais qu'il écrive 0.

Donc, je pensais lui dire que si NBGB est error , la valeur =0 ... Ça ne fonctionne pas.


Aussi, Même si la fonction InStr est dans mon code et fonctionne... Je ne comprend pas vraiment sa lecture... Quelqu'un peut me la "traduire" en mot ?

Merci beaucoup !


Windows("Master.xls").Activate
Sheets("feuille1").Select
Set SrchRng = Range("$G$2:$G$15")

For Each Cel In SrchRng

Windows("Data.xlsx").Activate
Sheets("Feuille 1").Select
Set PTGB = ActiveSheet.PivotTables(1)

NBGB = PTGB.GetPivotData("enddaterange", "princname", ClientName, "dept", DEPT, "typedesce", Cel).Value

If IsError(NBGB) Then
Cel.Offset(0, 1).Value = "0"

Else
If InStr(1, Cel.Value, Cel) > 0 Then
Cel.Offset(0, 1).Value = NBGB
End If
End If


Next Cel
 

Vero2782

XLDnaute Nouveau
Re : VBA Gestion d'erreur avec fonction Getpivotdata

Je n'ai pas encore trouvé de solutions à ce problème... quelqu'un à une idée ?
Dans le fond, Je veux programmer que s'ils ne trouve pas de résultats au getpivotdata, il doit enregistrer 0 dans la variable NBGB...
 

Vero2782

XLDnaute Nouveau
Re : VBA Gestion d'erreur avec fonction Getpivotdata

Voici ce que j'ai trouvé si ça peut aider quelqu'un ! Fonction On error resume next

Windows("Master.xls").Activate
Sheets("Feuille1").Select
Set SrchRng = Range("$G$2:$G$15")

For Each Cel In SrchRng

Windows("Data.xlsx").Activate
Sheets("feuille1.xls").Select
Set PTGB = ActiveSheet.PivotTables(1)

On Error Resume Next
NBGB = 0
NBGB = PTGB.GetPivotData("enddaterange", "princname", ClientName, "dept", DEPT, "typedesce", Cel).Value

If InStr(1, Cel.Value, Cel) > 0 Then
Cel.Offset(0, 1).Value = NBGB

End If


Next Cel
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV