Problem programmation pivottable VBA access

Fermé
casagrandi Messages postés 1 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 9 janvier 2007 - 9 janv. 2007 à 13:33
 toto.casagrandi - 9 janv. 2007 à 18:58
Bonjour à tous,
Il ya un souci dans votre article :http://office.microsoft.com/fr-fr/access/HA010345791036.aspx
voila mon problème. J'ai réalisé un tableau croisé dynamique avec access en se basant sur une table :
achats:

client ville produit chiffreaffaires
c1 v1 p1 80
c1 v1 p2 30
c1 v2 p1 60
c1 v2 p2 5
c2 v1 p1 10
c2 v1 p2 55
c2 v2 p1 8
c2 v2 p2 6

le formulaire tableau croisé dynamique qui se base sur cette table marche très bien et me donne bien

client ville Agregationchiffaffaire
c1 v1 110
c1 v2 65
c2 v1 65
c2 v2 14
.
Cependant à l'inverse d'excel lorsque je clique sur le chiffre agrégé des chiffres d'affaires , access ne me permet pas d'avoir le détail sous forme de tableau initial à tire d'exemple je veux une fois je clique sur le chiffre 110 qu'il me donne les lignes :
client ville produit chiffreaffaires
c1 v1 p1 80
c1 v1 p2 30.

En cherchant de la doc sur le composant pivot table j'ai trouvé cet article de microsoft qui me permet d'avoir les dimenssins (variables) mise dans l'analyse du tableau croisé dynamique (ligne et colones pour le champs d'aggrégations désiréée)
l'article se trouve dans cette adresse:
[url]http://office.microsoft.com/fr-fr/access/HA010345791036.aspx[url][/

et la partie qui m'intéresse dans cette article c'est:Tableau croisé dynamique – Exemples -->Obtenir la valeur d'une cellule

le code est le suivant et la partie qui bloque lorsque je compile est la suivante:

Obtenir la valeur d'une cellule

Le code suivant détermine l'endroit sur lequel un utilisateur a double-cliqué dans une vue Tableau croisé dynamique. Il renvoie ensuite la valeur et le type de l'élément sélectionné.

Pour voir ce code en action, ajoutez le code suivant à la procédure de l'événement Form_DblClick (Cancel As Integer) d'un formulaire dont la vue par défaut est Tableau croisé dynamique.

If Me.CurrentView = acCurViewPivotTable Then

' Create some variables.
Dim sel As Object
Dim pivotagg As PivotAggregate
Dim sTotal As String
Dim sColMems As String
Dim sRowMems As String
Dim sFilters As String
Dim sMsg As String

' Get the selection.
Set sel = Me.PivotTable.Selection

' User could have clicked one of the following types of objects:
' PivotAggregates, PivotTotals, PivotMembers, PivotFields, etc.
' Use the TypeName() function to determine the object type.

MsgBox "The Selection property returned a '" & TypeName(sel) & "' object.", _
vbInformation, "Type of Selection Prop"
' If the type is PivotAggregates, show how to get the row
' and column member(s) that define that aggregate.

If TypeName(sel) = "PivotAggregates" Then
' PivotAggregates could contain many items, but because user could have
' double-clicked only a single item, it will contain just one item now,
' which will be item(0).
Set pivotagg = sel.Item(0)
le compilateur VB dis qu'il ya incompatibilité de type



' Show the value.
MsgBox "The cell you double-clicked has a value of '" & pivotagg.Value & _
"'.", vbInformation, "Value of Cell"

' Get the total name, row and column members, and the current filters.
sTotal = pivotagg.Total.Caption

sColMems = BuildFullName(pivotagg.Cell.ColumnMember)
sRowMems = BuildFullName(pivotagg.Cell.RowMember)

' Build the message and show it.
sMsg = "The value is " & sTotal & " by " & sRowMems & " by " & sColMems

If Len(sFilters) > 0 Then
sMsg = sMsg & " for " & Left(sFilters, Len(sFilters) - 2)
End If

MsgBox sMsg, vbInformation, "Value Info"

End If ' typename(sel) = "PivotAggregates"

End If ' Me.CurrentView = acCurViewPivotTable
Ajoutez ensuite la fonction suivante au module du formulaire.

Function BuildFullName(PivotMem)

Dim pmTemp As PivotMember ' Temporary PivotMember reference
Dim sFullName As String

' Start by getting the current member's name.
sFullName = PivotMem.Caption

' Set the temp variable to the current member.
Set pmTemp = PivotMem

' Navigate up the parent hierarchy until you hit nothing.
While Not (pmTemp.ParentMember Is Nothing)
Set pmTemp = pmTemp.ParentMember
sFullName = pmTemp.Caption & "-" & sFullName
Wend

' Return sFullName.
BuildFullName = sFullName
End Function



Remarque Les exemples suivants proviennent de l'exemple de base de données Les Comptoirs inclus dans Access.

Inclusion d'une référence à la bibliothèque des composants Web Office

Pour que les exemples de code suivants fonctionnent, votre base de données doit contenir une référence au fichier Owc11.dll (Access 2003) ou Owc10.dll (Access 2002). Les bases de données créées à l'aide d'Access 2000 ou version antérieure, ou les bases de données créées à l'aide d'Access 2002 ou version ultérieure mais enregistrées au format Access 2000, n'incluent pas cette référence.

Pour ajouter dans une base de données Access une référence à Owc11.dll ou Owc10.dll

Ouvrez la base de données à laquelle vous souhaitez ajouter la référence.
Cliquez sur Code dans la barre d'outils pour ouvrir l'éditeur Microsoft Visual Basic®.
Dans le menu Outils, cliquez sur Références.
Cliquez sur Parcourir, puis naviguez jusqu'à l'emplacement du fichier Owc11.dll ou Owc10.dll.
Pour Access 2003, l'emplacement par défaut est C:/Program Files/Common Files/Microsoft Shared/Web Components/11 — pour Access 2002, C:/Program Files/Common Files/Microsoft Shared/Web Components/10.

Sélectionnez le fichier, cliquez sur Ouvrir, puis sur OK.

Notez bien j'utilise access 2003

merci pour votre aide

1 réponse

blux Messages postés 26010 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
9 janv. 2007 à 15:17
Bonjour,

Il ya un souci dans votre article :http://office.microsoft.com/fr-fr/access/HA010345791036.aspx


Ici, ce n'est pas microsoft.com, c'est commentcamarche.net !

Merci donc de prévenir Microsoft de leur erreur...
2
toto.casagrandi
9 janv. 2007 à 18:58
merci blux mais bon moi j'ai besoin de cette fonction Vb pour mon application désolé j'avais fait un copié collé sans le savoir bon des suggestions sur l'erreur
0