mardi 26 mars 2013

VBA Word : Supprimer toutes les info-bulles d’une même occurrence d’un mot

Bonjour à tous,

OFFICE_WORD_2010Après avoir présenté une macro permettant d’ajouter une info-bulle pour toutes les occurrences d’un mot, une seconde permettant de supprimer toutes les champs de type AUTOTEXTLIST, voici une troisième qui permettra de supprimer toutes les info-bulles d’une même occurrence d’un mot.

--------------------------------------------------------------------------------------------

Sub SupprimerInfobulle()
'
' Macro SupprimerInfobulle, créée par Mehdi HAMMADI le 16/03/2012
' Suite à la requête d'un Internaute sur le site Office Users
' Objectif rechercher toutes les occurrences d’un mot ayant une info-bulle et la supprimer

    Dim nbChamps As Integer
    Dim strMotARechercher As String
   
    strMotARechercher = InputBox("Saisissez le mot contenant l'info-bulle", "Mot à rechercher")
    nbChamps = ActiveDocument.Fields.Count
   
    For i = nbChamps To 1 Step -1
       
        If ActiveDocument.Fields(i).Result = strMotARechercher Then
            ActiveDocument.Fields(i).Select
            Selection.Text = strMotARechercher
        End If
   
    Next
    Selection.HomeKey Unit:=wdStory

End Sub

--------------------------------------------------------------------------------------------

Mots clés Technorati : ,,,

VBA Word : macro pour supprimer tous les champs de type AUTOTEXTLIST

Bonjour à tous,

OFFICE_WORD_2010il y a quelques jours un internaute “Manu” m’interpelez sur ce blog après la lecture d’un article intitulé “Afficher une info-bulle contenant la définition d’un mot au survol de la souris en utilisant le champ AUTOTEXTLIST” et me demandait de lui fournir une macro qui lui permettrait d’automatiser l’insertion d’une info-bulle pour toutes les occurrences d’un même mot. Après quelques heures de travail, je fus en mesure de lui apporter une réponse que je publiais sur l’article suivant “Ajouter une info bulle à toutes les occurrences d’un mot dans un document Word”.

Après test et utilisation de la macro par Manu, celui-ci est revenu vers moi avec des commentaires qui m’ont permis de corriger certains bugs. Manu demandas également deux autres macros, l’une permettant de supprimer toutes les info-bulles et la seconde permettant de supprimer les info-bulles d’une occurrence précise.

Je propose donc ci-après une macro permettant de supprimer tous les champs de type AUTOTEXTLIST

----------------------------------------------------------------------------------------------

Sub SupprimerToutesLesInfobulles()

’ Macro SupprimerToutesLesInfobulles, créée par Mehdi HAMMADI le 26/03/2013
’ suite à la requête d’un internaute sur le blog Office Users
’ Objectif : supprimer tous les champs de type AUTOTEXTLIST

    Dim nbChamps As Integer
   
    nbChamps = ActiveDocument.Fields.Count
   
    For i = nbChamps To 1 Step -1
       
        If Left(ActiveDocument.Fields(i).Code, 13) = " AUTOTEXTLIST" Then
            ActiveDocument.Fields(i).Select
            Selection.Text = ActiveDocument.Fields(i).Result
        End If
   
    Next
   
    Selection.HomeKey Unit:=wdStory

End Sub

----------------------------------------------------------------------------------------------

Mots clés Technorati : ,,,,

vendredi 15 mars 2013

Ajouter une info bulle à toutes les occurrences d’un mot dans un document Word

Il y a quelques temps je publiais un article intitulé “Word : afficher une info-bulle contenant la définition d’un mot au survol de la souris en utilisant le champ AUTOTEXTLIST” dans cette article j’explique comment ajouter dans Word une info-bulle à un mot permettant de l’expliquer ou de le définir. Suite à cette article un Internaute m’a demandé de lui fournir une macro qui permettrait d’automatiser cette tâche.

Je vous présente donc “InfoBulle” une macro qui recherche l’occurrence d’un mot dans un document puis le remplace par un champ permettant d’afficher lorsque vous survolez le mot avec la souris une info-bulle qui contient un texte pouvant être utilisé pour définir ou expliquer le mot survolé. Cette macro a été fait sous Word version 2010.

La macro ‘Infobulle’

Sub InfoBulle()
'
' Macro Info-bulle, créée par Mehdi HAMMADI le 15/03/2012
' Suite à la requête d'un Internaute sur le site Office Users
' Objectif rechercher les différentes occurrences d'un mot dans un texte puis lui ajouter une infobulle.
' Merci à Circé pour la partie de code permettant de compté le nombre d'occurence d'un mot
’ (http://www.faqword.com/index.php/word/faq-word/vba-solutions/555-comment-compter-le-nombre-doccurences-contenues-dans-un-document)
   
    Dim strMotARecherche As String
    Dim strTexteInfoBulle As String
    Dim strTexteDuChamp As String
   
    strMotARechercher = InputBox("Saisissez le mot", "Mot à rechercher")
    strTexteInfoBulle = InputBox("Saisissez le texte de l'info-bulle", "Info-bulle")
   
    If IsNull(strMotARechercher) Or strMotARechercher = "" Or IsNull(strTexteInfoBulle) _
        Or strTexteInfoBulle = "" Then
        Exit Sub
    Else
        Selection.HomeKey Unit:=wdStory
        strTexteDuChamp = "AUTOTEXTLIST " & chr$(34) & strMotARechercher & chr$(34) & " \t " _
        & chr$(34) & strTexteInfoBulle & chr$(34)
        iCount = 0
        With ActiveDocument.Content.Find
            Do While .Execute(FindText:=strMotARechercher, Format:=False, _
                MatchCase:=False, MatchWholeWord:=True) = True
                iCount = iCount + 1
            Loop
        End With
       
        If iCount = 0 Then
            MsgBox ("pas de correspondance")
            Exit Sub
        End If
              
        Selection.HomeKey Unit:=wdStory
        With Selection.Find
            .Text = strMotARechercher
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = True
        End With
       
        For i = 1 To iCount
            Selection.Find.Execute
            ActiveWindow.View.ShowFieldCodes = True
            Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
            Text:=strTexteDuChamp, PreserveFormatting:=True
            ActiveWindow.View.ShowFieldCodes = False
        Next
    End If
End Sub

Mots clés Technorati : ,,,