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 :

Macro remplacer dans word


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 37
    Points
    37
    Par défaut Macro remplacer dans word
    Bonjour à tous,

    J’espère que vous allez bien.

    Voila j'aurai une petite question concernant Word. Vu que je n'ai trouver aucun réponse claire après ma recherche.

    Voila en fait j'aimerai créer une macro qui remplacerait par exemple toutes les lettres "e" du texte par des "x", les "h" par des "a", etc.

    Le but étant de faire une sorte de crypteur de texte, les textes ne deviendraient que lisibles en connaissant l’existence d'une deuxième macro qui fera les changements inverses.

    J'espère avoir été assez précis. Si quelqu'un pourrait m’expliquer brièvement svp ?

    Merci beaucoup

    Ps.- j'utilise Word 2013 je sais pas si ça change qqchose ?

    Ps.- et si qqun a un petit lien ou on peut trouver une liste de beaucoup de macro ça serait sympa

  2. #2
    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
    Bonjour skk201 et bienvenue sur DVP.com

    Il existe un tutoriel sur la recherche/remplacement dans Word qui traite du sujet.

    Mais j'ai une remarque, tu dois faire très attention dans ce type de codage: si tu remplaces "a" par "x" par exemple puis que tu remplaces "x" par "k" tu comprends que tu as alors remplacé tous les "a" et tous les "x" par "k" donc tu ne pourras décrypter ton texte.
    Pour éviter ce problème, tu vas devoir utiliser une propriété de type couleur pour éviter de traiter 2 fois les caractères remplacés.

    En plus du présent forum, de nombreuses ressources sont à ta disposition :
    - une FAQ
    - des tutoriaux
    - des critiques de livres

    Si certains éléments te paraissent encore complexes ou si tu as des besoins précis, n'hésite pas à nous solliciter, nous essayerons d'y répondre.

    A bientôt

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    Haha,

    en fait laissez tomber, c'est encore trop compliqué pour moi. Je dois encore attendre avant de maîtriser tout ça.

    Je pensais que les macro sur Word étaient plus faciles, comme sur Access.

    Mais c'est pas grave un jour j'y arriverai !

    Merci pour tout .

    Bonne journée

  4. #4
    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 skk201,

    Exceptionnellement je veux bien le faire pour un exemple pour que tu puisses comprendre. Pour cela, envoie-nous ton fichier, s'il ne contient pas d'informations confidentielles ou illégales.

    Je te donne le code pour changer par exemple les "e" en "x", les "x" en "y" et les "y" en "e" et je le fais sur ton fichier.

    Après ce sera à toi d'adapter le code car l'un des principes de DVP suit le proverbe chinois extrait du Huainanzi chapitre 17 : "si tu donnes un poisson à un homme, il se nourrira une seule fois ; si tu lui apprends à pêcher, il se nourrira toute sa vie".

    @+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    Ça serait extrêmement sympa !

    Mais pas besoin de te tuer à la tache !

    J'aurai juste besoin que me fasse une macro, qui change 2 lettres je te laisse choisir lesquels , et une 2e macro, ou une deuxième partie de la macro qui ferait le mouvement inverse.

    Pas besoin de te soucier pour l’instant de ton problème de double-remplacement.

    Je m'occuperai ça plus tard, j'ai une idée pour régler ce problème.

    Et il faudrait que tu ajoutes qqpart un bouton pour lancer les macro si possible.

    Si tu pouvais me faire cela, ça serai cool.

    Je t'enverrai le résultat quand ça sera fini !

    (Désolé si je fais long pour répondre, mais je suis en pleine période d'examens finaux)

    Voila un fichier .rar avec 2 fichier un .doc et un .docx. Je préférais que tu le fasse sur le docx, mais si tu ne peux pas ou que c'est plus simple sur le .doc ça me conviens aussi ! Je te laisse faire les modifications nécessaires.

    Merci beaucoup !
    Fichiers attachés Fichiers attachés

  6. #6
    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 skk201,

    Voici les macros pour crypter (2 encryptages : les "e" en "s" et les "t" en "x") et décrypter (elle fonctionne pour tous les encryptages du type précédent et pour n'importe quel nombre d'encryptage). Ci-joint un exemple de ton texte encrypté. Comme tu n'as pas donné de version, je l'ai fait en Word 2003 (doc). C'est pareil (à peu de choses près sur les versions supérieures).

    Voilà pour encrypter
    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
    Voilà pour décrypter
    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
    Sub DVP_EncrypteDecrypte_DecrypteParRemplacement()
        Application.ScreenUpdating = False
     
        ActiveWindow.ActivePane.View.ShowAll = True
     
        '// Aller en début de document
        Selection.HomeKey Unit:=wdStory
     
        Selection.Find.ClearFormatting
        Selection.Find.Font.Hidden = True
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Font.Hidden = False
        With Selection.Find
            .Text = "^?"
            .Replacement.Text = "^&$$$"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = True
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
     
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "$$$^?"
            .Replacement.Text = ""
            .Forward = False
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = True
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
     
        Application.ScreenUpdating = True
    End Sub
    @+

  7. #7
    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 skk201,

    Pas besoin de te soucier pour l’instant de ton problème de double-remplacement.

    Je m'occuperai ça plus tard, j'ai une idée pour régler ce problème.
    Comme tu ne dis pas comment faire, j'ai utilisé des caractères masqués dans ton texte pour que ça fonctionne dans tous les cas.

    Tu as donc ce que tu as demandé, ce qui n'est pas forcément ce que tu veux, c'est un problème de spécifications (on a souvent la même chose avec les "commerciaux" au boulot qu'il faut piloter pour qu'ils décrivent ce qu'ils attendent).

    @+

  8. #8
    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 skk201

    Et il faudrait que tu ajoutes qqpart un bouton pour lancer les macro si possible.
    Si tu pouvais me faire cela, ça serai cool.
    Pour les boutons, c'est possible mais 1°) c'est plus des manip qu'un code réellement même si on peut intégrer des boutons qui lancent des macros dans des modèles 2°) totalement lié à ta version de Word et les manip sont vraiment différentes.

    A titre d'exemple, voici ce qu'il faut faire pour Word 2004 Mac. (Désolé mais j'ai laissé mon PC au boulot ce soir pour qu'il exécute des macros toute la nuit)
    1. Outils > Personnaliser les barres d'outils/menu
    2. Choisir Onglet "Commandes"
    3. Choisir dans la liste des commandes "Macros" (liste de droite, mais rien à voir avec les primaires à l'UMP)
    4. Choisir dans la liste contextuelle ta macro, ici "DVP_EncrypteDecrypte_Decrypt..."
    5. Effectue un glisser-déposer sur la barre (il faut qu'elle soit affichée) que tu veux à l'endroit que tu désires
    6. Clique dessus le nom (à rallonge) de ta macro dans ta barre avec le bouton droit et choisit "Propriétés" puis choisit dans Afficher "par défaut". Tu peux même alors t'amuser à redessiner une icône perso.
    7. Valide et sauvegarde ton modèle (ici j'ai pris Nomal.dot pour que ce soit plus facile)


    @+

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Secrétaire - Service Cantonal de la jeunesse (VS-CH)
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 37
    Points
    37
    Par défaut
    Merci pour tout.

    Je vais essayer tout cela prochainement, ces temps si je suis un peu occupé avec mes examens finaux.

    Je te donnerai le résultat quand ça sera fait.

    Juste pour voir si mon idée tiens la route, pour contourner ton problème j'ai pensé remplacer d'abord par exemple "e" en " 0050 " et "z" en " 0260 ". Puis transformé la lettre "codée" en lettre de remplacement une fois que toutes les lettres auraient été transformées en code.

    Vu que mes textes ne contiendront pas de chiffre il n'y a aucun risque de confusion.

    Mais pour que cela marche il faudrait 2 choses :

    1. Que l'on puisse bien remplacé par " 0260 " (avec les espaces).
    2. Que la macro ne remplace pas les lettres des entêtes ni des pieds de pages qui risquent de contenir des dates.


    Est-ce que tu penses que c'est possible ? et que c'est une bonne idée ?

    Ps.- J'ai relu ton article sur le remplacement dans Word, et je tiens a te dire merci pour cet excellent travail, c'est vraiment très bien fait et très clair (en tout cas suffisamment pour moi) BRAVO ! Mais c'est que à la 2e lecture que j'ai vu que c'était toi qui l'avais rédigé.

  10. #10
    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 skk201,

    Je vais essayer tout cela prochainement, ces temps si je suis un peu occupé avec mes examens finaux.
    On est tous passer par là
    Je te donnerai le résultat quand ça sera fait.
    Ok
    Juste pour voir si mon idée tiens la route, pour contourner ton problème j'ai pensé remplacer d'abord par exemple "e" en " 0050 " et "z" en " 0260 ". Puis transformé la lettre "codée" en lettre de remplacement une fois que toutes les lettres auraient été transformées en code.

    Vu que mes textes ne contiendront pas de chiffre il n'y a aucun risque de confusion.

    Mais pour que cela marche il faudrait 2 choses :
    1. Que l'on puisse bien remplacé par " 0260 " (avec les espaces).
    2. Que la macro ne remplace pas les lettres des entêtes ni des pieds de pages qui risquent de contenir des dates.


    Est-ce que tu penses que c'est possible ? et que c'est une bonne idée ?
    Oui on peut aussi rechercher sur " 0260" avec l'espace
    Pour les entêtes/pieds de page, les recherches de base ne travaillent pas sur des blocs là
    Ps.- J'ai relu ton article sur le remplacement dans Word, et je tiens a te dire merci pour cet excellent travail, c'est vraiment très bien fait et très clair (en tout cas suffisamment pour moi) BRAVO ! Mais c'est que à la 2e lecture que j'ai vu que c'était toi qui l'avais rédigé.
    Merci

    @+ et bonne chance pour tes examens

Discussions similaires

  1. [XL-2003] Ajout de lignes par macro Excel dans word
    Par fb62840 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/09/2012, 11h39
  2. Macro impression dans word
    Par Alex02200 dans le forum VBA Word
    Réponses: 1
    Dernier message: 23/05/2011, 18h21
  3. Réponses: 7
    Dernier message: 28/05/2009, 16h02
  4. rechercher remplacer dans word 2003
    Par MALREGG dans le forum Word
    Réponses: 8
    Dernier message: 27/06/2007, 13h26
  5. recherche et remplacement dans Word >=2002
    Par jpg80150 dans le forum Access
    Réponses: 5
    Dernier message: 12/02/2007, 20h09

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