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

VBA Word Discussion :

Reconnaissance des caractères spéciaux dans du code Word VBA


Sujet :

VBA Word

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Reconnaissance des caractères spéciaux dans du code Word VBA
    Bonjour à tous,

    Je suis en train d'analyser le contenu d'un tableau (dans un document Word) par du code VBA et je n'arrive pas à récupérer les caractères spéciaux.

    Par exemple pour le caractère 'béta', j'obtiens un '?'.

    Y aurait-il un moyen de récupérer ces caractères spéciaux, pour les stocker ensuite dans une base de données par exemple ?

    Merci beaucoup.

    Laurent.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    On peut récupérer les caractères spéciaux par leur code ASCII.

    Que veux-tu faire ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse Heureux-oli,

    Je voudrais tout simplement pouvoir exploiter les caractères spéciaux de mon document Word dans un code VBA.

    Tu penses qu'avec la fonction Asc() c'est possible ?

    Laurent.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Tu ne veux que les caractères spéciaux ?

    Il suffit de faire une comparaison avec les caractères de base, si ce n'est pas dans ce range, c'est un caractère spécial.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim oTbl As Table
    Dim oRow As Row
    Dim oCell as Cell
    Dim myChar
     
    Set oTbl = ActiveDocument.Tables(1)
    For each oRow in oTbl.Rows
    For Each oCell in oRows.Cells
    For each myChar in oCell.Characters
    Debug.Print ASC(mychar)
    Next mychar
    Next oCell
    Next oRow
    Je l'ai écrit à la volée, mais il devrait le faire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup,

    Je vais tester çà.

    Laurent.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Malheureusement chaque fois que je rencontre un caractère spécial, le code Ascii de ce caractère est 63 (quel que soit le caractère spécial) :

    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
     
    Sub Macro1()
     
    Dim document1 As Document
    Dim i As Integer
    Dim ta As Table
    Dim j As Integer
     
    Dim chr1 As String
     
    Set document1 = Documents("Doc2.doc")
     
    For i = 1 To document1.Paragraphs.Count
        strTmp = document1.Paragraphs(i).Range.Text
     
        For j = 1 To Len(strTmp)
     
            chr1 = Mid(strTmp, j, 1)
            MsgBox chr1 & " : " & Asc(chr1)
        Next
     
    Next
     
    End Sub
    Comment faire pour que le code reconnaisse les caractères spéciaux avec leur bon code Asciii ?

    Merci beaucoup.

    Laurent.

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Tu les insères comment ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Salut Heureux-oli,

    En fait je suis en train de créer un fichier VBS de chargement d'une base de données à partir de documents Word.

    J'analyse chaque document Word et j'insère les informations dans une base de données.

    Et des fois, il y a des caractères spéciaux que je dois faire apparaître dans la base.

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le tout est de savoir si ces caractères sont dans la tables ASCII ou pas.
    Les symboles Windings par exemple ne sont pas dans la table ASCII.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    En fait, il s'agit d'une base scientifique et les caractères spéciaux sont des lettres greques, par exemple le caractère Unicode 03B3 (Grec Unicode).

    Enfin peut-être aussi qu'il y en a d'autres...

  11. #11
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut,

    Est-ce que tu as installé (et déclaré à ton Word) les polices Unicode (en fait la police "Arial Unicode MS Font" suffit).

    @+

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Salut Sepia,

    En fait dans Word tout est bien, je n'ai pas de souci.

    C'est quand je parse le fichier Word avec du VBS que cela pose des problèmes.

    Même quand je veux remplir un fichier texte avec des données du fichier Word qui contiennent des caractères spéciaux ma procédure plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Set fiWarningLogFile = FSO.OpenTextFile(WARNING_LOG_FILE, OpenFileForAppending, True)
    fiWarningLogFile.WriteLine pstWarning
    Merci.

    Laurent.

  13. #13
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut,

    Et pourquoi tu ne l'ouvres pas en format Word (au lieu du format texte), comme ça c'est Word qui gère son propre transcodage. En plus tu vas pouvoir bénéficier de l'API Word pour les recherches, les styles, les plans (si tu en as besoin).

    A moins que tu aies des contraintes que je n'ai pas vues.

    @+

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Sepia,

    En fait je suis dans un contexte VBScript car je dois alimenter des bases de données avec ce que je trouve dans les documents Word.

    Le code que j'ai envoyé fait partie de mes scripts et montre que quand j'essaye d'écrire dans un fichier de log (texte) ce que je trouve dans un document Word, cela plante quand il ya un caractère spécial.

    Laurent.

  15. #15
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut,

    OK je comprends maintenant pourquoi tu utilises VBS.

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par laurent_diep Voir le message
    Sepia,

    En fait je suis dans un contexte VBScript car je dois alimenter des bases de données avec ce que je trouve dans les documents Word.

    Le code que j'ai envoyé fait partie de mes scripts et montre que quand j'essaye d'écrire dans un fichier de log (texte) ce que je trouve dans un document Word, cela plante quand il ya un caractère spécial.

    Laurent.
    Salut,

    Mais le VBA permet aussi d'alimenter des bases de données via le DAO si la DB est Access et ADO pour les autres DB.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. Mettre des caractères spéciaux dans une déclaration
    Par Gunner4902 dans le forum Langage
    Réponses: 2
    Dernier message: 23/06/2008, 21h02
  2. [MySQL] Gestion des caractères spéciaux dans un update
    Par olivier94 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/03/2007, 17h13
  3. Réponses: 10
    Dernier message: 31/03/2006, 20h46
  4. Réponses: 5
    Dernier message: 23/10/2005, 18h27

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