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 24/10/2011, 16h10   #1
Candidat au titre de Membre du Club
 
Steve
Inscription : avril 2009
Messages : 23
Détails du profil
Informations personnelles :
Nom : Steve
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : avril 2009
Messages : 23
Points : 11
Points : 11
Par défaut Convertir une numérotation "en dur" en liste numérotée ?

Hello,

Dans une macro Word qui copie des paragraphes d'un document à l'autre, j'ai ce bout de code qui importe un paragraphe à la fin du document cible:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Public Function ImportWithStyle(srcPar As Paragraph, newDoc As Document, styleName As String) As Paragraph
    Dim newPar As Paragraph
 
    Dim r As Range
    Set r = newDoc.Content
    r.Collapse direction:=WdCollapseDirection.wdCollapseEnd
    r.FormattedText = srcPar.Range.FormattedText
    r.style = newDoc.Styles(styleName)
 
    Set newPar = newDoc.Paragraphs(newDoc.Paragraphs.Count - 1)
 
 
    Set ImportWithStyle = newPar
End Function
Ca fonctionne globalement bien, mais je cherche maintenant à convertir la numérotation potentiellement en dur dans le code par une liste numéroté.

Par exemple, si j'ai en paragraphe source (donc le 1. en dur dans le texte), mon programme va importer (le 1er 1. étant dans la définition du style appliqué ayant un format de liste, le second étant toujours dans le texte).

Comment puis-je convertir le numéro en dur en liste numérotée (un peu l'inverse de la méthode ConvertNumbersToText) ?

Ce que je ne comprends pas, c'est que si j'applique un style avec liste numérotée, à la main dans Word, Word me génère la macro suivante :

Code :
Selection.Range.Style = ActiveDocument.Style("mon style de liste")
... qu'y a t'il de différent ?
steveb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 16h17   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
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 333
Points : 29 239
Points : 29 239
Salut,

C'est parce que Word applique une correection au cours de la frappe, c'est une option que l'on peut désactiver.

Mais elle n'est disponible que lors de la frappe par l'utilisateur.

Tout ce qu'on peut espérer faire, c'est de tester les premiers mots du paragraphe pour y appliquer un niveau de liste.
__________________
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 24/10/2011, 16h23   #3
Candidat au titre de Membre du Club
 
Steve
Inscription : avril 2009
Messages : 23
Détails du profil
Informations personnelles :
Nom : Steve
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : avril 2009
Messages : 23
Points : 11
Points : 11
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Tout ce qu'on peut espérer faire, c'est de tester les premiers mots du paragraphe pour y appliquer un niveau de liste.
Je ne suis pas sûr de comprendre...

Sachant que le style que j'applique défini un format de liste (je n'avais pas été très clair dans mon post) ?
steveb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h39   #4
Candidat au titre de Membre du Club
 
Steve
Inscription : avril 2009
Messages : 23
Détails du profil
Informations personnelles :
Nom : Steve
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : avril 2009
Messages : 23
Points : 11
Points : 11
J'ai une solution, un peu bricolage :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    Dim newPar As Paragraph
    Dim r As Range
    Dim styleToApply As style
    Set styleToApply = newDoc.Styles(styleName)
 
    Set r = newDoc.Content
    r.Collapse direction:=WdCollapseDirection.wdCollapseEnd
    r.FormattedText = srcPar.Range.FormattedText
    If Not styleToApply.ListTemplate Is Nothing Then
         r.ListFormat.ApplyListTemplate styleToApply.ListTemplate
    End If
    r.style = styleToApply
    Set newPar = newDoc.Paragraphs(newDoc.Paragraphs.Count - 1)
Avant d'appliquer mon style, j'applique le format de liste défini dans le style... et là Word analyse le texte pour convertir le texte en numérotation.

A l'écoute d'une solution plus propre si elle existe.
steveb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h00.


 
 
 
 
Partenaires

Hébergement Web