Salut à tous !
Comme j'ai promis de le faire, j'ai pris un petit moment pour travailler sur
une solution pour lancer des recherches d'éléments dans les menus de microsoft
word pour commencer.
Cela avance plutôt bien.
Etant donné que les objets représentant les menus sont identiques dans les
diverses versions d'office, le code VBA que je vous collerai plus bas devrait
pouvoir fonctionner partout.
Néanmoins je me confronte à un problème de forme plutôt que de fond. C'est
qu'il faudrait que je présente la liste des éléments trouvés dans une liste de
choix. Or le VBA ne propose pas une fonction permettant de le faire et oblige
plutôt à créer une userForm afin d'y intégrer les objets de type liste.
Et étant donné que je veux que le code fonctionne dans plusieurs application
office, faire une version de cet userForm pour chacune de ces applications ne
me semble pas élégant et pratique.
Par ailleurs, pour avoir fait un peut de scripting en LUA dans le 6pad, j'ai
observé que ce type de boîte de dialogue déclenchée par une simple fonction y
était présente.
Et mon intuition a été que celle-ci avait été appelée par une API, soit propre
au langage C, soit directement présent dans le System32.
Quelqu'un, et là je m'adresse particulièrement à Quentin, pourrait si c'est le
cas m'indiquer comment le faire ?
Merci d'avance !
Voici à présent le code VBA sur lequel j'ai déja travaillé:
Début de code VBA
Private Sub SearchAMenu()
' recherche une expression parmi les menus
Dim i As Integer
Dim s As String
Dim sSearch As String
Dim cb As CommandBar
Dim cc As CommandBarControl
' demande de l'expression à rechercher
sSearch = InputBox("Tapez l'expression à rechercher dans les menus",
"Expression à rechercher dans les menus")
If sSearch = vbNullString Then Exit Sub
' parcours de toutes les barres de commande
For Each cb In CommandBars
' parcours de tous les éléments de barre de commande
For Each cc In cb.Controls
' vérification
If InStr(1, cc.Caption, sSearch, vbTextCompare) > 0 Then
i = i + 1
s = s & ", " & cc.Caption
End If ' fin vérification
Next ' control suivant
Next ' barre de commande suivante
If s <> vbNullString Then
' retrait de superflux
s = Mid(s, 3)
' affichage
MsgBox s, vbOKOnly, i & " éléments trouvés"
Else ' aucun résultat
MsgBox "Aucune occurence de l'expression '" & sSearch & "' n'a été trouvée dans
les menus.", vbOKOnly + vbExclamation, "Aucune occurence trouvée"
End If
End Sub
Fin du code VBA
Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
Mon site: www.visuweb.net