fonction .find

francois22

XLDnaute Nouveau
Bonjour,

Je cherche à effectuer une recherche dans toute les feuilles mais seulement pour une colonne précise ( colonne A )
Je dispose de ce code :

Private Sub CommandButton1_Click()
reponse = InputBox("mot a chercher")
Range("A9:A" & Range("A65536").End(xlUp).Row).ClearContents
Call recherche(reponse)
End Sub


Sub recherche(mot)
ligne = 9
For Each ws In Sheets
If ws.Name <> "page d'ouverture" Then
With ws.Cells
Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Sheets("feuil1").Cells(ligne, 1).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
ws.Name & "!" & c.Address, TextToDisplay:=c.Value
ligne = ligne + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
trouve = True
End If
End With
End If
Next ws
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End Sub


Je pense que la réponse se trouve entre set c = ..... et .find(..) . Mais je ne sais pas comment l'écrire..

Pourriez vous svp me donnez une piste.

Bien cordialement,
Francois
 

Pierrot93

XLDnaute Barbatruc
Re : fonction .find

Bonjour François, Michel:)

une autre solution :
Code:
Set c = ws.Columns(1).Find
je t'engage à consulter l'aide vba, notamment la remarque sur l'utilisation des arguments de la méthode "find"...

bon après midi
@+

Edition : un point en trop dans le code....
 
Dernière édition:

francois22

XLDnaute Nouveau
Re : fonction .find

Bonjour,

Je vous remercie pour vos réponses rapides.
En cherchant un peu cette nuit j'ai utilisé :
....
With ws.Cells.Columns("A:A")
Set c = .Find(mot, LookIn:=xlValues, LookAt:=xlPart)
.....
et cela marche trés bien.

Une question suplémentaire :

Je souhaite exclure un feuille dans ma recherche . Par exemple la feuille 1. Celle où s'afiche les résultats. Cela éviterai au programme de tourner en rond..
Comment s'écrit "l'exclusion" dans ce cas là ?

Bien cordialement,
Francois
 

Dull

XLDnaute Barbatruc
Re : fonction .find

Salut francois22, le Fil

Apparemment tu as déjà exclus la page d'ouverture dans ton code initial

If ws.Name <> "page d'ouverture" Then
si ce n'est pas la même feuille il faut l'ajouter

Code:
Sub recherche(mot)
ligne = 9
For Each ws In Sheets
If ws.Name <> "Page d'ouverture" And ws.Name <> "Feuil1" Then
With ws.Columns(2) ' 1 Pour la Colonne A, 2 pour la Colonne B etc...
Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Sheets("feuil1").Cells(ligne, 1).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
ws.Name & "!" & c.Address, TextToDisplay:=c.Value
ligne = ligne + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
trouve = True
End If
End With
End If
Next ws
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End Sub
Bonne Journée
 

Statistiques des forums

Discussions
312 555
Messages
2 089 563
Membres
104 215
dernier inscrit
Jean Michl