ptitemeuh
Messages postés83Date d'inscriptionjeudi 4 février 2010StatutMembreDernière intervention 8 juillet 2010
-
19 mai 2010 à 14:50
ptitemeuh
Messages postés83Date d'inscriptionjeudi 4 février 2010StatutMembreDernière intervention 8 juillet 2010
-
20 mai 2010 à 11:55
Bonjour à tous,
J'ai fais un programme développé en visual basic qui permet à l'ouverture de mettre en place automatiquement une barre d'outils avec différents boutons. J'ai un de mes "boutons" qui me pose problème :
[list]
Pour l'instant, je n'écris pas le mot à chercher dans mon msoComboLabel, j'appuie juste sur entrée;
Dans mon code, j'ai demandé de chercher "toto" dans mes textbox. Mais le problème c'est qu'elle ne me détecte pas ce mot lorsqu'il yen a plusieurs.
/list
Voici mon code:
Sub Lancer_recherche()
Dim olApp As Outlook.Application
Dim objContact As Outlook.ContactItem
Dim objContacts As Outlook.MAPIFolder
Dim objNameSpace As Outlook.NameSpace
Set olApp = CreateObject("Outlook.Application")
Set objNameSpace = olApp.GetNamespace("MAPI")
Set objContacts = objNameSpace.GetDefaultFolder(olFolderContacts)
Set objContact = objContacts.Items.Find("[Notes]=""toto""")
If Not TypeName(objContact) = "Nothing" Then
MsgBox "not nothing" & vbCrLf & objContact.FullName
Else
MsgBox "nothing"
End If
End Sub
Sub Lancer_tri()
UserForm2.Show
End Sub
' 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 mai 2010 à 15:53
Salut
"mais le problème c'est qu'elle ne me détecte pas ce mot lorsqu'il yen a plusieurs."
Super claire cette explication !
Cherches-tu un texte qui peut être inclus dans un long texte, genre "Mr toto la Riflette" ?
Essaye cette syntaxe (logique)
.Find("[Notes]=""*toto*""")
ou
.Find("[Notes]=""%toto%""")
A tester
AVANT de venir prochainement poser ta question sur "comment on fait pour lire le résultat suivant", regarde l'aide de la fonction FindNext, suggérée dans l'aide de Find
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 20 mai 2010 à 11:55
Salut,
Je suis désolé de revenir à la charge, j'ai beau m'inspirer du code suivant avec FindNext inscrit dans l'aide de visual basic sous outlook:
Sub DemoFindNext()
Dim myOlApp As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim tdystart As Date
Dim tdyend As Date
Dim myAppointments As Outlook.Items
Dim currentAppointment As Outlook.AppointmentItem
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
tdystart = VBA.Format(Now, "Short Date")
tdyend = VBA.Format(Now + 1, "Short Date")
Set myAppointments = myNameSpace.GetDefaultFolder(olFolderCalendar).Items
Set currentAppointment = myAppointments.Find("[Start] >= """ & tdystart & """ and [Start] <= """ & tdyend & """")
While TypeName(currentAppointment) <> "Nothing"
MsgBox currentAppointment.Subject
Set currentAppointment = myAppointments.FindNext
Wend
End Sub
Voici mon code :
Sub Lancer_recherche()
Dim olApp As Outlook.Application
Dim objContact As Outlook.ContactItem
Dim objContacts As Outlook.MAPIFolder
Dim objNameSpace As Outlook.NameSpace
Set olApp = CreateObject("Outlook.Application")
Set objNameSpace = olApp.GetNamespace("MAPI")
Set objContacts = objNameSpace.GetDefaultFolder(olFolderContacts)
Set objContact objContacts.Items.Find("[FirstName] ""Alain""")
While Not TypeName(objContact) = "Nothing"
UserForm1.ListBox1.AddItem (objContact.FullName)
Set objContact = objContacts.Items.FindNext
Wend
UserForm1.Show
End Sub
Lorsque mon code est exécuté, j'obtiens bien le premier prénom Alain dans ma UserForm mais pas les suivants qui sont dans mon carnet d'adresses. J'ai beau regarder et comparer avec d'autres codes sur internet mais je ne vois pas du tout d'où pourrait venir mon oubli...