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 :

Créer une macro pour remplacer caractères accentués en code HTML


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    Infographiste, Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, Webdesigner
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 109
    Points : 70
    Points
    70
    Par défaut Créer une macro pour remplacer caractères accentués en code HTML
    Bonjour à tous et à toutes,

    Avant de commencer, je tiens à préciser que je suis novice en macro Word et en macro en VBA en particulier, donc SVP soyez indulgents

    Je souhaiterai créer une macro (je suppose en VBA) afin de remplacer, par exemple, les "é" par "é" ou les è par "è" (autrement dit en code HTML). (Ça existe peut-être déjà remarquez; si oui, où puis-je la trouver/télécharger ?)
    J'utilise actuellement la fonction Rechercher/Remplacer de Word, mais c'est long et fastidieux car il faut que je fasse caractère "spéciaux ou accentués" par caractère.

    Pouvez-vous SVP m'aider à rédiger une macro en VBA (pour 2 caractères (comme les les "é" par "é" ou les è par "è"); une fois que j'aurais compris quoi taper, je m'arrangerai pour les autres caractères) ?

    Dans un autre sujet, une personne donnait le code suivant, mais je ne sais pas (trop) où et comment le mettre sous Word 2010 :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    Sub DVP_EncrypteDecrypte_EncrypteParRemplacement()
        '// Ne pas afficher les modifications
        Application.ScreenUpdating = False
     
        '// Ne pas afficher le texte masqué
        ActiveWindow.View.ShowHiddenText = False
     
        '// Aller en début de document
        Selection.HomeKey Unit:=wdStory
     
        '// Mettre dans le presse-papier le caractère à remplacer en texte masqué
        Selection.TypeText Text:="e"
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        With Selection.Font
            .Name = "Courier New"
            .Size = 12
            .Bold = False
            .Italic = False
            .Underline = wdUnderlineNone
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = True
            .SmallCaps = False
            .AllCaps = False
            .Color = wdColorBlack
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Spacing = 0.25
            .Scaling = 100
            .Position = 0
            .Kerning = 0
            .Animation = wdAnimationNone
        End With
        Selection.Cut
     
        '// Remplacer le caractère concerné
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "e"
            .Replacement.Text = "^cs"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = True
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
     
            '// Aller en début de document
        Selection.HomeKey Unit:=wdStory
     
        '// Mettre dans le presse-papier le caractère à remplacer en texte masqué
        Selection.TypeText Text:="t"
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        With Selection.Font
            .Name = "Courier New"
            .Size = 12
            .Bold = False
            .Italic = False
            .Underline = wdUnderlineNone
            .UnderlineColor = wdColorAutomatic
            .StrikeThrough = False
            .DoubleStrikeThrough = False
            .Outline = False
            .Emboss = False
            .Shadow = False
            .Hidden = True
            .SmallCaps = False
            .AllCaps = False
            .Color = wdColorBlack
            .Engrave = False
            .Superscript = False
            .Subscript = False
            .Spacing = 0.25
            .Scaling = 100
            .Position = 0
            .Kerning = 0
            .Animation = wdAnimationNone
        End With
        Selection.Cut
     
        '// Remplacer le caractère concerné
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "t"
            .Replacement.Text = "^cx"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = True
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
     
        '// Ne pas afficher le texte masqué
        ActiveWindow.ActivePane.View.ShowAll = False
     
        Application.ScreenUpdating = True
    End Sub
    D'autre part, dans le code ci-dessus, je ne comprends pas pourquoi il faut "Mettre dans le presse-papier le caractère à remplacer en texte masqué". Est-ce que c'est indispensable ?

    D'avance merci pour vos réponses

  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,

    J'ai un tuto qui traite du replacement.
    http://heureuxoli.developpez.com/off...-et-remplacer/
    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
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à tester plus à fond et si ok à compléter, sortie des décombres
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub Remplacer()
    Dim Str As String
        ActiveDocument.Select
        Str = Selection
        Selection = Encode(Str)
        Selection.Font.Color = wdColorAutomatic
        Application.ScreenRefresh
    End Sub
     
    Private Function Encode(sStr As String) As String
    Dim sIn() As Variant, sOut() As Variant
    Dim sOut2 As String, i As Long
     
        sIn = Array("À", "Á", "Â", "Ã", "Ä", "Å", "à", "á", "â", "ã", "ä", _
                "å", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "ò", "ó", "ô", "õ", "ö", _
                "ø", "È", "É", "Ê", "Ë", "è", "é", "ê", "ë", "Ç", "ç", "Ì", _
                "Í", "Î", "Ï", "ì", "í", "î", "ï", "Ù", "Ú", "Û", "Ü", "ù", _
                "ú", "û", "ü", "ÿ", "Ñ", "ñ", "ß", "Ą", "ą", "Ę", _
                "ę", "Ł", "ł", "Ż", "ż")
     
        sOut = Array("À", "Á", "Â", "Ã", "Ä", "Å", _
                "à", "á", "â", "ã", "ä", "å", "Ò", _
                "Ó", "Ô", "Õ", "Ö", "Ø", "ò", "ó", _
                "ô", "õ", "ö", "ø", "È", "É", "Ê", _
                "Ë", "è", "é", "ê", "ë", "Ç", "ç", _
                "Ì", "Í", "Î", "Ï", "ì", "í", "î", _
                "ï", "Ù", "Ú", "Û", "Ü", "ù", "ú", _
                "û", "ü", "ÿ", "Ñ", "ñ", "ß", "Ą", _
                "ą", "Ę", "ę", "Ł", "ł", "Ż", "ż")
     
        sOut2 = sStr
        For i = LBound(sIn) To UBound(sIn)
            sOut2 = Replace(sOut2, sIn(i), sOut(i))
        Next i
     
        Encode = sOut2
    End Function

Discussions similaires

  1. [XL-2003] Créer une macro pour vider le contenu de certaines cellules
    Par lolonico1974 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/06/2010, 09h24
  2. [XL-2003] Créer une macro pour plusieurs fichiers excel
    Par bocki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 22h53
  3. Créer une macro pour vérifier des prix
    Par lolonico dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2009, 10h54
  4. Créer une fonction pour remplacer des caractères
    Par virtuadrack dans le forum C++
    Réponses: 4
    Dernier message: 11/09/2008, 14h52
  5. Réponses: 8
    Dernier message: 09/01/2007, 16h30

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