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
Je te remercie d'avoir fait ce boulot rien que pour moi ! Ca en aidera plus d'un ! :)
RépondreSupprimerMaintenant petit détail, mais pas trop dérangeant car le travail fournis est tout simplement ENORME. c'est que dans le champ "Tapez votre définition" de la macro, seul le premier mot est pris en compte, sinon, pour la définition, il_faut_la_noter_comme_ca_pour_que_tout_soit_pris_en_compte. Donc soit lier la définition en un bloque.
Mais je vais pas être trop exigent, je te remercie beaucoup !! :)
Merci pour votre retour;
SupprimerJe viens de corriger ce bug, il faudra remplacer la ligne
strTexteDuChamp = "AUTOTEXTLIST " & strMotARechercher & " \t " & strTexteInfoBulle
par
strTexteDuChamp = "AUTOTEXTLIST " & strMotARechercher & " \t " & Chr$(34) & strTexteInfoBulle & Chr$(34)
Correction que je vais mettre à jour.
Merci encore
Merci à toi d'intervenir à ma simple demande et être prêt a faire et même corrigé une macro qui va me changer la vie !
SupprimerJe connais que très peu de monde capable d'aider son prochain de la sorte ! Merci encore !
Si je peux proposer une amélioration suite à l'utilisation de cette macro, il serait utile, d'avoir une seconde macro, celle ci de suppression de la définition de la première qui, en marquant le mot à définir, va supprimer toutes les infos bulles du mot.
En effet, si on ajoute la définition du mot XYZ à son document, et que, quelque jour après, d'autre mots XYZ (sans infos bulles) sont rajouté au document, si on veux rajouter a nouveau la déf avec la macro, cela engendre un bug.
Exemple : Si on écrit le mot "chien" avec une info-bulle, et qu'ensuite, d'autre mot chien intégré le document, si on réutilise la macro, les mots ayant l'info-bulle se voit en double. Soit "ChienChien" en infos bulle.
J'espère avoir été assez clair, maintenant, comme je l'ai dis précédemment, j'en demande pas trop lol, ton travail est tout bonnement parfait et suffisant, mais il est vrai que une macro de suppression d'infos bulle selon le mot, ça serait top pour rajouter des mots à "infos-buller" ou
...ou pour modifier la définition
SupprimerBref, merci encore pour ton travail énorme et ta rapidité !
Après une utilisation intensive de cette macro, c'est tout simplement un petit bijou, rien a dire, elle marche nickel.
SupprimerAprès voilà, pour l'améliorer, il serais vraiment parfait d'avoir une macro pour supprimer toutes les infos bulles d'une document, et une seconde pour supprimer toutes les infos bulles d'un mot spécifique du document.
Bonjour et merci de votre retour,
RépondreSupprimerJe tenterais une macro de désinstallation des que j'aurais un peu de temps.
Encore merci
Merci à toi pour cette macro unique ! elle n'existe nulle part ailleurs, elle est pourtant si utile (pour les étudiants surtout), et je l'avais chercher durant des heures sur des sites US, mais je ne trouvais rien :)
SupprimerBonjour,
RépondreSupprimerJe viens de corriger un autre bug signalé par Manu et la macro prend maintenant en compte les mots composés comme mot à rechercher ainsi il est possible de définir des mots comme "epagneul breton".
Voici le code d'origine :
strTexteDuChamp = "AUTOTEXTLIST " & strMotARechercher & " \t " & Chr$(34) & strTexteInfoBulle & Chr$(34)
à remplacer par :
par
strTexteDuChamp = "AUTOTEXTLIST " & Chr$(34) & strMotARechercher & Chr$(34) & " \t " & Chr$(34) & strTexteInfoBulle & Chr$(34)
Correction faites dans le message initiale.
Bonjour,
RépondreSupprimerMerci pour votre travail et bravo, cette macro est très utile à beaucoup d’utilisateurs !
Je souhaitais savoir s'il était possible de faire la même sous PowerPoint ? (et également si la mise en forme de l'info-bulle était possible, par exemple en l'affichant sur plusieurs lignes)
Merci par avance de votre réponse
Bonsoir,
RépondreSupprimerSous PowerPoint il n'est pas possible d'insérer de champs. Donc cette fonctionnalité n'est pas disponible. Toutefois, si vous souhaitez ajouter des infobulles dans PowerPoint, voici un lien vers un article qui d'écrit la procédure. Je l'ai testé avec la version 2013 est cela fonctionne. http://www.netfox2.net/modules/smartsection/item.php?itemid=559#.VLlRj3l0wkI
Pour ce qui est de l'affichage de l'infobulle (sous Word) sur plusieurs lignes je n'ai pas de réponse et je ne trouve pas d'article sur le sujet.
Bonne continuation