Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1845 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Suppression des retours chariots

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Suppression des retours chariots

n°1532289
acorsa
Posté le 22-03-2007 à 16:48:14  profilanswer
 

Bonjour,
J'ai une fonction qui recherche un style dans un document Word et qui insère avant et après le ou les mots qui ont ce styledes balises <term></term>. Mais lorsque, pour attribuer le style, on sélectionne le terme et le saut de ligne le tag ne se place pas directement derrière le mot ce qui pose problème...
Je n'arrive pas à remplacer les retours chariots ...Merci pour votre aide!
Voici le code:

Code :
  1. Sub insert_term_tag()
  2. On Error GoTo endSub
  3.     Selection.Find.ClearFormatting
  4.     Selection.Find.Replacement.ClearFormatting
  5.     With Selection.Find
  6.         .Style = "termKeystone" '"termHoribaABX"
  7.         .Text = ""
  8.         .Replacement.Text = ""
  9.         .Forward = True
  10.         .Wrap = wdFindContinue
  11.         .Format = True
  12.         .MatchCase = False
  13.         .MatchWholeWord = False
  14.         .MatchByte = False
  15.         .Execute
  16.         If Selection.Find.Found = True Then
  17.             Selection.InsertBefore ("<term>" )
  18.             Selection.ClearFormatting
  19.             Selection.InsertAfter ("</term>" )
  20.             Selection.ClearFormatting
  21.         End If
  22.        
  23.         While Selection.Find.Found = True
  24.             .Style = "termKeystone" '"termHoribaABX"
  25.             .Text = ""
  26.             .Replacement.Text = ""
  27.             .Forward = True
  28.             .Wrap = wdFindContinue
  29.             .Format = True
  30.             .MatchCase = False
  31.             .MatchWholeWord = False
  32.             .MatchByte = False
  33.             .Execute
  34.            
  35.             If Selection.Find.Found = True Then
  36.                 .Style = "termKeystone" '"termHoribaABX"
  37.                 .Text = ""
  38.                 .Replacement.Text = ""
  39.                 .Forward = True
  40.                 .Wrap = wdFindContinue
  41.                 .Format = True
  42.                 .MatchCase = False
  43.                 .MatchWholeWord = False
  44.                 .MatchByte = False
  45.                 .Execute
  46.                 Selection.InsertBefore ("<term>" )
  47.                 Selection.ClearFormatting
  48.                 Selection.InsertAfter ("</term>" )
  49.                 Selection.ClearFormatting
  50.             End If
  51.         Wend
  52.     End With
  53.     ActiveDocument.Select
  54.     Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst
  55.  
  56. endSub:
  57. Exit Sub

mood
Publicité
Posté le 22-03-2007 à 16:48:14  profilanswer
 

n°1532336
tegu
Posté le 22-03-2007 à 17:32:50  profilanswer
 

Peut-être faudrait-il redéfinir la sélection en fonction de son contenu.
Par exemple, si la recherche sélectionne une zone avec un saut de ligne, alors tu redéfinis la sélection sans le saut de ligne avant de poursuivre ton traitement.
 
Désolé je ne connais pas assez VBA Word pour t'aider plus.

n°1532370
jpcheck
Pioupiou
Posté le 22-03-2007 à 18:33:19  profilanswer
 

enleve ton goto pour voir si tout marche bien dejà :)
de plus tu dois pouvoir faire un gain de lignes de code en utilisant plutot que ton while .find.found = true
un truc avec  
 
dim recherche as find
dim currpane as pane
set currpane = application.activedocument.activepane
currpane.selection.goto wdgotoline, wdgotofirst
set recherche = currpann.selection.find
with recherche
.clearformatting
......
while recherche.execute(findtext:="<term>" )
Wend
end with
à mettre à la bonne sauce hein  :pt1cable:

n°1532507
acorsa
Posté le 23-03-2007 à 09:32:11  profilanswer
 

ok merci ms ça ne résoud oas mon problème des retours chariot...

n°1532518
jpcheck
Pioupiou
Posté le 23-03-2007 à 09:41:33  profilanswer
 

tu peux nous faire un SS de ton probleme stp ?
Car si ton utilisateur prends le saut de ligne, n'est-ce pas parce qu'il ne sait pas se servir de sa souris :p

n°1532778
pyrof
Posté le 23-03-2007 à 13:48:19  profilanswer
 

Bonjour,
 
Je fais souvent ce type de traitement, la solution consiste dès le début de rechercher tous les ^013
et pas ^p, et d'affecter un style pour exemple "retour" ainsi deux mots séparés par un retour seront trouvé séparément.
 
Pourquoi ^013 et pas ^p, il arrive que certain fichier word provenant de mac, les codes retours sont mal interprétés avec ^013 je n'ai jamais de problème
 
Bonne après midi

n°1532851
acorsa
Posté le 23-03-2007 à 15:16:41  profilanswer
 

Non mon réel problème est que je dois avoir les tag <term></term> sur la même ligne....donc avant de mettre la balise </term>, je dois tester si il y a un retour chariot...s:(

n°1532856
jpcheck
Pioupiou
Posté le 23-03-2007 à 15:20:26  profilanswer
 

acorsa a écrit :

Non mon réel problème est que je dois avoir les tag <term></term> sur la même ligne....donc avant de mettre la balise </term>, je dois tester si il y a un retour chariot...s:(


ah ! ben tu vois si tu nous donnes cette raison pour ton problème, on va peut etre pouvoir te trouver une autre solution :)

n°1532859
jpcheck
Pioupiou
Posté le 23-03-2007 à 15:24:43  profilanswer
 

jpcheck a écrit :

ah ! ben tu vois si tu nous donnes cette raison pour ton problème, on va peut etre pouvoir te trouver une autre solution :)


regarde du cote de la fonction nolinebreakafter de ton document, ca doit te permettre d'avancer :)

n°1532862
acorsa
Posté le 23-03-2007 à 15:30:21  profilanswer
 

ok merci!!!

mood
Publicité
Posté le 23-03-2007 à 15:30:21  profilanswer
 

n°1533581
pyrof
Posté le 26-03-2007 à 11:48:04  profilanswer
 

Bonjour,
 
En imaginant que la style soit Style1 regarde si cela te conviens
 
 
Sub dudule()
 
Selection.HomeKey Unit:=wdStory
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Forward = True
    .MatchWildcards = False
    .Style = "Style1"
    .Text = ""
    .Execute
End With
While Selection.Find.Found
    Selection = "<term>" & Replace(Selection, Chr(13), "</term>" & Chr(13) & "<term>" ) & "</term>"
    Selection = Replace(Selection, "<term></term>", "" ) & ""
    Selection.MoveRight
    Selection.Find.Execute
Wend
End Sub


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Suppression des retours chariots

 

Sujets relatifs
suppression multiple avec des checkbox et modif avec des selectconfirmer la suppression de fichiers en chaîne
Rang et suppression dans un vecteur[php] envoi de mail de confirmation, suppression si > 24h
php Suppression de données d'une bd à partir d'un boutonProteger une ligne d'une table contre la suppression(mysql)
Page de confirmation de suppression et checkboxMacro de recherche, total, puis suppression
[ RESOLU] Suppression de chaînes de caractères[VBA Access]suppression d'une donnée selectionné dans une liste box
Plus de sujets relatifs à : Suppression des retours chariots


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR