web-dev-qa-db-fra.com

Comment changer la source de données du tableau croisé dynamique dans Excel?

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

24
adolf garlic

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

3
adolf garlic

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.

21
Zoe

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".

6
Bilge Rat

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.

3
Angelcakes

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).

2
Peter Runhardt
  • Cliquez avec le bouton droit sur le tableau croisé dynamique, choisissez Assistant Tableau croisé dynamique.
  • Cliquez deux fois sur le bouton "Retour".
  • Choisissez Source de données externe, cliquez sur suivant.
  • Cliquez sur Obtenir les données
  • Dans le premier onglet, Bases de données, la première option est "Nouvelle source de données"
2
Bravax

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
2
Alex Labram

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

1
sreejith.vk

Dans le cas d'Excel 2007, vous pouvez modifier la source de données dans le menu Options/Modifier la source de données

1
Peter Horvath

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.

1
ryan