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 :

Une fonction pour échapper les caractères spéciaux en XML ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 290
    Par défaut Une fonction pour échapper les caractères spéciaux en XML ?
    Bonjour,

    J'ai un projet Excel VBA dans lequel j'utilise le CustomUI, et j'ai besoin de produire dynamiquement des libellés encodés en XML, donc avec les guillemets remplacés par ", et tous les autres codes nécessaires. J'ai googlé et trouvé le moyen de faire des trucs bcp plus compliqués comme parser un fichier XML, mais je ne trouve rien pour simplement échapper les caractères spéciaux d'un texte. Il doit bien y avoir un truc prévu pour ça ?

    Merci pour toute piste !

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    voir du côté de la simple fonction VBA Replace

    Et si j'ai mal compris, présenter alors explicitement une source et un résultat attendu !


    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 290
    Par défaut
    Le Replace me permettrait de gérer un seul cas, ou bien de prévoir chacun des cas, mais je cherche quelque chose de plus standard...

    En gros, disons que je cherche à faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Txt = "Il a dit : ""ça boume ?"""
    Txt2 = une_fonction_ou_autre_systeme(Txt)
    ' Txt2 doit être encodé ainsi : 
    "Il a dit : &quot ;ça boume ?&quot ;"

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Là en VBA je ne vois pas mieux que cette fonction.

    Avec une variable tableau contenant source et conversion (ou encore via une feuille de paramétrages),
    il suffit de boucler sur chaque indice et d'effectuer le remplacement …

    Maintenant il existe peut-être dans un autre langage une fonction effectuant cette conversion
    (exemple du JScript pour le JSON) et si c'est interfaçable avec le VBA, …

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Regardes du côté des expressions rationnelles, je ne suis pas féru en la matière, mais tu replace tout en un seule passe!
    Dernière modification par AlainTech ; 24/10/2015 à 14h09.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Autre voie : ne pas échapper mais tout encoder en UTF-8 via ADODB.Stream

  7. #7
    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 heu
    bonjour
    test avec replace de VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test_avec_replace_VBA()
        Dim i As Long, txt As String
        a_remplacer = Array("ç", "é")
        remplacement = Array("ccedil;", "e")
        txt = "Il a dit : ""ça boume ?""" & vbCrLf
        txt = txt & "mais je  soupçonné qu'il me mént" & vbCrLf
        txt = txt & "ça ne mé fait pas rire "
        For i = LBound(a_remplacer) To UBound(a_remplacer)
            txt = Replace(txt, a_remplacer(i), remplacement(i))
        Next
        MsgBox txt
    End Sub
    test avec regular_replace (expression régulieres)
    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
    Sub TEST_avec_regular()
        Dim txt As String, a_remplacer(), remplacement(), valeur1 As String, valeur2 As String
        txt = "Il a dit : ""ça boume ?""" & vbCrLf
        txt = txt & "mais je  soupçonné qu'il me mént" & vbCrLf
        txt = txt & "ça ne mé fait pas rire "
        a_remplacer = Array("ç", "é")
        remplacement = Array("ccedil;", "e")
        For i = LBound(a_remplacer) To UBound(a_remplacer)
          valeur1 = a_remplacer(i): valeur2 = remplacement(i)
            txt = regular_replace(txt, valeur1, valeur2)
        Next
        MsgBox txt
    End Sub
    Function regular_replace(txt As String, Aremplacer As String, remplace As String)
        With CreateObject("VBScript.RegExp")
            .Global = True
            '.IgnoreCase = True
            .Pattern = Aremplacer
            regular_replace = .Replace(txt, remplace)
        End With
     
    End Function
    malheureusement dans ton cas on ne peut pas mettre tout les caracteres a remplacer dans le patern xcar la fonction replace de regexp remplace avec le meme caracteres on est donc obligé de bouclé sur un array

    j'avais une autre solution avec régular mais je ne la trouve plus je vais chercher
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction pour éviter les caractères spéciaux
    Par yousra01 dans le forum JDBC
    Réponses: 3
    Dernier message: 14/03/2011, 09h57
  2. Réponses: 6
    Dernier message: 21/04/2008, 18h49
  3. Réponses: 5
    Dernier message: 13/11/2007, 22h00
  4. [SQLite] Échapper les caractères spéciaux d'une requête ?
    Par Franz2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2007, 13h17
  5. une fonction pour enlever les doublons d'un array
    Par secteur_52 dans le forum Delphi
    Réponses: 1
    Dernier message: 27/06/2006, 13h45

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