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 :

VBA WORD/EXCEL donner plusieurs Styles dans une chaine de caracteres [WD-2016]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut VBA WORD/EXCEL donner plusieurs Styles dans une chaine de caracteres
    Bonjour,

    J'ai besoin de vos lumières en effet, j'utilise un script VBA pour exporter de Excel des tableaux vers un document Word, et j'ajoute une légende avec insertCaption, mais je voudrais dans cette légende utiliser 2 Styles.

    Voici le code que j'utilise (en partie)

    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
     
    With SelDOCFile.Find
        .Forward = True
        .Wrap = wdFindContinue
        .Execute FindText:="\<FLAG\>"
        If .Found Then
         For Bank = 0 To Banks - 1
          SelDOCFile.InsertCaption Label:="Table", Title:=": Bank " & Bank _
             & " [Special" & Bank & "##A]", Position:=wdCaptionPositionAbove, ExcludeLabel:=0
          SelDOCFile.HomeKey Unit:=wdLine
          SelDOCFile.EndKey Unit:=wdLine, Extend:=wdExtend
          SelDOCFile.Font.Size = 10
          SelDOCFile.Font.Bold = True
          SelDOCFile.Font.Italic = False
          SelDOCFile.Font.Name = "Arial"
          SelDOCFile.HomeKey Unit:=wdLine
          SelDOCFile.MoveRight Unit:=wdWord, Count:=6
          SelDOCFile.EndKey Unit:=wdLine, Extend:=wdExtend
          SelDOCFile.Style = ActiveDocument.Styles("SpecialFunc")
         ....
         Next Bank
      End If
    End With

    Ce que je veux, c'est écrire Titre: = "Table 1: Bank 0 [Special0##A]" avec 1 style différent pour la partie entre [], mais ici le code ne fonctionne pas comme prévu.
    J'obtiens bien une différence, mais le style n'est pas complètement appliqué, seul la couleur, la taille ... change mais lorsque sous Word je me place sur le texte il apparait dans le même style que le reste du titre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par marcds31 Voir le message
    Bonjour,

    Difficile de vous répondre sans un exemple.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Difficile de vous répondre sans un exemple.
    Que voulez vous de plus?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Difficile de vous répondre sans un exemple.
    Bonjour,

    J'ai trouvé un workaround qui consiste à utiliser cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelDOCFile.Style = ActiveDocument.Styles("SpecialFunc Char")
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelDOCFile.Style = ActiveDocument.Styles("SpecialFunc")
    Si cela peut aider d'autres personnes, il semble qu'il y ai un bug, je vous laisse consulter à la suite de ce message, un autre site d'entraide:


    I need to import from Excel some tabs in a Word document, to do this I used VBA in Excel.

    something as this:

    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
    With SelDOCFile.Find
        .Forward = True
        .Wrap = wdFindContinue
        .Execute FindText:="\<FLAG\>"
        If .Found Then
         For Bank = 0 To Banks - 1
          SelDOCFile.InsertCaption Label:="Table", Title:=": Bank " & Bank _
             & " [Special" & Bank & "##A]", Position:=wdCaptionPositionAbove, ExcludeLabel:=0
          SelDOCFile.HomeKey Unit:=wdLine
          SelDOCFile.EndKey Unit:=wdLine, Extend:=wdExtend
          SelDOCFile.Font.Size = 10
          SelDOCFile.Font.Bold = True
          SelDOCFile.Font.Italic = False
          SelDOCFile.Font.Name = "Arial"
          SelDOCFile.HomeKey Unit:=wdLine
          SelDOCFile.MoveRight Unit:=wdWord, Count:=6
          SelDOCFile.EndKey Unit:=wdLine, Extend:=wdExtend
          SelDOCFile.Style = ActiveDocument.Styles("SpecialFunc")
         ....
         Next Bank
      End If
    End With
    What I want is to write Title:="Table 1: Bank 0 [Special0##A]" with a different style for text between [], but here code doesn't work as expected. I get a difference, but the style is not fully applied, only the color, the size ... changes but when in Word I place cursor on the text, it appears in the same style as the rest of the title

    Reponse:

    - Captions always use the Caption style, which applies to the entire paragraph. If you want captions to be 10pt Arial, edit the Caption style. – Timothy Rylatt yesterday
    - As you are only applying the style SpecialFunc to selected characters it cannot apply paragraph formatting, only Font formatting such as color and size. – Timothy Rylatt yesterday
    - So I can't do it when I create caption but after I won't have problem? – MarcDS yesterday
    - I've just checked this in O365 and there appears to be a bug when applying a linked style to selected characters via VBA. If you apply a character style it fully applies (i.e. the underlying xml shows the style has been applied), but a linked style only applies its formatting and acts like direct formatting. This applies to any selected text not just a caption. – Timothy Rylatt yesterday
    - By adding Char it works! SelDOCFile.Style = ActiveDocument.Styles("SpecialFunc Char") – MarcDS 2 hours ago

    - There is, however, a bug as the built-in linked styles should apply correctly when using their style enum, e.g. Selection.style = ActiveDocument.Styles(wdStyleHeading1). Custom linked styles should also apply correctly without using the name of the hidden character style. Glad you found a work around though. – Timothy Rylatt 2 hours ago
    Je tiens tout de même à souligner la différence notable de comportement, ici on me demande un exemple plus précis sans autre explication, alors qu'ailleurs https://stackoverflow.com/questions/...les-in-a-chain le comportement est totalement différent.

    Cordialement,

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par marcds31 Voir le message
    Implicitement ma réponse demandait un fichier, désolé si cela n’a pas été compris.
    Au ton de votre réponse, j’ai compris que c’était une fin de non recevoir et je me suis pressé de ne pas vous répondre.
    Désolé pour toutes ces incompréhensions et ma susceptibilité. L’important est que vous ayez un code qui fonctionne.

    Cordialement.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Septembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Pas de souci, tout est dans l'écrit, un message sur un forum ne pourra jamais retranscrire l'affecte même avec des smileys.

    Néanmoins vous m'auriez demandez un fichier, ou au moins la macro cela aurait été différent, plus compréhensible (je ne fais pas souvent appel aux forums, la preuve avec le nombre de messages postés depuis 2018).
    De plus il me semblait plus simple et plus sensé de ne pas balancer du code à faire corriger comme ça.
    Je découvre et j'apprends sur le tas le VBA, il me faudrait une formation pour écrire un code propre, et comprendre les subtilités du VBA et de ces innombrables façon de faire.

    Cela étant ici, j'ai surtout buté sur ce qui semble être un bug de VBA selon la personne sur l'autre site.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Extraire plusieurs valeurs dans une chaine de caractères
    Par benny67 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/10/2011, 20h09
  2. Recherche de plusieurs mots dans une chaine
    Par Thib6670 dans le forum C#
    Réponses: 3
    Dernier message: 30/06/2011, 15h19
  3. Réponses: 7
    Dernier message: 09/10/2009, 14h12
  4. Réponses: 5
    Dernier message: 04/06/2008, 10h03
  5. [vba-e] insertions de plusieurs cellules dans une
    Par titeZ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2007, 17h14

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