ptitemeuh
Messages postés83Date d'inscriptionjeudi 4 février 2010StatutMembreDernière intervention 8 juillet 2010
-
25 mai 2010 à 09:07
ptitemeuh
Messages postés83Date d'inscriptionjeudi 4 février 2010StatutMembreDerniè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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
ptitemeuh
Messages postés83Date d'inscriptionjeudi 4 février 2010StatutMembreDerniè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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ptitemeuh
Messages postés83Date d'inscriptionjeudi 4 février 2010StatutMembreDerniè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.