Je veux le changer d'une base de données à une autre.
Il ne semble pas y avoir d'options pour le faire dans le menu contextuel du tableau croisé dynamique
cliquez avec le bouton droit sur le tableau croisé dynamique dans Excel choisissez l'assistant cliquez sur "retour" cliquez sur "obtenir les données ..." dans la fenêtre de requête Fichier - Définition du tableau
alors vous pouvez en créer une nouvelle ou choisir une autre connexion
Il suffit de le comprendre: cliquez n'importe où dans le tableau, puis accédez aux onglets en haut de la page et sélectionnez Options - à partir de là, vous verrez une sélection Modifier la source de données.
Il semble que cela dépend fortement de votre version d'Excel. J'utilise la version 2007 et elle n'offre aucune option d'assistant lorsque vous cliquez avec le bouton droit sur le tableau. Vous devez cliquer sur le tableau croisé dynamique pour faire apparaître des "Outils de tableau croisé dynamique" supplémentaires à droite des autres onglets en haut de l'écran. Cliquez sur l'onglet "options" qui apparaît ici, puis il y a une grande icône au milieu du ruban nommée "changer la source de données".
Afin de changer la source de données du ruban dans Excel 2007 ...
Cliquez sur votre tableau croisé dynamique dans la feuille de calcul. Accédez au ruban où il est indiqué Outils de tableau croisé dynamique, onglet Options. Sélectionnez le bouton Modifier la source de données. Une boîte de dialogue apparaîtra.
Pour obtenir la bonne plage et éviter un message d'erreur ... sélectionnez le contenu du champ existant et supprimez-le, puis passez à la nouvelle feuille de calcul de la source de données et mettez en surbrillance la zone de données (la boîte de dialogue restera au-dessus de toutes les fenêtres). Une fois que vous avez correctement sélectionné la nouvelle source de données, elle remplira le champ vide (que vous avez supprimé auparavant) dans la boîte de dialogue. Cliquez sur OK. Revenez à votre tableau croisé dynamique et il devrait avoir été mis à jour avec les nouvelles données de la nouvelle source.
Ce module complémentaire fera l'affaire pour vous.
http://www.contextures.com/xlPivotPlayPlus01.html
Il montre la chaîne de connexion et permet de la modifier. N'oubliez pas de modifier le Query SQL également, si nécessaire (avec le même outil).
Méfiez-vous un peu de toute solution qui n'implique pas de recréer le tableau croisé dynamique à partir de zéro. Il est possible que les noms d'options de vos champs pivot ne soient plus synchronisés avec les valeurs qu'ils présentent dans la base de données.
Par exemple, dans un classeur dont je parle concernant les données démographiques, si vous essayez de sélectionner l'option de tranche d'âge "20-24", Excel vous présente en fait les chiffres pour les 25-29 ans. Cela ne vous dit pas que c'est ce que vous faites, bien sûr.
Voir ci-dessous pour une approche programmatique (VBA) du problème qui résout ce problème entre autres. Je pense que c'est assez complet/robuste, mais je n'utilise pas beaucoup de tableaux croisés dynamiques, donc j'apprécierais les commentaires.
Sub SwapSources()
strOldSource = "2010 Data"
strNewSource = "2009 Data"
Dim tmpArrOut
For Each wsh In ThisWorkbook.Worksheets
For Each pvt In wsh.PivotTables
tmpArrIn = pvt.SourceData
' row 1 of SourceData is the connection string.
' rows 2+ are the SQL code broken down into 255-byte chunks.
' we need to concatenate rows 2+, replace, and then split them up again
strSource1 = tmpArrIn(LBound(tmpArrIn))
strSource2 = ""
For ii = LBound(tmpArrIn) + 1 To UBound(tmpArrIn)
strSource2 = strSource2 & tmpArrIn(ii)
Next ii
strSource1 = Replace(strSource1, strOldSource, strNewSource)
strSource2 = Replace(strSource2, strOldSource, strNewSource)
ReDim tmpArrOut(1 To Int(Len(strSource2) / 255) + 2)
tmpArrOut(LBound(tmpArrOut)) = strSource1
For ii = LBound(tmpArrOut) + 1 To UBound(tmpArrOut)
tmpArrOut(ii) = Mid(strSource2, 255 * (ii - 2) + 1, 255)
Next ii
' if the replacement SQL is invalid, the PivotTable object will throw an error
Err.Clear
On Error Resume Next
pvt.SourceData = tmpArrOut
On Error GoTo 0
If Err.Number <> 0 Then
MsgBox "Problems changing SQL for table " & wsh.Name & "!" & pvt.Name
pvt.SourceData = tmpArrIn ' revert
ElseIf pvt.RefreshTable <> True Then
MsgBox "Problems refreshing table " & wsh.Name & "!" & pvt.Name
Else
' table is now refreshed
' need to ensure that the "display name" for each pivot option matches
' the actual value that will be fed to the database. It is possible for
' these to get out of sync.
For Each pvf In pvt.PivotFields
'pvf.Name = pvf.SourceName
If Not IsError(pvf.SourceName) Then ' a broken field may have no SourceName
mismatches = 0
For Each pvi In pvf.PivotItems
If pvi.Name <> pvi.SourceName Then
mismatches = mismatches + 1
pvi.Name = "_mismatch" & CStr(mismatches)
End If
Next pvi
If mismatches > 0 Then
For Each pvi In pvf.PivotItems
If pvi.Name <> pvi.SourceName Then
pvi.Name = pvi.SourceName
End If
Next
End If
End If
Next pvf
End If
Next pvt
Next wsh
End Sub
pour la version bureautique MS Excel 2000, cliquez sur le tableau croisé dynamique, vous trouverez un onglet au-dessus du ribon, appelé outil pivotant - cliquez dessus Vous pouvez changer la source de données à partir de l'onglet Données
Dans le cas d'Excel 2007, vous pouvez modifier la source de données dans le menu Options/Modifier la source de données
cliquez avec le bouton droit sur le tableau croisé dynamique dans Excel choisissez l'assistant cliquez sur "retour" cliquez sur "obtenir les données ..." dans la fenêtre de requête Fichier - Définition du tableau
alors vous pouvez en créer une nouvelle ou choisir une autre connexion
a parfaitement fonctionné.
le bouton obtenir des données est à côté du petit bouton avec une flèche rouge à côté de la zone de saisie de texte de la plage.