Recherche d'une valeur dans Excel en VBS

Résolu
Signaler
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009
-
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009
-
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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 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
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
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 
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009

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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009

Merci, je vais voir ça...
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Modif catégorie de la question .NET --> VBS
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009

OUPS ! Désolé... Mais merci quand même
Messages postés
6
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
15 janvier 2009

Merci !

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

A+