Recherche d'une valeur dans Excel en VBS

Résolu
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009 - 7 janv. 2009 à 17:55
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009 - 15 janv. 2009 à 10:03
Bonjour,
J'ai un petit problème en VBScript.
Je souhaite faire une recherche dans un fichier excel, mais je ne veux obtenir que la première cellule qui contient exactement le mot recherché.

Par exemple, si je recherche 'INFO', je voudrais que la cellule renvoyée ne contienne que le mot 'INFO' et pas avoir la cellule qui contient le mot 'INFORMATIQUE'

J'ai essayé la fonction Find :
objExcel.Cells.Find(Mot_Recherché)
Mais elle me renvoie la première cellule 'INFORMATIQUE'

PS : Je ne fais pas de VBA

Merci à tous

9 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
10 janv. 2009 à 21:40
 Bonsoir,

Lecture ligne par ligne et arrêt si strWord trouvé.

objExcel.ActiveWorkbook.Sheets("Feuil1").Select

strWord = "INFO"
NL = 1

Trouve = False
For L = NL To objExcel.ActiveSheet.UsedRange.Rows.Count
    For C = 1 To objExcel.ActiveSheet.UsedRange.Columns.Count
        If Trim(objExcel.ActiveSheet.Cells(L, C).Value) = strWord Then 
           MsgBox objExcel.Cells(L, C).Value & vbCrLf & _
                  objExcel.Cells(L, C).Address,,"mot trouvé !"
           Trouve = True : Exit For
        End If
    Next
    If Trouve = True Then Exit For
    NL = NL + 1 
Next
If Trouve = False Then MsgBox "mot non trouvé !"

jean-marc
3
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
7 janv. 2009 à 18:12
Salut,

La solution serait peut être que lorsque Find te renvois quelque chose, de tester si le nombre de caractères du mot recherché correspond à celui que t'a renvoyé Find...

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
0
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009
7 janv. 2009 à 19:03
Merci de la réponse,
Mais c'est justement ce que je faisais, et le problème est que si ce n'est pas le bon élément, je fais à nouveau une recherche, mais au final ça tourne en boucle. La fonction Find semble redémarrer à la première trouvée à chaque fois (alors qu'en VBA, elle redémarre par défaut à la dernière cellule trouvée)

Peut-être y a-t-il des paramètres à mettre mais je ne les trouve pas.

Un autre problème est que je ne connais pas le nombre d'éléments dans ma feuille excel et qu'en plus elle n'est pas homogène (les cellules ne sont pas uniformément remplies, par exemple certaines lignes peuvent avoir 1 colonne remplie, d'autres 5 ou 6 ou même plus, mais toutes les cellules "pleines" sont adjacentes)
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
7 janv. 2009 à 21:13
Salut
Oui, Find commence ... depuis le début et fournit une référence de cellule.
Après avoir identifié la première cellule correspondant à la recherche, si tu désires poursuivre la recherche, il te faut utiliser la fonction FindNext sur la cellule pointée.
De plus, il faudra mémoriser la première cellule trouvée car le FindNext repartira à zéro en fin de recherche --> Il faudra le comparer à cette cellule initialement trouvée.
Tout ceci est expliqué dans l'aide de Excel pour la fonction Find :

   With Worksheets(1).Range("a1:a500")
       Set c = .Find(2, lookin:=xlValues)
       If Not c Is Nothing Then
           firstAddress = c.Address
           Do
               c.Value = 5
               Set c = . FindNext (c)
           Loop While Not c Is Nothing And c.Address <> firstAddress
       End If
   End With

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

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

Posez votre question
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009
7 janv. 2009 à 21:35
Merci, je vais voir ça...
0
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009
8 janv. 2009 à 11:08
Il semblerait que cette fonction n'existe pas en VBS ???
Je viens de recréer une fonction Find qui semble marcher. Donc merci quand même
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
8 janv. 2009 à 13:22
Modif catégorie de la question .NET --> VBS
0
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009
9 janv. 2009 à 00:51
OUPS ! Désolé... Mais merci quand même
0
SAFENil Messages postés 6 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 15 janvier 2009
15 janv. 2009 à 10:03
Merci !

C'est la manière que j'ai utilisé pour rechercher, et ça marche !

A+
0
Rejoignez-nous