IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise en forme dans un fichier xml "*.cxr"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    automatitien
    Inscrit en
    Novembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : automatitien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2015
    Messages : 60
    Par défaut Mise en forme dans un fichier xml "*.cxr"
    Bonjour à tous :hello: ,

    voila j'arrive sur la dernière étape d'un classeur dans lequel j'ai développé quelques macros pour me faciliter un travail de saisie.

    il s'agit maintenant d’exporter mes données au format XML "*.cxr" pour les importer ensuite dans un logiciel.

    jusque là tout va bien. je généré le fichier et les tabulations sont au bon endroit.

    par contre j'ai relevé un problème de taille ......:
    - la mise en forme des nombres à virgule est modifié 950.10 devient 950,1

    alors j'ai fais un test d'importation, après avoir remplacé les "," par des "." et le résultat final devient 950.01 ce qui n'est plus du tout la valeur voulu......

    du coup j'ai deux questions:
    Comment faire pour garder le bon nombre de décimales après la virgule.
    Comment remplacer les virgule par des points

    je vous met mon petit bout de code ci-dessous, la partie qui nous intéresse est compris entres les ligne 14 et 22.
    pour info je n'utilise pas les librairies XML (Je ne sais pas comment on fait) .

    Merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    'Ecrit dans le fichier cxr
    'Entête du fichier texte'
    Print #iFile, ("<LIBRARY>" )
    Print #iFile, ("<COMMENT>" )
    Print #iFile, ("    Essai2" )
    Print #iFile, ("  </COMMENT>" )
    Print #iFile, ("  <PLCTYPE>" )
    Print #iFile, ("    CJ2M" )
    Print #iFile, ("  </PLCTYPE>" )
    Print #iFile, ("  <SYMBOL>" )
    'Création du tableau par une boucle
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ar = Sheets("Format CX" ).Cells(5, 3).CurrentRegion.Value    '// valeurs dans un array (plus rapide)
       For i = 1 To UBound(ar, 1)       '// boucle sur les lignes
          str = ""
          For j = 1 To UBound(ar, 2)    '// boucle sur les colonnes
             str = str & ar(i, j) & vbTab  '// valeurs séparées par tabulations
          Next j
          Print #iFile, str             '// écrire dans le fichier
       Next i
     
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    'Pied de page du fichier texte
    Print #iFile, ("  </SYMBOL>" )
    Print #iFile, ("  </LIBRARY>" )
    Close #iFile                     '// Fermer le fichier

    Pour info, voici le rendu final dans le fichier *.CXR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Entrée_NX	WORD	900  Entrées_Rack_NX	0	IN
    Sortie_Nx	WORD	950  Sortie_Rack_NX	0	OUT
    RM_AG_Préparation_Floc	BOOL	901,  DESH_AG5141	0
    RM_AG_cuve_Coagulation	BOOL	901,01  DESH_AG6101	0
    DEF_Ppe_Dos_Coagulant	BOOL	901,03  DESH_PD5111	0
    DISJ_Ppe_Dos_Coagulant	BOOL	901,04  DESH_PD5111	0
    DEF_Ppe_Dos_pH	BOOL	901,05  DESH_PD5121	0
    DISJ_Ppe_Dos_pH	BOOL	901,06  DESH_PD5121	0

  2. #2
    Membre averti
    Homme Profil pro
    automatitien
    Inscrit en
    Novembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : automatitien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2015
    Messages : 60
    Par défaut
    En fait cela doit être du CSV plutôt que du XML ;-)

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    oui en effet c'est plus du format text que XML cette partie

    le soucis avec les variables tableaux c'est ".value" qui arrondi et transforme le decimale et cela tu ne peut rien y faire
    la seul solution c'est de boucler sur les cells au lieu d'un tableau et de prendre le ".text" de la cellule
    maintenant il y a des solution de derrière les fagots on copie tout en texte en 3 lignes

    je te laisse tester :débloque ta ligne "set plage...." et vire la mienne
    les vbtab se mettrons tout seuls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        With CreateObject("htmlfile")
            r = .parentwindow.clipboardData.clearData("Text") 'on vide le clipboard
            'Set plage = Sheets("Format CX").Cells(5, 3).CurrentRegion ' on détermine la plage
            Set plage = Range("A1:c10")
            plage.Copy ' on copie la plage
            code = Replace(.parentwindow.clipboardData.GetData("Text"), ",", ".") 'on récupère la plage au format STRING!!!!!!!!!! en remplaçant le séparateur décimal 
        End With
    Debug.Print code
    Application.CutCopyMode = False
    End Sub
    voila "01" restera "01" "0467" restera "0467"
    Nom : demo.gif
Affichages : 225
Taille : 300,9 Ko


    tu peux faire la même chose avec le dataobject si tu préfère
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre averti
    Homme Profil pro
    automatitien
    Inscrit en
    Novembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : automatitien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2015
    Messages : 60
    Par défaut
    Salut,

    Merci pour ta réponse.
    je suis désolé, je m'en été sorti et n'étais pas revenu sur le forum.

    je regarderai quand même ton code qui semble bien plus optimisé que le miens.

    à bientôt.

Discussions similaires

  1. [WD18] Garder la mise en forme d'un fichier XML
    Par jacquesprogram dans le forum WinDev
    Réponses: 11
    Dernier message: 17/09/2013, 16h21
  2. [XML][RSS] Mise en forme dans fichier XML
    Par Mister Nono dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 25/01/2007, 00h58
  3. Réponses: 3
    Dernier message: 13/04/2006, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo