Toolbar bouton et "zone de texte"

ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 25 mai 2010 à 09:07
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 25 mai 2010 à 15:42
Bonjour à tous,

Lorsque j'ouvre outlook, je créé automatiquement ma barre d'outils avec un bouton (lorsque l'on clique dessus, celui-ci ouvre une fenêtre) et une zone de texte.

Concernant la zone de texte de type msoControlEdit dans ma barre d'outils: une fois que j'ai tapé et fait "entrée" je voudrais faire une recherche à partir du texte que j'ai tapé dedans.
Pour l'instant, je ne sais pas comment m'y prendre. En effet, dans mon code je ne fais pas référence à ce qu'il écrit dedans.

Voici mon bout de code:
' Création barre d'outils
Sub Barre_outils()

Dim mesbarres As CommandBarS
Dim mabarre As CommandBar
Dim MaBarreCopy As CommandBar
Dim MonBouton2 As CommandBarButton
Dim MonTexte1 As CommandBarComboBox


Set mesbarres = ActiveExplorer.CommandBarS 'Collection des barres et menus de Outlook
For Each mabarre In mesbarres 'Recherche de la barre "Fournisseurs"
    If mabarre.NameLocal = "Fournisseurs" Then
        Set MaBarreCopy = mabarre
    End If
Next

If MaBarreCopy Is Nothing Then 'Si la barre n'a pas été trouvée alors...
'Création de la barre d'outils
    Set MaBarreCopy = mesbarres.Add("Fournisseurs")
    Set MonBouton2 = MaBarreCopy.Controls.Add
    
'Insertion sur la barre de menus du bouton de commande "Rechercher les fournisseurs contactés au cours d'une affaire"
        
        Set MonTexte1 = MaBarreCopy.Controls.Add(Type:=msoControlEdit)  'Saisie de la recherche
        MonTexte1.Style = msoComboLabel
        MonTexte1.Caption = "Recherche Fournisseurs"
        MonTexte1.TooltipText = "Recherche des fournisseurs contactés au cours d'une affaire"
        MonTexte1.Text = "Tapez un mot ou une phrase du nom de l'affaire"
        MonTexte1.OnAction = "Lancer_recherche"
        MonTexte1.Width = 365
        MonTexte1.BeginGroup = True
        
    Set MonBouton2 = MaBarreCopy.Controls(1) 'Accès au deuxième bouton
        MonBouton2.Caption = "Tri Fournisseurs"          'Texte du bouton
        MonBouton2.Style = msoButtonIconAndCaption                'Bouton avec image et texte
        MonBouton2.FaceId = 591                                   'Image du bouton
        MonBouton2.TooltipText = "Trier les fournisseurs par nombre de consultations" 'Etiquette
        MonBouton2.OnAction = "Lancer_tri"

        MaBarreCopy.Protection = msoBarNoCustomize + msoBarNoChangeDock 'Empêche l'utilisateur d'ajouter manuellement un bouton à la barre de menus et n'autorisera pas de positionner la barre de menus, verticalement, à gauche ou à droite de la feuille
        MaBarreCopy.Position = msoBarTop
        MaBarreCopy.Visible = True

End If

End Sub

Sub Lancer_recherche()

Dim olApp As Outlook.Application
Dim objContact As Outlook.ContactItem
Dim objContacts As Outlook.MAPIFolder
Dim objNameSpace As Outlook.NameSpace
Dim W As Object

Set olApp = CreateObject("Outlook.Application")
Set objNameSpace = olApp.GetNamespace("MAPI")
Set objContacts = objNameSpace.GetDefaultFolder(olFolderContacts)
    
For Each W In objContacts.Items             'Rechercher dans mes contacts
    If TypeName(W) = "ContactItem" Then     'Vérifier s'il s'agit d'un ContactItem
        Set objContact = W
        If (InStr(1, objContact.Body, "Julie", vbTextCompare) <> 0) Then
            UserForm1.ListBox1.AddItem (objContact.FullName)    'Ajouter le nom des personnes contactés
        End If
    End If
Next W

UserForm1.Show  'Afficher les résultats

End Sub

Sub Lancer_tri()
    UserForm2.Show
End Sub

5 réponses

ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
25 mai 2010 à 10:42
Re,

J'ai continué mes recherches, j'ai trouvé un code. Il doit être du genre :

Outlook.ActiveExplorer.commandBars.Item("Fournisseurs").controls.item("MonTexte1").Text


Mon problème c'est que je ne peux pas ajouter .Text

Quelqu'un peut m'aider svp ?!
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 mai 2010 à 13:02
Salut
Est-ce que .Text est la syntaxe correcte pour récupérer le contenu d'une msoControlEdit ?

Si, avec cette syntaxe, tu as une erreur, dis-nous laquelle.

Essaye en créant une instance de ta TextBox et seulement après, la lire :
    Dim monObjet As msoControlEdit
    With Outlook.ActiveExplorer.commandBars.Item("Fournisseurs")
        Set monObjet = .controls.item("MonTexte1")
    End With
    MsgBox monObjet.Text


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
25 mai 2010 à 14:11
Salut,

J'ai modifié le programme et mis en place le petit bout de code or:

- Dans la première ligne Dim monObjet As msoControlEdit, il msoControlEdit n'est pas dans la liste.
Si j'exécute quand même le code, il m'inscrit "Erreur de compilation: type défini par l'utilisateur non défini"
- J'ai remplacé msoControlEdit par textbox, control ou encore commandBarCombobox, cela me donne une "Erreur d'exécution '91' : variable objet ou variable de bloc With non définie
- Dernier essai, avec If (InStr(1, objContact.Body, Outlook.ActiveExplorer.commandBars("Fournisseurs").Controls("MonTexte1").Text, vbTextCompare) <> 0) Then
, j'ai encore et toujours une erreur qui est l'"erreur d'exécution '5' : Argument ou appel de procédure incorrect sachant que quand je note ce code Text n'est pas connu non plus.

De plus, je précise que mon code est développé dans un module mais je pense que cela ne gène en rien puisque j'arrive à créer ma barre d'outils avec mes boutons.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 mai 2010 à 15:17
Oui, msoControlEdit semble être une constante représentant le type de l'objet (un index dans une bibliothèque de composants mso), mais ne semble pas pouvoir être nommé.
Je n'ai pas approfondi.
A quoi ressemble de composant ?
Quels zavantages offre t-il par rapport aux composants classiques ?

Au pire des cas, utilise "As Object", ça fonctionnera surement, mais tu n'auras pas la liste des propriétés et méthodes de l'objet lorsque tu taperas le point derrière le nom de ton objet, puisque ce terme désigne n'importe quel type d'objet.
La compilation dans ce cas ne fera apparaitre les erreurs qu'au moment du Run et la compilation volontaire à partir du menu ne te dira rien, tant que la syntaxe ressemble à une propriété ou méthode plausible.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
25 mai 2010 à 15:42
Re,

Merci pour tes indications et d'avoir prit de ton temps pour me répondre. Finalement, j'ai remplacé mon msoControlEdit par un CommandButton qui affiche la même userform que précédemment auquelle j'y ai rajouté un TextBox ainsi qu'un bouton simple. Lors de l'exécution de mon code, tout fonctionne : il recherche bien le mot(s) saisis dans la textbox.

Bonne fin de journée !!! Et encore merciiii
0
Rejoignez-nous