Import de données XML pour la gestion d'un club sportif

Jean-Yves23

XLDnaute Nouveau
Bonjour,

A coté de mes activités professionnelles, je suis impliqué dans la gestion d'un club sportif (d'escrime). Actuellement, nous tentons de développer un petit Excel pour faciliter notre travail. D'ailleurs, je pense m'inspirer fortement des téléchargements disponibles sur ce forum (certains sont de vrais petites perles!!!).

la base de données des membres du club est générée via un petit programme sous forme xml (voir
HTML:
http://cjoint.com/?hAlHeCCsYL
Code:
). J'ai donc essayé d'importer cette base xml dans un classeur Excel. Malheureusement, il semble qu'Excel a quelques difficultés avec les caractères spéciaux (é,è,ç,î,â) contenus dans cette bdd. On m'a proposé diverses solutions mais toutes via OOCalc ce qui est moins pratique puisque idéalement il faudrait qu'à l'ouverture du classeur la base de donnée soit importée sur une feuille automatiquement.
Attention, aucune modification de la bdd ne doit être faite via le classeur. Il s'agit seulement d'une lecture des données.

Auriez-vous des suggestions, commentaires, réflexions, pour réussir l'import de nos membres dans Excel?

Grand merci d'avance,
Jean-Yves

NB : Mon précédent post concernait une petit application pour mon boulot qui est sur le point d'être finie. Je tiens particulierement à remercier PierreJean pour ses contributions.
 

mromain

XLDnaute Barbatruc
Re : Import de données XML pour la gestion d'un club sportif

bonjour Jean-Yves23,

A tout hasard (j'ai pas testé), peut-être en remplaçant ces caractères par d'autres valides (ç par c) dans un éditeur de texte avant d'importer les données dans Excel.

A+
 

Jean-Yves23

XLDnaute Nouveau
Re : Import de données XML pour la gestion d'un club sportif

Bonjour mromain,

Tout d'abord, merçi de m'avoir répondu.

Ensuite, j'ai essayé et ça à l'air de fonctionner mais ne serait-il pas possible de le faire via une macro Excel (dans le but de simplifier l'import des données) ? A la limite on pourrait même imaginer de rechanger les symboles incompatibles une fois l'import réalisé.
Pour cette dernière partie je pense pouvoir le réussir en vba mais passer par l'éditeur de texte pour changer les caractères, alors là....

A+
 

mromain

XLDnaute Barbatruc
Re : Import de données XML pour la gestion d'un club sportif

bonjour Jean-Yves23,

Voici une macro pour remplacer des caractères dans un fichier texte (.txt, .csv, .xml, ...) :
Code:
Public Sub RemplacerCaractereFichier(pathFichier As String, aRemplacer(), lesRemplacants())

'si les tableaux ne font pas la même taille, quitter la macro
If UBound(aRemplacer) <> UBound(lesRemplacants) Then Exit Sub

'déclaration des variables
Dim myFso As Object, textFileOrig As Object, textFileFin As Object
Dim i As Integer, extension As String, fichierTemp As String, ligne As String

'créer le path d'un fichier temporaire
extension = Right(pathFichier, InStr(StrReverse(pathFichier), "."))
Do
    fichierTemp = Left(pathFichier, Len(pathFichier) - Len(extension)) & CStr(Int(100 * Rnd)) & extension
Loop Until Dir(fichierTemp) = vbNullString

'ouvrir le fichier texte et créer le fichier temp
Set myFso = CreateObject("Scripting.FileSystemObject")
Set textFileOrig = myFso.OpenTextFile(pathFichier, 1)
Set textFileFin = myFso.CreateTextFile(fichierTemp, True)

'boucler sur toutes les ligne du fichier texte
While Not textFileOrig.AtEndOfStream
    'récupérer la ligne
    ligne = textFileOrig.ReadLine
    'remplacer tous les caractères
    For i = LBound(aRemplacer) To UBound(aRemplacer)
        ligne = Replace(ligne, aRemplacer(i), lesRemplacants(i))
    Next i
    'écrire la ligne dans le fichier temp
    textFileFin.WriteLine ligne
Wend

'fermer les fichiers
textFileOrig.Close: Set textFileOrig = Nothing
textFileFin.Close: Set textFileFin = Nothing

'supprimer le fichier original et renommer le fichier temp (avec le nom original)
myFso.DeleteFile pathFichier
Name fichierTemp As pathFichier

Set myFso = Nothing
End Sub
et voici comment il faut l'utiliser
Code:
Sub test()

Dim aRemplacer(), lesRemplacants()
aRemplacer = Array("à", "é", "è")
lesRemplacants = Array("a", "e", "e")

RemplacerCaractereFichier "E:\XLS\test\test.txt", aRemplacer, lesRemplacants

End Sub
attention : il faut que les deux tableaux ("aRemplacer" et "lesRemplacants") aient la même taille.

A la limite on pourrait même imaginer de rechanger les symboles incompatibles une fois l'import réalisé.
pour cette partie, ça me semble un peu plus compliquer...

a+
 
Dernière édition:

Jean-Yves23

XLDnaute Nouveau
Re : Import de données XML pour la gestion d'un club sportif

Bonjour mromain,

Je n'en espérais pas tant avec ta macro. je testerai ça très vite. Pour la seconde partie, je pense en fait remplacer les symboles spéciaux par des combinaisons de caractères normaux.

Par exemple, on pourrait imaginer de remplacer "à" par "aaccentgrave" ou "aag". Et puis de faire la manip inverse. Mais bon ca je pense que je devrais m'en sortir même si mes connaissances VBA sont assez limitées. Je pense utiliser l'enregistreur de macro puis faire un remplacement des mots entiers "aaccentgrave". Ça devrait le faire ;-)

Un énorme merci pour ta contribution.
Jean-Yves
 

Jean-Yves23

XLDnaute Nouveau
Re : Import de données XML pour la gestion d'un club sportif

Bonjour mromain, bonjour le forum,

Je viens d'essayer ta macro sur mon fichier test (
HTML:
http://cjoint.com/?hAlHeCCsYL
).
Il semble y avoir un petit souci car la boucle "while" ne fonctionne pas (le programme n'y rentre pas). En y regardant de plus près il semble que textFileOrig.AtEndOfStream reste malicieusement à "Vrai" en permanence. :(

Parfois, le programme renvoie une erreur au niveau de la ligne suivante :

Code:
Set textFileOrig = myFso.OpenTextFile(pathFichier, 1, -1)

Dans ces cas l'erreur indiquée dit :

Erreur '53'
Fichier introuvable

Une idée?

Encore merci
Jean-Yves
 

ninbihan

XLDnaute Impliqué
Re : Import de données XML pour la gestion d'un club sportif

Bonjour le forum,

Je ne suis pas un expert en xml, mais si tu changes dans la premiére ligne de ton fichier XML l'encoding UTF-8 par ISO-8859-1 via le bloc note cela semble ensuite OK pour excel...


Bon aprés midi,

Ninbihan
 

Statistiques des forums

Discussions
312 415
Messages
2 088 236
Membres
103 777
dernier inscrit
ddyyff