![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 | |
|
|