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 :

Convertir une numérotation "en dur" en liste numérotée ?


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 22
    Points
    22
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Range.Style = ActiveDocument.Style("mon style de liste")
    ... qu'y a t'il de différent ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    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) ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    J'ai une solution, un peu bricolage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/07/2012, 01h17
  2. [java 1.4] convertir une simple quote
    Par longbeach dans le forum Langage
    Réponses: 5
    Dernier message: 11/09/2008, 15h28
  3. supprimer une table qui a des quotes dans son nom
    Par kleenex dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 16h03

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