Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives


 
 
LinkBack Outils de la discussion
Vieux 01/09/2003, 15h39   #1 (permalink)
Nabil
Guest
 
Messages: n/a
Par défaut MAJ Reference base de tableau croisé dynamique


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
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 02h22.


(C) 2006 Excel Downloads