Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2011, 13h24   #1
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 3
Points : 3
Par défaut Mise en page simple normal => titre sous WORD

bonjour,
je ne sais pas coder en VB, et malheureusement, je n'ai pas le temps de me plonger dedans, aussi j'aurais besoin de votre aide SVP les gens

Ce que je veux faire est assez simple : mettre en forme automatiquement des titres sur un long document. Chaque titre commence par la même chaîne de caractère.
Je veux donc parcourir l'ensemble d'un document word, sélectionner à chaque boucle un titre commençant par une chaine de caractère (genre pour des titres Article 1, Article 2, Article 3, sélectionner l'ensemble du titre en recherchant le préfixe commun de la chaîne de caractère "Article"), puis le mettre en forme.

Pour le moment, j'arrive juste à sélectionner "Article", et pas "Article 1", et je ne sais pas comment faire ma boucle pour répéter l'action sur tout le document.

Voici mon début de code

Code :
1
2
3
4
5
6
7
8
Sub titre1()
ThisDocument.Select
With Selection
  .Find.Text = "Article"
  .Find.Execute
  .Style = ActiveDocument.Styles("Titre 1")
End With
End Sub
Bibi06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 16h44   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 219
Points : 29 219
Salut,

Si ce mot est en début de paragraphe, c'est plus facile de faire la boucle sur les paragraphes et de tester le premier mot que de faire une recherche pour ensuite étendre la sélection.
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 20h35   #3
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 3
Points : 3
ok merci pour l'idée, j'ai pas encore réussi à faire ce que je voulais, donc si ya d'autres idées, je suis preneur
Bibi06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 20h41   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 219
Points : 29 219
Salut,

À la volée !!

Code :
1
2
3
4
5
6
7
8
9
10
Dim oPar as Paragraph
 
For each oPar in ActiveDocument.Paragraphs
Select Case Left(opar.range.text, 10)
Case "Article 1"
oPar.Style = "Titre 1"
Case "Article 2"
oPar.style = "Titre 2"
End Select
ext oPar
__________________
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 21h11   #5
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 3
Points : 3
ah ben super c'est tout à fait ce qu'il me faut
comment faire pour chopper le premier mot du paragraphe et non pas les 10 premiers caractères du string paragraphe ?


Select Case oPar.Range.Words(1) ??
Bibi06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 21h25   #6
Invité de passage
 
Inscription : mai 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 8
Points : 3
Points : 3
ça bloquait sans trim, maintenant ça marche, merci les gars

voici mon code au final :

Code :
1
2
3
4
5
6
7
8
9
10
Dim oPar As Paragraph
 
For Each oPar In ActiveDocument.Paragraphs
    Select Case Trim(oPar.Range.Words(1))
    Case "CHAPITRE"
    oPar.Style = "Titre 2"
    Case "Article"
    oPar.Style = "Titre 3"
    End Select
Next oPar

très très contente
Bibi06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web