Rechercher dans une textbox

ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 19 mai 2010 à 14:50
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Derniè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


2 réponses

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
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és 83 Date d'inscription jeudi 4 février 2010 Statut Membre Derniè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...
Rejoignez-nous