none
Perte du sulignage dans WORD VBA RRS feed

  • Question

  • Bonjour,

    Je souhaiterais savoir si dans WORD, via le VBA, il est possible de savoir si l'outils de Surlignage est actif ou non ?

    Mon problème est que lors de l'exécution de ma macro, je passe dans un procédure qui me désactive systématiquement mon outil de surlignage "WindowSelectionChange". Ce que je souhaite, c'est vérifier au début de la procédure si le surlignage est actif ou non, pour éventuellement le rétablir à la fin de ma procédure.

    Merci pour vos réponses !

    mardi 10 août 2010 09:54

Réponses

  • bonjour ludog,

    voici un autre possibilité,
         With Dialogs(wdDialogFormatFont)
            .Underline = wdUnderlineSingle
            .UnderlineColor = vbRed
            .Execute
        End With

    isabelle

    Le 2010-08-10 11:33, isabelleV a écrit :

    bonjour ludog,

    With Selection.Font
    If .Underline = wdUnderlineNone Then .Underline = wdUnderlineSingle
    End With

    Les constantes WdUnderline possibles sont les suivantes :
    wdUnderlineDashHeavy
    wdUnderlineDashLongHeavy
    wdUnderlineDotDashHeavy
    wdUnderlineDotDotDashHeavy
    wdUnderlineDottedHeavy
    wdUnderlineNone
    wdUnderlineThick
    wdUnderlineWavyDouble
    wdUnderlineWords
    wdUnderlineDash
    wdUnderlineDashLong
    wdUnderlineDotDash
    wdUnderlineDotDotDash
    wdUnderlineDotted
    wdUnderlineDouble
    wdUnderlineSingle
    wdUnderlineWavy
    wdUnderlineWavyHeavy

    isabelle

    Le 2010-08-10 05:54, ludog_31 a écrit :

    Bonjour,

    Je souhaiterais savoir si dans WORD, via le VBA, il est possible de savoir si l'outils de Surlignage est actif ou non ?

    Mon problème est que lors de l'exécution de ma macro, je passe dans un procédure qui me désactive systématiquement mon outil de surlignage "WindowSelectionChange". Ce que je souhaite, c'est vérifier au début de la procédure si le surlignage est actif ou non, pour éventuellement le rétablir à la fin de ma procédure.

    Merci pour vos réponses !

    mardi 10 août 2010 22:51

Toutes les réponses

  • bonjour ludog,

    With Selection.Font
    If .Underline = wdUnderlineNone Then .Underline = wdUnderlineSingle
    End With

    Les constantes WdUnderline possibles sont les suivantes :
    wdUnderlineDashHeavy
    wdUnderlineDashLongHeavy
    wdUnderlineDotDashHeavy
    wdUnderlineDotDotDashHeavy
    wdUnderlineDottedHeavy
    wdUnderlineNone
    wdUnderlineThick
    wdUnderlineWavyDouble
    wdUnderlineWords
    wdUnderlineDash
    wdUnderlineDashLong
    wdUnderlineDotDash
    wdUnderlineDotDotDash
    wdUnderlineDotted
    wdUnderlineDouble
    wdUnderlineSingle
    wdUnderlineWavy
    wdUnderlineWavyHeavy

    isabelle

    Le 2010-08-10 05:54, ludog_31 a écrit :

    Bonjour,

    Je souhaiterais savoir si dans WORD, via le VBA, il est possible de savoir si l'outils de Surlignage est actif ou non ?

    Mon problème est que lors de l'exécution de ma macro, je passe dans un procédure qui me désactive systématiquement mon outil de surlignage "WindowSelectionChange". Ce que je souhaite, c'est vérifier au début de la procédure si le surlignage est actif ou non, pour éventuellement le rétablir à la fin de ma procédure.

    Merci pour vos réponses !

    mardi 10 août 2010 15:33
  • Bonjour à ludog_31 qui nous a écrit :

    Bonjour,

    Je souhaiterais savoir si dans WORD, via le VBA, il est possible de savoir si l'outils de Surlignage est actif ou non ?

    Mon problème est que lors de l'exécution de ma macro, je passe dans un procédure qui me désactive systématiquement mon outil de surlignage "WindowSelectionChange". Ce que je souhaite, c'est vérifier au début de la procédure si le surlignage est actif ou non, pour éventuellement le rétablir à la fin de ma procédure.

    Merci pour vos réponses !

    Votre description du problème est un peu succincte pour nous qui ne sommes pas devant votre écran.
    Si je comprends bien, vous avez programmé l'événement de changement de de sélection et en fin d'exécution vous n'avez plus le bouton de surlignage actif. C'est ça ?
    Je ne pense pas qu'on puisse agir sur l'interface autrement que par des sendkeys, si vous avez une solution, ce serait intéressant de la connaître, ça peut être piste pour connaître l'état de l'outil.
    Au fait : c'est quelle version de Word ?


    A+

    mardi 10 août 2010 20:04
  • bonjour ludog,

    voici un autre possibilité,
         With Dialogs(wdDialogFormatFont)
            .Underline = wdUnderlineSingle
            .UnderlineColor = vbRed
            .Execute
        End With

    isabelle

    Le 2010-08-10 11:33, isabelleV a écrit :

    bonjour ludog,

    With Selection.Font
    If .Underline = wdUnderlineNone Then .Underline = wdUnderlineSingle
    End With

    Les constantes WdUnderline possibles sont les suivantes :
    wdUnderlineDashHeavy
    wdUnderlineDashLongHeavy
    wdUnderlineDotDashHeavy
    wdUnderlineDotDotDashHeavy
    wdUnderlineDottedHeavy
    wdUnderlineNone
    wdUnderlineThick
    wdUnderlineWavyDouble
    wdUnderlineWords
    wdUnderlineDash
    wdUnderlineDashLong
    wdUnderlineDotDash
    wdUnderlineDotDotDash
    wdUnderlineDotted
    wdUnderlineDouble
    wdUnderlineSingle
    wdUnderlineWavy
    wdUnderlineWavyHeavy

    isabelle

    Le 2010-08-10 05:54, ludog_31 a écrit :

    Bonjour,

    Je souhaiterais savoir si dans WORD, via le VBA, il est possible de savoir si l'outils de Surlignage est actif ou non ?

    Mon problème est que lors de l'exécution de ma macro, je passe dans un procédure qui me désactive systématiquement mon outil de surlignage "WindowSelectionChange". Ce que je souhaite, c'est vérifier au début de la procédure si le surlignage est actif ou non, pour éventuellement le rétablir à la fin de ma procédure.

    Merci pour vos réponses !

    mardi 10 août 2010 22:51
  • Bonjour Isabelle et Geo,

     

    Je vous remercie pour les réponses !

     

    Ludog_31, je vous prie de confirmer si un de ces réponses vous a été utile et de le marquer comme ‘réponse’. Sinon, je vous prie de nous apporter des informations supplémentaires.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    lundi 16 août 2010 12:04
  • Bonjour,

    Oui c'est bien çà. Je suis en 2003.

    mardi 21 septembre 2010 14:54
  • Bonjour !

    Merci pour tes réponses mais mon problème ne concerne pas le surlignage avec le trait sous le texte, mais la coloration en fond de texte.

    La propriété Underline indique si le texte est sousligné et non pas si l'outil de surlignage (application de couleur de fond) est actif ou non...

    mardi 21 septembre 2010 14:56
  • Bonjour à ludog_31 qui nous a écrit :

    Oui c'est bien çà. Je suis en 2003.

    Vous savez activer l'outil de surlignage ?


    A+

    mardi 21 septembre 2010 15:05
  • mon problème n'est pas de savoir activer le surlignage, mais de tester si celui-ci est actif ou non en VBA !
    mardi 21 septembre 2010 18:53
  • bonjour ludog,

    c'est la propriété Highlight dont tu parle ?

    isabelle
     Le 2010-09-21 14:53, ludog_31 a écrit :

    mon problème n'est pas de savoir activer le surlignage, mais de tester si celui-ci est actif ou non en VBA !

    mardi 21 septembre 2010 22:01
  • Bonjour isabelleV,

    Je ne connais pas cette propriété...

    As-tu une adresse mail pour que je te détaille mon problème plus précisément ?

    mercredi 22 septembre 2010 07:40
  • Bonjour Isabelle

    c'est la propriété Highlight dont tu parles ?

    Oui, je pense.


    A+

    mercredi 22 septembre 2010 08:58
  • Pardon, je rectifie : c'est bien du bouton higlight du ruban qu'il s'agit et non pas de la propriété.
    Le bouton est désactivé par la macro de traitement de l'événement.
    Donc pour le réactiver si nécessaire, il faudrait en début de macro connaître son état, puis en fin de macro le remettre dans le même état.
     -- A+

    mercredi 22 septembre 2010 09:03
  • bonjour Geo, ludog, Alex et à vous tous,

    le code suivant met le focus sur le controle "surlignage" et l'execute,
    il faut impérativement l'executer à partir du document, (peu d'effet en mode pas à pas)

    With CommandBars("Formatting").Controls(29)
        .SetFocus
        .Execute
    End With

    pour trouver l'information des controls de cette commandbar

    Sub InfoCommandBarFormatting()
    For Each ctrl In CommandBars("Formatting").Controls
    On Error Resume Next
    x = x + 1
    x1 = ctrl.Caption
    x2 = ctrl.ID
    x3 = ctrl.State
    Debug.Print x, x1, x2, x3
    Next
    End Sub

    isabelle

    Le 2010-09-22 05:03, Geo Le Tourangeau [MVP] a écrit :

    Pardon, je rectifie : c'est bien du bouton higlight du ruban qu'il s'agit et non pas de la propriété.
    Le bouton est désactivé par la macro de traitement de l'événement.
    Donc pour le réactiver si nécessaire, il faudrait en début de macro connaître son état, puis en fin de macro le remettre dans le même état.
      -- A+

    mercredi 22 septembre 2010 12:53
  • Merci pour cette réponse isabelleV, mais la solution que tu me proposes ne me permet pas de savoir si le bouton est actif ou non...
    mercredi 22 septembre 2010 14:19
  • bonjour ludog,

    désolé, c'est que je ne comprend pas ce que tu veut dire par "si le bouton est actif"
    veut tu dire si le control a le focus
    ou bien si le control est disponible (IsPriorityDropped)
    ou bien si la selection est en format Highlight  ?

    isabelle
     Le 2010-09-22 10:19, ludog_31 a écrit :

    Merci pour cette réponse isabelleV, mais la solution que tu me proposes ne me permet pas de savoir si le bouton est actif ou non...

    mercredi 22 septembre 2010 14:32
  • En fait, ce bouton une fois que tu cliques dessus tu peux appliquer le surlignage sur autant de texte que tu le souhaite, le bouton reste enfoncé jusqu'à ce que tu reclique dessus pour le désactiver.

    Je peux te détailler un exemple en t'envoyant un doc...

    mercredi 22 septembre 2010 14:52
  • Re

    Ah ben ! tu m'épates.

    With CommandBars("Formatting").Controls(29)

    L'index correspond à la propriété par défaut du contrôle ?
    Quelle est-elle ?


    A+

    mercredi 22 septembre 2010 16:36
  • tu as raison Geo, j'aurais du utiliser son caption "Surlignage"
    la premiere solution que tu avais données  pour que le surlignage soit opérationnel semble la seule possible,
    je n'ai pas réussi a faire exactement ce que ludod souhaitais,
    la macro suivante, lorsqu'elle est exécutée à partir du document,
    ouvre la commande "Surlignage" et le focus est mit sur la premiere couleur.
    à la fin de l'exécution l'utilisateur doit appuyer sur "Enter" pour que le surlignage soit opérationnel.
    j'ai essayé de reproduire cette action "Enter" en vba mais malheureusement l'application perd la main.

    Sub test()
    With CommandBars("Formatting").Controls("Surlignage")
        .SetFocus
        .Execute
         DoEvents
        SendKeys "{TAB}", True
    '    SendKeys "{ENTER}", True  'Essaie non concluent

    End With
    End Sub

    isabelle
     Le 2010-09-22 12:36, Geo Le Tourangeau [MVP] a écrit :

    Re

    Ah ben ! tu m'épates.

    With CommandBars("Formatting").Controls(29)

    L'index correspond à la propriété par défaut du contrôle ?
    Quelle est-elle ?

    mercredi 22 septembre 2010 17:07
  • Re

    Merci.
    Je n'utilise le send key que sans les cas désespérés car ça ne marche qu'une fois sur 4.
    Il y avait un truc donné pour Outlook 2003 en passant par les barres de menus, il va falloir que je recherche.

    Autre chose que j'ai essayé pour éventuellement la couleur, puisque tu sembles la perdre :
    Debug.Print Options.DefaultHighlightColorIndex
    Options.DefaultHighlightColorIndex = wdBrightGreen
    Debug.Print Options.DefaultHighlightColorIndex

    Retourne 0 (pas de couleur), puis 4 (vert)
    Normal donc.
    Mais quand on revient au document le surligneur n'a pas changé de couleur.


    A+

    mercredi 22 septembre 2010 18:37
  • oui, c'est exact la couleur est perdu, j'avais essayer de la fixer en début de macro avec,
    Options.DefaultHighlightColorIndex = wdRed
    mais que néni...
    isabelle
     Le 2010-09-22 14:37, Geo Le Tourangeau [MVP] a écrit :

    Re

    Merci.
    Je n'utilise le send key que sans les cas désespérés car ça ne marche qu'une fois sur 4.
    Il y avait un truc donné pour Outlook 2003 en passant par les barres de menus, il va falloir que je recherche.

    Autre chose que j'ai essayé pour éventuellement la couleur, puisque tu sembles la perdre :
    Debug.Print Options.DefaultHighlightColorIndex
    Options.DefaultHighlightColorIndex = wdBrightGreen
    Debug.Print Options.DefaultHighlightColorIndex

    Retourne 0 (pas de couleur), puis 4 (vert)
    Normal donc.
    Mais quand on revient au document le surligneur n'a pas changé de couleur.

    mercredi 22 septembre 2010 18:58
  • Il faudrait voir avec ExecuteMso
    Mais de ce coté de la flaque il se fait tard.

    Bonne nuit.


    A+

    mercredi 22 septembre 2010 21:15
  • bonne nuit Geo, si tu as le temps demain matin dit moi si ce code (2007) fonctionne,
    Application.CommandBars.ExecuteMso "Surlignage"

    isabelle

    Le 2010-09-22 17:15, Geo Le Tourangeau [MVP] a écrit :

    Il faudrait voir avec ExecuteMso
    Mais de ce coté de la flaque il se fait tard.

    Bonne nuit.

    mercredi 22 septembre 2010 23:18
  • Bonjour Isabelle

    bonne nuit Geo, si tu as le temps demain matin dit moi si ce code (2007) fonctionne,
    Application.CommandBars.ExecuteMso "Surlignage"

    Non, j'ai erreur '5', argument ou appel de procédure incorrect.
    Essayé  aussi avec "&Surlignage" et 340
    En fait aucune ExecuteMso ne marche, pourtant c'était bon sous Excel.
    Il doit me manquer quelque chose.


    A+

    jeudi 23 septembre 2010 09:28
  • Résultat des courses et après avoir perdu quelques heures là-dessus:
    J'ai fait une liste complète des commandes de ruban en me basant sur le programme fait pour Excel.
    Ça donne toutes les commandes avec leur libellé (Caption) en français.
    Manque de chance, la commande ExecuteMso ne marche qu'avec le nom en AMÉRICAIN.
    Application.CommandBars.ExecuteMso "Copy"
    comme indiqué dans l'aide passe bien, mais :
    Application.CommandBars.ExecuteMso "Copier"
    déclenche l'erreur citée.
    Évidemment on n'a ces libellés nulle part, surtout pas dans l'aide.
    D'ailleurs Isabelle, pense à garder l'aide de la version 2003, elle sert encore avec la version 2010. L'aide s'appauvrit un peu plus chaque fois.

    J'imagine que tu as une version anglaise.
    Si tu veux, je t'envoie le programme qui liste les commandes Word et on fera le travail de correspondance.

    J'ai ajouté les raccourcis des boutons, il y en a qui ont changé en douce. On s'aligne sur la version américaine.


    A+

    jeudi 23 septembre 2010 14:08
  • oui ça serait intéressant de faire cette exercice,
    et comme se n'est pas tous les boutons prédéfinis qui ont un idMso,
    on pourrait combiner cette macro à celle de SilkyRoad "Comment lire les propriétés des contrôles prédéfinis idMso"
    ça nous ferait une liste complète.
    as-tu mon adresse ? elle dans les messages du groupe "COIN"
    isabelle

    Le 2010-09-23 10:08, Geo Le Tourangeau [MVP] a écrit :

    Résultat des courses et après avoir perdu quelques heures là-dessus:
    J'ai fait une liste complète des commandes de ruban en me basant sur le programme fait pour Excel.
    Ça donne toutes les commandes avec leur libellé (Caption) en français.
    Manque de chance, la commande ExecuteMso ne marche qu'avec le nom en AMÉRICAIN.
    Application.CommandBars.ExecuteMso "Copy"
    comme indiqué dans l'aide passe bien, mais :
    Application.CommandBars.ExecuteMso "Copier"
    déclenche l'erreur citée.
    Évidemment on n'a ces libellés nulle part, surtout pas dans l'aide.
    D'ailleurs Isabelle, pense à garder l'aide de la version 2003, elle sert encore avec la version 2010. L'aide s'appauvrit un peu plus chaque fois.

    J'imagine que tu as une version anglaise.
    Si tu veux, je t'envoie le programme qui liste les commandes Word et on fera le travail de correspondance.

    J'ai ajouté les raccourcis des boutons, il y en a qui ont changé en douce. On s'aligne sur la version américaine.

    jeudi 23 septembre 2010 14:30
  • Re

    on pourrait combiner cette macro à celle de SilkyRoad "Comment lire les propriétés des contrôles prédéfinis idMso" ça nous ferait une liste complète.

    je ne connais pas, tu as un lien ?

    as-tu mon adresse ?

    Non, je n'ai pas.

    elle dans les messages du groupe "COIN"

    Ben, j'ai décroché depuis un bon moment.

    Écris au webmestre (tout en bas de la page) de :
    http://chantavertin.free.fr/
    Ca m'arrivera en direct.

    Merci.


    A+

    jeudi 23 septembre 2010 14:58
  • Bien reçu, je t'ai envoyé la liste Word et celle d'Excel.
    Pour Outlook je tombe sur un os, mais on est hors sujet de cette conversation.
    Si on arrive à rapprocher les listes Word en français et anglais on arrivera peut-être à "cliquer" sur le surligneur.
    Mais on ne sait toujours pas connaître son état.


    A+

    jeudi 23 septembre 2010 19:52
  •  Le 2010-09-23 15:52, Geo Le Tourangeau [MVP] a écrit :

    Bien reçu, je t'ai envoyé la liste Word et celle d'Excel.
    Pour Outlook je tombe sur un os, mais on est hors sujet de cette conversation.
    Si on arrive à rapprocher les listes Word en français et anglais on arrivera peut-être à "cliquer" sur le surligneur.
    Mais on ne sait toujours pas connaître son état.

    oui mais dès lors qu'une macro est exécutée, l'outil de surlignage n'est plus opérationnel,
    on peut donc en déduire que son état est innactif.

    isabelle

    vendredi 24 septembre 2010 13:51
  • Bonjour Isabelle

    oui mais dès lors qu'une macro est exécutée, l'outil de surlignage n'est plus opérationnel, on peut donc en déduire que son état est innactif.

    Certes, mais la question serait de connaître son état avant le début d'exécution d'une macro.
    On pourrait aussi considérer que ce désarmement intempestif est un bogue.


    A+

    vendredi 24 septembre 2010 15:12
  • Bonjour

    dis moi si ce code (2007) fonctionne,
    Application.CommandBars.ExecuteMso "Surlignage"

    Essayé aussi, puisque ça correspond d'après tes tableaux :
    Application.CommandBars.ExecuteMso "Highlight"

    Toujours pareil : erreur d'exécution '5'

    Si j'ai le courage, je vais essayer de passer par le support.

    bonne journée.


    A+

    samedi 25 septembre 2010 09:06
  • ce bouton n'a peut être pas de idMso,

    d'après microsoft on peut faire ceci sur access (il faudrait l'essayer sur word)
    _________________________________________________________________________________
    Cliquez sur le bouton Microsoft Office, puis cliquez sur Options.
    Cliquez sur Personnaliser.
    Déplacez le pointeur sur l'élément que vous souhaitez obtenir des informations.
    Access affiche la valeur idMso du contrôle dans une info-bulle, entre parenthèses.
    _________________________________________________________________________________
    http://office.microsoft.com/en-us/access-help/customize-the-ribbon-HA010211415.aspx?pid=CH100621911033

    isabelle
     Le 2010-09-25 05:06, Geo Le Tourangeau [MVP] a écrit :

    Bonjour

    dis moi si ce code (2007) fonctionne,
    Application.CommandBars.ExecuteMso "Surlignage"

    Essayé aussi, puisque ça correspond d'après tes tableaux :
    Application.CommandBars.ExecuteMso "Highlight"

    Toujours pareil : erreur d'exécution '5'

    Si j'ai le courage, je vais essayer de passer par le support.

    bonne journée.

    samedi 25 septembre 2010 11:20
  • Re

    d'après microsoft on peut faire ceci sur access (il faudrait l'essayer sur word)
    _________________________________________________________________________________
    Cliquez sur le bouton Microsoft Office, puis cliquez sur Options.
    Cliquez sur Personnaliser.
    Déplacez le pointeur sur l'élément que vous souhaitez obtenir des informations.
    Access affiche la valeur idMso du contrôle dans une info-bulle, entre parenthèses.
    _________________________________________________________________________________

    Oui, le mécanisme existe.
    Non, je n'ai pas trouvé Surligner.
    En suivant la hiérarchie Accueil / Police on ne voit que deux commandes : "Couleur de la surbrillance du texte" et "Arrête la surbrillance".
    Donc pas la peine d'aller plus loin, en effet.

    Par contre j'ai trouvé "Surligneur" (au singulier) avec comme idMSO InkHighlighter. On se demande pourquoi ils ne l'ont pas appelé "sur brilleur" ou "brosse à reluire" pour être cohérent avec le vocabulaire précédent.

    "Surligneur" n'apparaît pas dans notre liste de commandes, il y a donc une faille dans le programme.
    Toujours est-il que msoexecute "InkHighlighter", passe bien (ouf), et ouvre un groupe d'onglets contextuel intitulé "Outils Encre" avec un seul onglet intitulé "Stylets".
    Ce qui est pour moi une découverte.
    On y trouve un stylet pour écriture manuscrite, un surligneur (mais pas le même) et une gomme.

    Pour en revenir au sujet : le fameux bouton de stylet est désactivé dès qu'on clique sur l'exécution de la macro.


    A+

    samedi 25 septembre 2010 12:15
  •  Le 2010-09-25 08:15, Geo Le Tourangeau [MVP] a écrit :

    Pour en revenir au sujet : le fameux bouton de stylet est désactivé dès qu'on clique sur l'exécution de la macro.

    il y a donc une cohérence pour ce qui est du comportement de ce "genre" d'outils,
    j'en conclue qu'il n'y a pas de solution pour ludog.

    isabelle

    samedi 25 septembre 2010 13:05