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 :

Rechercher/remplacer avec des caractères inconnus en VBA


Sujet :

VBA Word

  1. #1
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut Rechercher/remplacer avec des caractères inconnus en VBA
    Bonjour,

    J'utilise la macro suivant pour transformer (NPN°) en (PIECE N°), avec un formatage particulier :

    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
    Dim booTrouve As Boolean
    Selection.HomeKey unit:=wdStory
     
    Do
    With Selection.Find
        .Text = "(NPN°)"
            booTrouve = .Execute
    End With
    Selection.Font.Italic = True
    Selection.Font.Bold = True
    Selection.Font.Underline = True
    Selection.Font.Color = wdColorDarkRed
    Debug.Print "ok"
    Loop While booTrouve
     
     
     
     With Selection.Find
        .ClearFormatting
        .Text = "(NPN°)"
        .Replacement.ClearFormatting
        .Replacement.Text = "(PIECE N°)"
        .Execute Replace:=wdReplaceAll, Forward:=True, _
            Wrap:=wdFindContinue
    End With
    Or, mes documents ont des pièces N°, 1,2, .... 12, ....20 ...

    Je voudrais modifier la macro pour que le formatage/remplacement s'applique ainsi :

    (NPN°1) ou (NPN°12) devienne (PIECE N°1) ou (PIECE N°12), voire (NPN°1 : contrat de travail) devienne (PIECE N°1 : contrat de travail), je pense qu'il faut utiliser des caractères spéciaux comme ?? ou ** ... mais je ne vois pas comment les intégrer ...

    Si quelqu'un avait une petite idée ... ce serait hypra sympa

    Merci !

  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,

    Je ne comprend pas d'où vient ta difficulté.

    Si tu remplaces la séquence (NPN° par (PIECE N° ça devrait le faire.
    Ou alors tu ne dis pas tout !
    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 habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Merci de ton aide

    Mon code, actuellement, permet de transformer (NPN°) en (PIECE N°)

    Par contre, il ne permet pas de faire, par exemple (NPN°1: contrat de travail) en (PIECE N°1: contrat de travail)

    J'ai essayé ta modification et, par exempl, (NPN°1: contrat de travail) devient (PIECE N°1: contrat de travail)

    Si je suis plus clair ...

  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,

    C'est effectivement plus clair.
    Je pense que le plus simple est de le faire en deux étapes, une pour le remplacement et l'autre pour la mise en forme.
    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 habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Je le pense aussi mais la longueur de la chaîne variant en fonction de l'intitulé de la pièce, je pensais utiliser la fonction instr() mais je sèche totalement... Pour l implémenter a mon code. Merci

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

    Les caractères génériques permettent de faire une recherche sur une partie de chaîne.

    Là : http://sepia.developpez.com/office/w...emplacer/#L2-B
    Une petite explication.

    Si tu sèches, l'enregistreur de macro peut faire la différence. Il suffit de copier le code qu'il donne.
    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 !

  7. #7
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 312
    Points : 139
    Points
    139
    Par défaut
    Merci de ton aide, j'ai mis en place ce code qui (semble-t-il) ne crée pas d'erreurs après moult usages ...

    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
    Public Sub replace()
    Selection.HomeKey unit:=wdStory
    ScreenUpdating = False
     
     
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Replacement.Font.Bold = True ' on met en gras ce qui remplacera la chaine
        .Replacement.Font.Italic = True ' on met en italique ce qui remplacera la chaine
        .Replacement.Font.Underline = wdUnderlineSingle ' ' on souligne  ce qui remplacera la chaine
        .Replacement.Font.Color = wdColorDarkRed
        .MatchWildcards = True
        .Text = "(\(PIECE N°*\))" ' c'est ici que l'on cherche le (Pièce n°*) à transformer
        .Replacement.Text = "\1"
        .Forward = True
        .Execute replace:=wdReplaceAll
    End With
    End Sub
    Si cela peut aide qqn.

    Merci

Discussions similaires

  1. [Batch] Récupérer le nom de fichier avec des caractères inconnus
    Par Christophe.G dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 26/12/2014, 16h24
  2. RegExp rechercher mot avec des caractères qui diffèrent
    Par magic_dav dans le forum VBScript
    Réponses: 3
    Dernier message: 25/07/2012, 15h41
  3. Logique/algorithme et rechercher-remplacer avec des "chaînes soeurs"
    Par gratiert dans le forum Général Python
    Réponses: 4
    Dernier message: 25/06/2010, 18h00
  4. [VS] rechercher/remplacer avec des regexp
    Par v1nce dans le forum Visual Studio
    Réponses: 4
    Dernier message: 03/07/2007, 14h58

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