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 :

coupure de phrase dans Ms Word,soluce en VBA?


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut coupure de phrase dans Ms Word,soluce en VBA?
    Bonjour à tous et merci de votre attention.

    Voilà mon problème avec Microsoft Office Word 2003 SP2 sous XP

    J'ai un document dont certaines phrases sont coupées par une marque de paragraphe. Ce qui donne pour exemple ceci:

    Quand une entreprise (organisme, ..) décide de "déposer un nom de domaine", elle s'adresse à un prestataire

    habilité pour le faire (en France ou aux USA), qui va vérifier si le nom n'existe pas déjà, et ensuite va lui attribuer

    une adresse IP disponible. Le couple domaine-adresse IP est

    ensuite communiqué à des serveurs DNS, tous connectés à Internet, qui vont

    dialoguer entre eux pour "répliquer" (si besoin est) cette mise à jour d'annuaire.
    Et ceci sur une centaine de pages, donc la flemme de corriger cela manuellement. Cela me prendrait environ une centaine d'années et je n'ai pas tout ce temps à y consacrer

    J'ai essayé tout ce dont je suis capable pour réassembler ces phrases dans tout le doc. J'ai fait une recherche selective pour surligner toutes les marques de paragrahes mises en cause en faisant ceci:
    Ctrl F en mettant dans la case "rechercher" ^$^p^$, ajouté à cela quelques options selectives pour ne rechercher que dans le corps de texte, puis rechercher tout

    Cela me surligne les marques de paragraphe concernées. Le problème maintenant, c'est que je voudrais remplacer les marques de paragraphes ^p ainsi surlignées par un espace. Or la fonction remplacer de word ne le fait pas car elle remplace soit toutes les marques de paragraphe du document, soit toutes la chaînes de caractères surlignées ^$^p^$.

    D'où me vient l'idée de l'utilisation d'une macro qui pourrait éxecuter ce que je souhaite. Or, je ne connais rien au langage VBA ni s'il pourra résoudre mon problème.

    Voici ma question: est-il possible de programmer en VBA, directement applicable dans une macro word, cette tâche:

    remplacer dans tout le document ^p par un espace quand ^p est compris entre deux lettres minuscules appartenant au corps de texte ?

    J'espère que j'ai bien exprimé mon problème et que vous m'avez compris.

    Si un pro du VBA pouvait m'éditer cette macro si cela est possible ou bien m'orienter vers une autre solution que l'arrachage de cheveux pour résoudre ce problème. Ce serait fantastique et ça me changerait la vie car je pourrais appliquer cette macro à pleins de doc qui représente des milliers de pages.

    A votre bon coeur, messieurs, dames

    fred

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 144
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Que ce soit en VBA ou à la main, le but est de savoir ce que tu veux remplacer.
    Dans le cas précis de ton texte:
    Quand une entreprise (organisme, ..) décide de "déposer un nom de domaine", elle s'adresse à un prestataire ¶

    habilité pour le faire (en France ou aux USA), qui va vérifier si le nom n'existe pas déjà, et ensuite va lui attribuer ¶

    une adresse IP disponible. Le couple domaine-adresse IP est ¶

    ensuite communiqué à des serveurs DNS, tous connectés à Internet, qui vont ¶

    dialoguer entre eux pour "répliquer" (si besoin est) cette mise à jour d'annuaire. ¶
    Il faut répérer les "espaces-^p^p" que tu remplace par "^p"
    En VBA il faut sélectionner tout et affecter le texte à une variable à laquelle tu appliques par exemple la fonction VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(strText, Chr(32) & vbCrlf & vbCrlf, vbCrlf)
    Disons qu'automatiser est faisable mais avant de te lancer dans le développement d'une procédure automatisée, il te faut écrire toutes les règles et conditions sur un papier. Ensuite c'est facile à transposer dans du code.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par fred_gaou
    remplacer dans tout le document ^p par un espace quand ^p est compris entre deux lettres minuscules appartenant au corps de texte ?
    tiens voila un peu de code... :
    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
    Function EstMin(c As String) As Boolean
         EstMin = (c >= "a" And c <= "z")
    End Function
    Sub SupprimeParagraphe()
        Selection.Find.ClearFormatting
        ActiveDocument.Select
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "^$^p^$"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        While Selection.Find.Execute
           If EstMin(Left(Selection.Text, 1)) And EstMin(Right(Selection.Text, 1)) Then
             Selection.TypeText Left(Selection.Text, 1) & " " & Right(Selection.Text, 1)
           End If
         Wend
    End Sub

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    ah, merci beaucoup pour le code. C'est un super cadeau. Je vais le tester ce soir et je vous dirai ce que ça donne
    Bonne fin d'après-midi

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut
    En fait, argyronet, mon texte a plutôt cette gueule là, mais ça change pas le problème, j'en conviens:

    Quand une entreprise (organisme, ..) décide de "déposer un nom de domaine", elle s'adresse à un prestataire¶

    habilité pour le faire (en France ou aux USA), qui va vérifier si le nom n'existe pas déjà, et ensuite va lui attribuer¶

    une adresse IP disponible. Le couple domaine-adresse IP est¶

    ensuite communiqué à des serveurs DNS, tous connectés à Internet, qui vont¶

    dialoguer entre eux pour "répliquer" (si besoin est) cette mise à jour d'annuaire.¶
    [/quote]

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 144
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par fred_gaou
    En fait, argyronet, mon texte a plutôt cette gueule là, mais ça change pas le problème, j'en conviens:..........
    Ah !!!
    Et c'est donc la hauteur des paragraphes qui fait en sorte que l'espace entre les lignes est si grand.
    De ce fait, dans la macro ou à la main, tu le redéfinis comme "Simple"... ou tu lui appliques un style.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    D'après ce que j'ai compris, la première solution d'argyronet est la bonne, seulement il faut remettre l'espace que tu remplaces, sinon les mots vont être collés à tous tes anciens sauts de lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(strText, Chr(32) & vbCrlf, chr(32))
    Tu dis

    A+

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Par défaut Pour bbil, hip hip hip...
    Le code que m'a donné bbil semble fonctionner à la perfection.
    Mille merci à lui !!! Avec toute ma reconnaissance ''
    T'es un grand bbil ''

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

Discussions similaires

  1. Insertion documents word dans champ objet OLE sous VBA
    Par frankouche dans le forum Access
    Réponses: 4
    Dernier message: 20/12/2006, 22h35
  2. [VBA-W]Insérer contenu variable dans page word
    Par jcaspar dans le forum VBA Word
    Réponses: 1
    Dernier message: 24/03/2006, 02h07
  3. entrez une phrase dans une string???
    Par d-a-v-e dans le forum C++
    Réponses: 12
    Dernier message: 12/02/2006, 18h18
  4. concatener des "phrases" dans un char*
    Par thierry_b dans le forum C
    Réponses: 3
    Dernier message: 13/11/2005, 12h45
  5. afficher une phrase dans le HTML a partir du javascript
    Par amelhog dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/08/2005, 18h02

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