VBA sélectionner un style

C@thy

XLDnaute Barbatruc
Bonsouarrr,

je tourne en rond depuis un moment sur un truc qui marche a la main mais pas avec la macro.
(je joins le fichier)

j'essaie de sélectionner (un par un) tous les titres de style sous thème

ce que je veux faire :
sélectionner le paragraphe, mettre le texte dans une variable et ensuite aller insérer tout le texte (sans le titre avec le fameux style) dans un autre document word qui contient ce titre

par exemple : dans mon doc j'ai le titre affaire étrangères, je recherche dans l'autre doc affaires étrangères
si je ne le trouve pas je copie tout le texte jusqu'au prochain titre de style sous thème,

si je le trouve, je copie le texte jusqu'au prochain titre de style sous-thème mais sans le titre puisqu'il existe déjà, donc je copie à la suite.

Mais lorsque j'essaie de commencer ce traitement, si je fais la recherche à la main du style sous-thème il me sélectionne bien tout le paragraphe, mais pas avec la macro.

C'est normal ça???
Je fais quoi kifopa:confused::confused::confused:

Je dois faire une manip en plus avec la macro??? ... j'y comprends rien...

dois être fatiguée... fo que je rentre...

Merci de m'indiquer si vous voyez ce qui ne va pas...

Bonne soirée

C@thy
 

Pièces jointes

  • news.zip
    85.9 KB · Affichages: 101
  • news.zip
    85.9 KB · Affichages: 112
  • news.zip
    85.9 KB · Affichages: 111

Zon

XLDnaute Impliqué
Re : VBA sélectionner un style

Code:
sélectionner le paragraphe, mettre le texte dans une variable et 
ensuite aller insérer tout le texte (sans le titre avec le fameux style) 
dans un autre document word qui contient ce titre

pour te mettre sur la voie car pas le temps (surtout pb de mémoire pour les collections word) de te faire un code maintenant ....


tavariable=activedocument.paragraph(5).range.text


pour selectionner le paragraphe 3

activedocument.paragraph(3).range.select


if activedocument.paragraph(3).range.style="sous theme" then


Ton titre est-il toujours en 4 ème position ?


A+++
 

C@thy

XLDnaute Barbatruc
Re : VBA sélectionner un style

Je te remercie, Zon pour ton aide.

Le VBA Word c'est pas trop ma tasse de thé comme tu as pu le voir.:D

J'ai un peu changé mon fusil d'épaule car je n'y arriverai pas comme ça.

Donc j'ai écrit une macro qui supprime (enfin qui devrait supprimer!:D) tous les titres en double, (ou triple quadruple et...) mais ça marche pas trop bien.

j'écris mon code ici :

(on est prié de ne pas se moquer SVP!!!:eek:)
Sub RechercherStyle()
Dim them As String
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("sous thème")
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

them = Selection
Selection.Find.Execute
If Selection = them Then
Selection.Delete
Else
them = Selection
End If
Selection.Find.Execute
While Selection.Find.Found
If Selection.Text = them Then
Selection.Delete
Else
If Selection.Find.Style = ActiveDocument.Styles("sous thème") then them = Selection
Wend
End Sub


Je joins mon document pour donner une idée du texte.


Edit : P.S. à minuit passé tu fais des macros Word???

Bises à toi.;)

Bonne journée:cool:

C@thy
 

Pièces jointes

  • macro word cab.zip
    87.7 KB · Affichages: 87
Dernière édition:

Zon

XLDnaute Impliqué
Re : VBA sélectionner un style

Salut Cathy,


afin que cela fonctionne mieux il faut changer la boucle,
si tes utilsateurs font dans l'ordre : tous les articles aff... sont à la suite les uns des autres et non un article social puis politique puis social ? sinon il va falloir travailler le code différemment(gestion des doublons, déplacement de paragraphe ...).

Code:
Sub RechercherStyle()
Dim them As String
    
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Style = ActiveDocument.Styles("sous thème")
   
    Selection.Find.Execute 'on cherche le 1 er item
 
    them = Selection
    Selection.Find.Execute 'On est au 2eme
  Do
    If Selection.Characters = them Then
      Selection.Delete
    Else
      them = Selection
    End If
  
  Loop While Selection.Find.Execute 'on recherche le style suivant
  
End Sub


Ps: je suis un couche tard, leVBA word est mieux que celui d'outlook ou de powerpoint alors ....
 

sigismond

XLDnaute Occasionnel
Re : VBA sélectionner un style

Bonjour le forum, Cathy et zon,

Votre discussion m'intéresse car je travaille sur des documents Word en VBA Excel depuis plusieurs années... mais la route est longue Cathy et je te vois plutôt bousculée par le temps.

Le premier conseil que je donnerai consiste à répéter celui qui m'a été donné ici même naguère :
N'utilise plus la méthode Select.
C'est la méthode préférée de l'enregistreur de macro mais elle est ambigüe et difficile à relire.

Comment s'en passer ?

en connaissant le système objet de Word, mais pour cette approche il faut des outils - j'en propose quelques-un dans le Tuto signalé dans ma signature - et du temps, n'est-ce pas Cathy :D

Bonne chance,

Sigismond
 

C@thy

XLDnaute Barbatruc
Re : VBA sélectionner un style

Zon, ton code marche super bien, Nialgé!!!!;););)

J'ai remplacé Selection.Characters par Selection.Text car je ne sais pas pourquoi ça tiltait sur characters.

Un immense merci, j'ai réussi à faire tout le reste.

Bises et bonne journée

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : VBA sélectionner un style

Merci Zon, ton code est génial, c'est exactement ça.

Oui, cela me satisfait, et grandement,
je ne sais comment te remercier:confused:.

Je me dis que ce code peut également servir à tous ceux qui visitent ce fil, et c'est aussi le but de mes questions.

Mille merci à toi. Je ne te dis pas à charge de revanche, car ta compétence est bien supérieure à la mienne, et je n'ai pas la prétention de pouvoir t'aider un jour, même lointain. En tout cas je te suis très reconnaissante.;)

Bise et @+

C@thy
 

C@thy

XLDnaute Barbatruc
Re : VBA sélectionner un style

Coucou, Zon,

oui, je n'ai pas beaucoup de titres à traiter.
Pour moi, c'est parfait

par contre, j'ai rajouté ceci :
Code:
With Selection.Find
        .Text = ""
        .Replacement.Text = ""
    End With
car il me conservait le texte de la recherche précédente.

Merci à toi, c'est SUPER.

Bonne soirée

C@thy
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01