J'ai des tableaux excel dont certaines cellules sont bindées sur des
fichiers xml (dynamiques).
Ces tableaux sont ensuite réutilisés sous la forme de graphe/tableaux dans
un document Word.
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu
effectif des xml.
J'ai essayé :
. les tableaux excel incorporés (le xls est "dans" le Word), mais dans ce
cas, je n'arrive pas
(via VBA) à transformer les ActiveDocument.InlineShapes en des objets excel
utilisables ;
. les tableaux excel liés (le xls est dans un fichier externe), dans ce cas
là, les graphes excel sont bien
synchronisés sur le (dernier) contenu des xls, mais je ne sais pas où
trouver la collection des objets liés
et comment en faire des objets excel.
Bref je galère et toute aide sera la bienvenue,
D'avance merci,
PS: une fois que j'aurai mon objet excel je sais comment rafraichir les
données XML, il faut faire un
ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Anacoluthe
Bonjour !
'v1nce' nous a écrit ...
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu effectif des xml. PS: une fois que j'aurai mon objet excel je sais comment rafraichir les données XML, il faut faire un ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Pour récupérer votre objet Excel utilisez l'objet OleFormat de votre objet Word. N'oubliez pas de référencer Excel dans VBE :
Dim maFeuille As Excel.Workbook With ActiveDocument.InlineShapes(1).OLEFormat If .ClassType = "Excel.Sheet.8" Then ' il faut d'ABORD activer !! .Activate Set maFeuille = .Object maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh End If End With
Est-ce que ça vous fait avancer un peu ?
Anacoluthe « C'est encore en méditant l'objet que le sujet a le plus de chance de s'approfondir. » - Gaston BACHELARD
Bonjour !
'v1nce' nous a écrit ...
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu
effectif des xml.
PS: une fois que j'aurai mon objet excel je sais comment rafraichir les
données XML, il faut faire un
ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Pour récupérer votre objet Excel utilisez l'objet OleFormat
de votre objet Word. N'oubliez pas de référencer Excel dans VBE :
Dim maFeuille As Excel.Workbook
With ActiveDocument.InlineShapes(1).OLEFormat
If .ClassType = "Excel.Sheet.8" Then
' il faut d'ABORD activer !!
.Activate
Set maFeuille = .Object
maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
End If
End With
Est-ce que ça vous fait avancer un peu ?
Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu effectif des xml. PS: une fois que j'aurai mon objet excel je sais comment rafraichir les données XML, il faut faire un ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Pour récupérer votre objet Excel utilisez l'objet OleFormat de votre objet Word. N'oubliez pas de référencer Excel dans VBE :
Dim maFeuille As Excel.Workbook With ActiveDocument.InlineShapes(1).OLEFormat If .ClassType = "Excel.Sheet.8" Then ' il faut d'ABORD activer !! .Activate Set maFeuille = .Object maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh End If End With
Est-ce que ça vous fait avancer un peu ?
Anacoluthe « C'est encore en méditant l'objet que le sujet a le plus de chance de s'approfondir. » - Gaston BACHELARD
v1nce
Bonjour,
Merci, merci, merci. .Activate fallait le savoir.
2 questions supplémentaires si vous voulez bien : 1) Lorsque j'insère un objet Excel et que je le lie à des données XML, il stocke le chemin complet dans maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL. Est-il possible de forcer un chmin relatif ? Sinon comment modifier le chemin a posteriori ? (maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL = "XML/MY151.xml" ne fonctionne pas : erreur 450 affectation de propriété incorrecte)
2) Si le DataBinding.refresh fonctionne bien sur les graphes, il n'est pas satisfaisant pour les tableaux car le nombre de lignes affichées ne s'adapte à la "nouvelle taille" (suite au refresh). Dans mon tableau excel, j'ai 2 lignes "d'en-tête", n lignes de données XML, 1 ligne vide,1 ligne de formule (moyenne de la colonne). J'aimerai que quel que soit n, l'intégralité des données soient visibles.
Bonjour !
'v1nce' nous a écrit ...
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu effectif des xml. PS: une fois que j'aurai mon objet excel je sais comment rafraichir les données XML, il faut faire un ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Pour récupérer votre objet Excel utilisez l'objet OleFormat de votre objet Word. N'oubliez pas de référencer Excel dans VBE :
Dim maFeuille As Excel.Workbook With ActiveDocument.InlineShapes(1).OLEFormat If .ClassType = "Excel.Sheet.8" Then ' il faut d'ABORD activer !! .Activate Set maFeuille = .Object maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh End If End With
Est-ce que ça vous fait avancer un peu ?
Anacoluthe « C'est encore en méditant l'objet que le sujet a le plus de chance de s'approfondir. » - Gaston BACHELARD
Bonjour,
Merci, merci, merci.
.Activate fallait le savoir.
2 questions supplémentaires si vous voulez bien :
1) Lorsque j'insère un objet Excel et que je le lie à des données XML, il
stocke le chemin complet dans
maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL. Est-il
possible de forcer un chmin relatif ? Sinon comment modifier le chemin a
posteriori ? (maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL =
"XML/MY151.xml" ne fonctionne pas : erreur 450 affectation de propriété
incorrecte)
2) Si le DataBinding.refresh fonctionne bien sur les graphes, il n'est pas
satisfaisant pour les tableaux car le nombre de lignes affichées ne s'adapte
à la "nouvelle taille" (suite au refresh).
Dans mon tableau excel, j'ai 2 lignes "d'en-tête", n lignes de données XML,
1 ligne vide,1 ligne de formule (moyenne de la colonne). J'aimerai que quel
que soit n, l'intégralité des données soient visibles.
Bonjour !
'v1nce' nous a écrit ...
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu
effectif des xml.
PS: une fois que j'aurai mon objet excel je sais comment rafraichir les
données XML, il faut faire un
ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Pour récupérer votre objet Excel utilisez l'objet OleFormat
de votre objet Word. N'oubliez pas de référencer Excel dans VBE :
Dim maFeuille As Excel.Workbook
With ActiveDocument.InlineShapes(1).OLEFormat
If .ClassType = "Excel.Sheet.8" Then
' il faut d'ABORD activer !!
.Activate
Set maFeuille = .Object
maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
End If
End With
Est-ce que ça vous fait avancer un peu ?
Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD
2 questions supplémentaires si vous voulez bien : 1) Lorsque j'insère un objet Excel et que je le lie à des données XML, il stocke le chemin complet dans maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL. Est-il possible de forcer un chmin relatif ? Sinon comment modifier le chemin a posteriori ? (maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL = "XML/MY151.xml" ne fonctionne pas : erreur 450 affectation de propriété incorrecte)
2) Si le DataBinding.refresh fonctionne bien sur les graphes, il n'est pas satisfaisant pour les tableaux car le nombre de lignes affichées ne s'adapte à la "nouvelle taille" (suite au refresh). Dans mon tableau excel, j'ai 2 lignes "d'en-tête", n lignes de données XML, 1 ligne vide,1 ligne de formule (moyenne de la colonne). J'aimerai que quel que soit n, l'intégralité des données soient visibles.
Bonjour !
'v1nce' nous a écrit ...
Mon problème c'est de "synchroniser" les graphes dans le Word sur le contenu effectif des xml. PS: une fois que j'aurai mon objet excel je sais comment rafraichir les données XML, il faut faire un ActiveWorkbook.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh
Pour récupérer votre objet Excel utilisez l'objet OleFormat de votre objet Word. N'oubliez pas de référencer Excel dans VBE :
Dim maFeuille As Excel.Workbook With ActiveDocument.InlineShapes(1).OLEFormat If .ClassType = "Excel.Sheet.8" Then ' il faut d'ABORD activer !! .Activate Set maFeuille = .Object maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.Refresh End If End With
Est-ce que ça vous fait avancer un peu ?
Anacoluthe « C'est encore en méditant l'objet que le sujet a le plus de chance de s'approfondir. » - Gaston BACHELARD
Anacoluthe
Bonjour !
'v1nce' nous a écrit ...
maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL = "XML/MY151.xml" ne fonctionne pas : erreur 450 affectation de propriété incorrecte
Vous devez faire un nouveau Import si l'URL change...
2) Si le DataBinding.refresh fonctionne bien sur les graphes, il n'est pas satisfaisant pour les tableaux car le nombre de lignes affichées ne s'adapte à la "nouvelle taille" (suite au refresh).
Refresh n'actualise que les données d'une même source... Je pense que vous devez réinitialiser l'XmlMap ou son DataBinding Il s'agit ici de fonctions vba XL. Voyez plutôt le forum frère avec leurs petites cases :-)
Anacoluthe « C'est encore en méditant l'objet que le sujet a le plus de chance de s'approfondir. » - Gaston BACHELARD
Bonjour !
'v1nce' nous a écrit ...
maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL =
"XML/MY151.xml" ne fonctionne pas : erreur 450 affectation de propriété incorrecte
Vous devez faire un nouveau Import si l'URL change...
2) Si le DataBinding.refresh fonctionne bien sur les graphes, il n'est pas
satisfaisant pour les tableaux car le nombre de lignes affichées ne s'adapte
à la "nouvelle taille" (suite au refresh).
Refresh n'actualise que les données d'une même source...
Je pense que vous devez réinitialiser l'XmlMap ou son DataBinding
Il s'agit ici de fonctions vba XL.
Voyez plutôt le forum frère avec leurs petites cases :-)
Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD
maFeuille.XmlMaps("NewDataSet_Mappage").DataBinding.SourceURL = "XML/MY151.xml" ne fonctionne pas : erreur 450 affectation de propriété incorrecte
Vous devez faire un nouveau Import si l'URL change...
2) Si le DataBinding.refresh fonctionne bien sur les graphes, il n'est pas satisfaisant pour les tableaux car le nombre de lignes affichées ne s'adapte à la "nouvelle taille" (suite au refresh).
Refresh n'actualise que les données d'une même source... Je pense que vous devez réinitialiser l'XmlMap ou son DataBinding Il s'agit ici de fonctions vba XL. Voyez plutôt le forum frère avec leurs petites cases :-)
Anacoluthe « C'est encore en méditant l'objet que le sujet a le plus de chance de s'approfondir. » - Gaston BACHELARD