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 :

Insérer un caractère spécial avec une chaine de caractères [WD-2002]


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Éditeur
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Éditeur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Insérer un caractère spécial avec une chaine de caractères
    Bonjour à tous,

    En cherchant des heures durant sur le Web, j'ai trouvé votre forum et j'ai pensé qu'il y aurait là peut-être quelqu'un pour m'aider.
    Je dois insérer dans un texte de plusieurs centaines de pages un caractère spécial (le carreau noir, symbole décimal 168) plus une espace insécable avant plusieurs mots récurrents. Ce qui représente plusieurs milliers d'insertions. Or la fonction chercher/remplacer ne reconnaît pas ce symbole (qui en copier/coller dans la barre de remplacement devient un rond noir). Je suis donc parti sur l'idée de programmer une macro, mais je ne trouve pas comment faire. Tout ce que j'ai testé ne fonctionne pas. J'en suis arrivé à étudier la méthode insert.before, mais je ne dois pas savoir faire, ou alors c'est impossible de lui demander de reconnaître des chaînes de caractères déterminées.
    Bref, s'il y avait quelqu'un pour m'aider, ce serait un grand soulagement.

  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,

    Pour la recherche et le remplacement, une piste là : http://heureuxoli.developpez.com/off...-et-remplacer/

    On peut en lieu et place d'une chaîne, utiliser la fonction Chr() avec le code ASCII du caractère.
    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
    Candidat au Club
    Homme Profil pro
    Éditeur
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Éditeur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci. Je vais essayer d'y trouver mon bonheur et reviendrai pour en donner le résultat.

  4. #4
    Candidat au Club
    Homme Profil pro
    Éditeur
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Éditeur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bon, je reviens directement parce que je n'y arrive pas (même si le guide que j'ai lu est bien fait et intéressant !). Pour faire un remplacement qui inclut un caractère spécial, soit je mets son code en dehors des guillemets du texte de remplacement et alors le programme me signale une erreur de rédaction, soit je l'intègre dans les guillemets et le remplacement affiché dans le texte comprend le code en toutes lettres :

    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
    Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "TRUC."
            .Replacement.Text = "ChrW(9830)^sTRUC."
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
     
        Selection.Find.Execute Replace:=wdReplaceAll
    End Sub
    Là on l'occurrence, je cherche à remplacer tous les "TRUC." de mon texte par un carreau noir (c'est le bon code, cela fonctionne si je fais une manipulation pour remplacer ce symbole par du texte par exemple), suivi d'un espace insécable et en conservant mon mot "TRUC.". Mais tout ce que cela donne, c'est dans le texte en toutes lettres : "ChrW(9830) TRUC."
    Bref, si quelqu'un a quelques lumières sur la question...

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

    Chr et ChrW étant des fonction, il ne faut pas les mettre entre ".
    Si on les met entre ", VBA les considère comme du simple texte.
    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 !

  6. #6
    Candidat au Club
    Homme Profil pro
    Éditeur
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Éditeur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Oui, mais si je mets ChrW(9830)"^sTRUC.", cela me répond "Erreur de compilation Attendu : fin d'instruction"...

  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,


    Si ChrW() renvoie un String, pour combiner deux strings, il faut utiliser un opérateur de concaténation &

    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
    Candidat au Club
    Homme Profil pro
    Éditeur
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Éditeur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Ça fonctionne ! Merci beaucoup ! Ce matin, j'avais pensé à quelque chose, mais c'était beaucoup plus tordu (des remplacements de remplacements, par passages successifs). Là, c'est limpide.
    Bonne journée.

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

Discussions similaires

  1. Indicer un tableau avec une chaine de caractères
    Par petdelascar dans le forum C
    Réponses: 10
    Dernier message: 08/11/2007, 14h55
  2. Réponses: 4
    Dernier message: 18/07/2007, 14h10
  3. Réponses: 8
    Dernier message: 06/05/2007, 21h47
  4. Réponses: 4
    Dernier message: 01/02/2007, 19h06
  5. Réponses: 5
    Dernier message: 26/07/2006, 11h13

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