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










Répondre à