Recherche d'une text ds une feuille de calcul

Résolu/Fermé
nuxaly Messages postés 24 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 10 septembre 2011 - 31 mars 2008 à 01:54
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 6 avril 2008 à 20:30
Bonjour,

je souhaite que vous pouvez m'aider a resoudre mon problemecar je suis encore debutante en vba.
bon voila le prbleme: j'ai creé un userform qui contient de textbox(textbox1 et textbox2) avec un bouton(CommandButton1) pour chercher les 2 mots taper dans les 2 zones de text dans une feuille de calcule, je veus losque je click sur le bouton le msgbox m'envoi oui s'il exist et non sinon. bon j'ai utiliser la boucle for pour parcourire tous les lignes de ma feuille. le probleme que la boucle for m'affiche le msgbox (oui ou non) rows.count fois (c-a-d le msgbox affiche jusqua la derniere lignes de ma feuille).

le code est :


Private Sub CommandButton1_Click()
Dim Cible As String

Cible1 = TextBox1.Text
Cible2 = TextBox2.Text
n = Rows.Count

For i = 1 To n

If InStr(Cible1, Cells(i, 1)) = 1 And InStr(Cible2, Cells(i, 2)) = 1 Then

MsgBox "oui"

Else

MsgBox "non"

End If

Next i

End Sub



je veus lorsque les 2 mots sont trouvés la recherche arrete et le msgbox affiche "oui ou non" just une fois.
merci d'avance

nuxaly!
A voir également:

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 mars 2008 à 02:22
Bonjour,

Il faut écrire la boucle de recherche dans une fonction qui renvoie True si elle trouve les 2 mots ou False si elle ne trouve pas :
Private Sub CommandButton1_Click()
Dim Cible As String

Cible1 = TextBox1.Text
Cible2 = TextBox2.Text

If SearchMot(Cible1, Cible2) = True Then
MsgBox "Oui"
Else
MsgBox "non"
End If
End Sub

Private Function SearchMot(ByVal c1 As String, ByVal c2 As String) As Boolean
Dim i As Long

For i = 1 To Rows.Count
If (InStr(Cible1, Cells(i, 1)) = 1) And (InStr(Cible2, Cells(i, 2)) = 1) Then
SearchMot = True
Exit Function
Else
SearchMot = False
End If
Next i
End Function

;o)

polux
0
nuxaly Messages postés 24 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 10 septembre 2011
31 mars 2008 à 22:20
salut polux,
merci beaucoup pour ton aide.
le prbleme reste encore mais cette fois le msgbox affiche just "non" meme si les mots existe dans ma feuille de calcul...
merci autre fois

nuxaly!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
1 avril 2008 à 09:11
bonjour,

Je n'ai pas testé le code que je t'ai donné mais je viens de voir que la fonction InStr n'est pas vraiment appropriée pour ce que tu veux faire et que mon code contient des erreurs. Ensuite il faut faire la recherche dans 2 boucles et non dans une comme je te l'ai faite. Il faut d'abord rechercher le premier texte (cible1) dans toute la feuile et si l'on trouve le premier alors on lance une recherche du second mot sur toute la feuille ... Essaies de travailler la dessus, et si tu as des difficultés, n'hésites pas à m'en faire part.

;o)
Polux
0
nuxaly Messages postés 24 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 10 septembre 2011
1 avril 2008 à 23:48
bonsoir;

ok j'essaye de faire ce que tu ma dis , et merci de ton aide...

nuxaly!!
0
nuxaly Messages postés 24 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 10 septembre 2011
6 avril 2008 à 20:22
salut polux;

j'ai des difficultés a afficher le contenu d'un plage de cellules, je m'explique: lorsque je trouve les 2 mots recherché je veux que ma listbox m'affiche des info sur les 2 mots . par exemple si les mots sont dans les cellules A3 et B3 alors j e ve affiche le contenu des cellules de A3 à F3 (par exemple) .

lorsque j ecris : ListBox1.AddItem Range("A & i:F & i").Value il menvoi un message d'erreur : erreur dexecution 1004 et la methode 'range' de l'obget '_global' a echoué.

merci !!!

nuxaly!!!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 avril 2008 à 20:30
Bonjour,

il faut faire comme ça :
ListBox1.AddItem Range("A & i).Value & " " & Range("F & i).Value


;o)

Polux
0