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 :

Une macro pour créer un nouveau style de liste à puces


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé de communication print
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé de communication print
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Une macro pour créer un nouveau style de liste à puces
    Bonjour,
    Voilà un moment que j'essaie de trouver une manière de faire une macro capable de créer un style de liste à puces. Par exemple une variante du style préexistant "Liste à puces 2" où le texte serait d'une couleur différente.
    Quand j'utilise l'enregistreur de macro, le code obtenu ne conserve pas les informations liées à la liste et aux puces (dans mon exemple, seul le décalage du texte et sa couleur sont enregistrés).
    Auriez-vous une solution à me proposer ?
    J'utilise Microsoft Office 2013.
    Dans mon projet, je pilote Word depuis Excel pour créer automatiquement un document complexe mis en forme en puisant dans mon tableau Excel. J'arrive à faire à peu près tout ce que je veux, mais je bloque sur ce point précis...
    Merci beaucoup !

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé de communication print
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé de communication print
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Progression
    Alors, si jamais ça intéresse quelqu'un d'autre...
    N'ayant pas trouvé de solution directe, j'ai rusé en altérant un style de liste à puces préexistant, que je n'utilisais pas, pour qu'il corresponde à ce que je veux.
    En gros j'ai repris dans les caractéristiques tout ce qui définissait un style de "liste à puces 2" en rajoutant Bold et Color comme modification de la Font.
    Ça reste du bricolage, ça m'embête un peu... J'aurais préféré créer mon propre style par macro.

    Mon code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Sub StyleListeOrange()
    '
    ' Modification de la "Liste à puces 3" pour en faire une "Liste à puces 2" alternative, utilisée pour les points forts particulièrement mis en avant.
    '
        With ActiveDocument.Styles("Liste à puces 3").Font
            .Bold = True
            .Color = 3376117
        End With
        With ActiveDocument.Styles("Liste à puces 3").ParagraphFormat
            .LeftIndent = CentimetersToPoints(1.14)
            .RightIndent = CentimetersToPoints(0)
            .SpaceBefore = 0
            .SpaceBeforeAuto = False
            .SpaceAfter = 0
            .SpaceAfterAuto = False
            .LineSpacingRule = wdLineSpaceMultiple
            .LineSpacing = LinesToPoints(1.08)
            .Alignment = wdAlignParagraphLeft
            .WidowControl = True
            .KeepWithNext = False
            .KeepTogether = False
            .PageBreakBefore = False
            .NoLineNumber = False
            .Hyphenation = True
            .FirstLineIndent = CentimetersToPoints(-0.63)
            .OutlineLevel = wdOutlineLevelBodyText
            .CharacterUnitLeftIndent = 0
            .CharacterUnitRightIndent = 0
            .CharacterUnitFirstLineIndent = 0
            .LineUnitBefore = 0
            .LineUnitAfter = 0
            .MirrorIndents = False
            .TextboxTightWrap = wdTightNone
            .CollapsedByDefault = False
        End With
        ActiveDocument.Styles("Liste à puces 3"). _
            NoSpaceBetweenParagraphsOfSameStyle = True
        ActiveDocument.Styles("Liste à puces 3").ParagraphFormat.TabStops.ClearAll
        ActiveDocument.Styles("Liste à puces 3").ParagraphFormat.TabStops.Add _
            Position:=CentimetersToPoints(1.13), Alignment:=wdAlignTabLeft, Leader:= _
            wdTabLeaderSpaces
        With ListGalleries(wdBulletGallery).ListTemplates(1).ListLevels(1)
            .NumberFormat = "o"
            .TrailingCharacter = wdTrailingTab
            .NumberStyle = wdListNumberStyleBullet
            .NumberPosition = CentimetersToPoints(0.63)
            .Alignment = wdListLevelAlignLeft
            .TextPosition = CentimetersToPoints(1.27)
            .TabPosition = wdUndefined
            .ResetOnHigher = 0
            .StartAt = 1
            With .Font
                .Bold = wdUndefined
                .Italic = wdUndefined
                .Strikethrough = wdUndefined
                .Subscript = wdUndefined
                .Superscript = wdUndefined
                .Shadow = wdUndefined
                .Outline = wdUndefined
                .Emboss = wdUndefined
                .Engrave = wdUndefined
                .Allcaps = wdUndefined
                .Hidden = wdUndefined
                .Underline = wdUndefined
                .Color = wdUndefined
                .Size = wdUndefined
                .Animation = wdUndefined
                .DoubleStrikeThrough = wdUndefined
                .Name = "Courier New"
            End With
            .LinkedStyle = "Liste à puces 3"
        End With
        ActiveDocument.Styles("Liste à puces 3").LinkToListTemplate ListTemplate:= _
            ListGalleries(wdBulletGallery).ListTemplates(1), ListLevelNumber:=1
        With ActiveDocument.Styles("Liste à puces 3")
            .AutomaticallyUpdate = False
            .BaseStyle = "Normal"
            .NextParagraphStyle = "Liste à puces 3"
        End With
    End Sub
    Une fois cette macro, je peux avoir une sous-liste à puces qui mélange des lignes normales et des lignes en orange.
    Je garde le sujet en "non résolu" pour l'instant, ma solution alternative n'étant pas très satisfaisante.

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé de communication print
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé de communication print
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Merci.
    Ça m'a aidé à fureter un peu plus, même si je n'ai toujours pas réussi à créer un style de liste par macro.
    J'ai cependant une piste intéressante consistant à travailler avec les "listes à plusieurs niveaux" plutôt qu'avec les listes simples.
    Ça permet de créer d'un coup jusqu'à 9 styles de listes qu'on peut aussi appliquer à des styles de paragraphes... ce qui peut résoudre ma question.

    Avec l'assistance de l'enregistreur de macro, j'obtiens ceci :
    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
        With ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(2)
            .NumberFormat = "o"
            .TrailingCharacter = wdTrailingTab
            .NumberStyle = wdListNumberStyleBullet
            .NumberPosition = CentimetersToPoints(0.63)
            .Alignment = wdListLevelAlignLeft
            .TextPosition = CentimetersToPoints(1.26)
            With .Font
                .Bold = True
                .Color = -721354753
                .Size = wdUndefined
                .Name = "Courier New"
            End With
            .LinkedStyle = "MonStyleDeListePerso"
        End With
    Ce qui applique ce style de liste au style de paragraphe linké.
    J'ignorais qu'il y avait des styles de listes, en fait, du coup je m'acharnais sur les styles de paragraphes.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Hello Benoit,

    J'ai pas mail planché sur le sujet,
    Je n'ai pas réussi à créer une macro qui me créait une liste à puce convenable. j'ai dû faire les mêmes recherches que toi... j'ai essayé de récupérer le code VBA de l'enregistreur de macro, mais le résultat était très très aléatoire.

    Mon idée était de créer un bouton (macro) qui me permettait d'appliquer directement et rapidement une liste à puce. Avec des puces personnalisées (couleurs, forme et position) et surtout des positionnement autre que 0.63, 1.27, ...

    J'ai créé un modèle de document qui est enregistré dans le dossier Startup.
    - ce modèle contient la liste à plusieurs niveaux
    - la macro qui récupère le style dans le Template et l'applique au document actif
    - et bien entendu le bouton qui exécute la macro.

    L'avantage de cette méthode est que je peux appliquer ma liste à puce sur tous les documents que j'ouvre.

    J'ai pas mal transpiré pour y arriver... mais ça fonctionne bien.

    ++
    wouana

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé de communication print
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé de communication print
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Code à partager ?
    Citation Envoyé par wouana19 Voir le message
    ça fonctionne bien.
    Intéressant !
    Y'a moyen de me montrer le code ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 18/10/2016, 11h00
  2. Comment utiliser une macro pour créer un compteur
    Par PetitChris dans le forum Macros Access
    Réponses: 8
    Dernier message: 12/12/2014, 03h21
  3. [Toutes versions] une macro pour créer un module standard
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/12/2009, 17h42
  4. Macro pour créer un nouveau fichier avec de nouvelles macros
    Par yodu29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/01/2008, 14h21
  5. Réponses: 8
    Dernier message: 09/01/2007, 16h30

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