Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2011, 19h49   #1
Invité de passage
 
Homme Alex
MultIT
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Alex
Localisation : Belgique

Informations professionnelles :
Activité : MultIT

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 2
Points : 2
Par défaut Exportation XML

Salut,

Tout d'abord, il faut que j'explique rapidement le contexte dans lequel je suis :
Je commence en VBA. Je n'ai pas vraiment touché la programmation depuis la fin de mes études, il y a plus de 15a. J'ai les notions de l'orienté objet, mais aucune expérience sur VBA, à part ce que j'ai appris ces 5 derniers jours. Le fait est que j'ai une feuille excel qu'on m'a demandé de faire selon un timing un peu trop serré, du coup, cela ne me laisse pas le temps de faire quelques tutoriaux quasi obligatoires pour me familiariser avec VBA.
... donc j'espère que vous m'excuserez de cette absence de connaissances parfois basiques du VBA que probablement 95% des lecteurs ici présents ont déjà.

J'ai un fichier .xlms dans lequel j'ai mappé un schéma XSD. Le mappage porte le nom S216_Map (onglet Dev, afficher Source). Il n'est pas gros le XSD, j'ai un header contenant 8 données à stipuler, et j'ai un content avec 2 sections qui contiennent chacune 6 valeurs (qui elles, peuvent être encodées de 1 à X fois par l'utilisateur finale)
Le but de cette sheet est simple : Elle sert à encoder les données, puis une fois effectué, avoir un bouton pour exporter cela dans un fichier XML avec un nom de fichier qui sera composé en partie de certaines valeurs encodées dans la section header.

Créer la string qui sera à la base du nom du fichier, je pense que je saurais me débrouiller. Mais avant de faire ça, je voulais que l'export fonctionne, c'est plus important.

Donc j'ai cherché sans trouver un réel exemple concret, car apparemment, ce ne sont pas des fonctions souvent utilisées(XmlMaps, XmlMap). Enfin je suis tombé sur une ligne de commande qui finalement m'a permis de réussir à exporter le fichier (que j'ai analysé et qui est valide)
J'ai donc un beau bouton nommé "Exporter", et j'ai dans mon code VBA une Sub on ne peut plus minimaliste :

Code :
1
2
3
4
 
Sub ExportS216()
 ActiveWorkbook.XmlMaps(1).Export "V:\XML\TestRapport.xml"
End Sub
En fait je suis étonné que ca marche ? Et en fait j'ai plein de questions mais je ne sais pas bien par où commencer ni n'ai envie de faire un post trop long.
- aucune variable à définir ?

- comment récuperer le RC, avec quel type de Dim

- Quand je vais sur le site MSDN, ils parlent de XmlMap et XmlMaps, mais aussi de [URL="http://msdn.microsoft.com/fr-fr/library/microsoft.office.interop.excel.ixmlmap(v=office.11).aspxIXmlMaps[/URL], ca a le mérite d'un peu plus me brouiller. J'ai malgré tout essayé de plein de manières différentes de me faire des petites macros pour ne fut-ce que afficher dans une MsgBox certaines properties du mappage de ma feuilles, mais sans succès.

Dernière question dans ce post décousu : comment, dans mon code, puis-je simplement afficher quelques properties de mon map (le S216_Map que je vois dans sur ma feuille excel) ? J'en ai pas vraiment besoin, mais c'est dans le but de comprendre simplement comment accéder à un objet instancié, ici en l'occurence ce qui représente mon map.
Quelque chose du genre (ce que j'ai mis en bas à part les Dim n'est pas du code)

Dim MonMap As IXmlMap
Dim NomDuMap As String

MonMap = S216_Map
NomDuMap = MonMap.RootElementName
Debug.Print NumDuMap
etc...

J'ai essayé ceci :
Code :
1
2
3
4
 
Dim mymap As XmlMaps
mymap = ActiveWorkbook.XmlMaps(1)
mymap.Export "V:\XML\SuperRapport.xml"
... mais ca marche pas.

Tout ces problèmes sont clairement liés au fait que je ne connais pas (encore) VBA, du coup, si qqun a un peu de temps à m'accorder sur ce forum, ca serait sympa. Le post est déjà assez long ainsi.

Merci
Dredger73 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 20h23   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

Apparemment tu as un probleme dans le type de variable ainsi que dans son instanciation (http://msdn.microsoft.com/en-us/library/gg469857.aspx)

C'est a essayer
Code :
1
2
3
Dim mymap As XmlMap
Set mymap = ActiveWorkbook.XmlMaps(1)
mymap.Export "V:\XML\SuperRapport.xml"
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 21h09   #3
Invité de passage
 
Homme Alex
MultIT
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Alex
Localisation : Belgique

Informations professionnelles :
Activité : MultIT

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 2
Points : 2
Merci Jérome,

Ca marche en effet, mais il y a un soucis, c'est que si j'exécute 2x la routine il me met une erreur :
Run-time error '-2147467259 (80004005)': Method 'Export' of object 'XmlMap" failed

Faut-il libérer les ressources en fin de routine ?

Merci,

Edit:
Ca fonctionne, j'ai un peu cherché et j'ai trouvé un code qui tourne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Sub Export216()
 
Dim returnValue As XlXmlExportResult
Dim mymap As XmlMap
Dim NomDuMap As String
 
 Set mymap = ActiveWorkbook.XmlMaps(1)
 returnValue = mymap.Export("V:\XML\SuperRapportBIS.xml", True)
 NomDuMap = ActiveWorkbook.XmlMaps(1).RootElementName
 Debug.Print NomDuMap
 
End Sub
Suis déjà bien content avec ça.
Je continue, si j'ai encore un soucis je repasserai par ici

Merci
Dredger73 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h29.


 
 
 
 
Partenaires

Hébergement Web