MAJ Reference base de tableau croisé dynamique

N

Nabil

Guest
Bonjour
J'ai eu un souci qui consiste à ne pas pouvoir changer l'emplacement d'une base Access utilisée par un tableau croisé dynamique.
J'avais un fichier sous 97 qui posait problème de mise à jour de données un fois transféré sous 2002, vu qu’il ne retrouvait pas la base Access, qui n’avait pas bougé elle.
Apparemment sous XP il faut définir une connexion ODBC pour se connecter à une base.
Le problème est que je n’arrivais pas à modifier les paramètres de ce Tableau Croisé Dynamique.
Apres quelques recherches infructueuses (je n’ai pas trouvé le moyen de faire cette modif via l’interface) et quelque bidouilles j’ai fait un bout de code qui à l’air de marcher

Si vous pouviez me confirmer qu’effectivement on ne peut pas modifier cette référence tout simplement et dans ce cas si le code marche bien.


*****************

sub updateTCD()

Dim deb, fin As Long
Dim listeparam() As String
Dim feuille As Worksheet
Dim tableau As PivotTable
Dim sdArray As Variant
Dim j As Integer

For Each feuille In Sheets
If feuille.PivotTables.Count > 0 Then
MsgBox "Dans """ & feuille.Name & """ il y a " & feuille.PivotTables.Count & " TCD"
For Each tableau In feuille.PivotTables
sdArray = tableau.SourceData
str = sdArray(LBound(sdArray))
str2 = ""
str3 = ""
str4 = ""
message = ""

listeparam = Split(str, ";")
For j = 0 To UBound(listeparam())
str2 = str2 & Chr(13) & " " & listeparam(j)
Next
str2 = " Nom : " & tableau.Name & Chr(13) & str2
message = "Parametres de votre TCD : " & Chr(13) & str2

deb = InStr(1, str, "DBQ=", vbTextCompare)
If deb > 0 Then
fin = InStr(deb, str, ";", vbTextCompare)
str3 = Left(str, fin - 1)
str3 = Right(str3, Len(str3) - deb - 3)

message = message & Chr(13) & Chr(13) & _
"Voulez vous modifier cette référence ? " & Chr(13) & _
" Base de donnée = " & str3

deb = InStr(1, str, "DSN=", vbTextCompare)
If deb > 0 Then
fin = InStr(deb, str, ";", vbTextCompare)
str4 = Left(str, fin - 1)
str4 = Right(str4, Len(str4) - deb - 3)
message = message & Chr(13) & _
" DSN = " & str4
End If



If MsgBox(message, vbYesNo) = vbYes Then
Stop
sdArray(LBound(sdArray)) = ""
tableau.SourceData = sdArray
End If
End If
Next
End If 'Feuille avec TCD
Next

end sub

**************

ce code est a lancer dans classeur contenant le TCD

merci bien
Nabil
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi