Salut
J’ai peut être la solution et si c’est le cas, tu as du bol, j’ai eu le même soucis ce Jeudi, n’ayant pas trouvé de doc ni de références sur le net, j’ai bidouillé un peu et le résultat a l’air concluant.
J’y croyais pas trop mais ça a l’air de marcher (du code à exécuter)
Ptete le faire évoluer et le mettre en macro complémentaire
***************
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
**************
Tu me dis si ca marche bien pour toi et si tu as une idée d'évolution
Bonne journée
Nabil