XL 2010 recherche de mot sur plusieurs feuilles et non pas sur le classeur entier

THIRY

XLDnaute Nouveau
Bonjour à toutes et à tous
je cherche à modifier une macro de façon a faire une recherche sur une feuille ( index ) précise et pas sur le classeur entier.
merci beaucoup

Sub recherche(mot)
Dim plage As Range
ligne = 110
For Each ws In Sheets
If ws.Name <> "index" Then
For n = 1 To ws.Range("A65536").End(xlUp).Row
If InStr(UCase(ws.Range("a" & n)), UCase(mot)) <> 0 Then
Sheets("index").Cells(ligne, 1).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
ws.Name & "!a" & n, TextToDisplay:=ws.Range("a" & n).Value
ligne = ligne + 1
trouve = True
End If
Next n
End If
Next ws
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End Sub
 

thebenoit59

XLDnaute Accro
Bonjour Thiry.

VB:
Sub recherche(mot)
Dim plage As Range
ligne = 110
With Sheets("index")
For n = 1 To .Range("A65536").End(xlUp).Row
If InStr(UCase(.Range("a" & n)), UCase(mot)) <> 0 Then
.Cells(ligne, 1).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
.Name & "!a" & n, TextToDisplay:=.Range("a" & n).Value
ligne = ligne + 1
trouve = True
End If
Next n
End With
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End Sub

A tester, les .Select sont à éviter.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Une petite variante (macro avec paramètres)
VB:
Sub test()
'on choisit la feuille et le mot
recherche Sheets("index"), "titi"
End Sub

Private Sub recherche(Feuille As Worksheet, mot As String)
With Feuille
.Activate
For n = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If InStr(UCase(.Range("a" & n)), UCase(mot)) <> 0 Then
.Cells(n, 1).Hyperlinks.Add Anchor:=.Cells(n, 1), Address:="", SubAddress:= _
.Name & "!a" & n, TextToDisplay:=.Range("a" & n).Value
trouve = True
End If
Next n
End With
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End Sub
 

THIRY

XLDnaute Nouveau
Bonjour Thiry.

VB:
Sub recherche(mot)
Dim plage As Range
ligne = 110
With Sheets("index")
For n = 1 To .Range("A65536").End(xlUp).Row
If InStr(UCase(.Range("a" & n)), UCase(mot)) <> 0 Then
.Cells(ligne, 1).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
.Name & "!a" & n, TextToDisplay:=.Range("a" & n).Value
ligne = ligne + 1
trouve = True
End If
Next n
End With
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End Sub

A tester, les .Select sont à éviter.
 

THIRY

XLDnaute Nouveau
Bj
j'ai enregistré le classeur, fermé puis ouvert et testé.
je suis dls je ne suis pas un pro des macros mais dans ma feuille de recher il sort toutes les cellules ( peut'on faire une exception pour les feuilles ( menu : vent : stat ) Merci :)
 

laurent950

XLDnaute Accro
Bonsoir :

VB:
Sub recherche(mot)
Dim ws as worksheet
Set ws = worksheets("index")
Dim plage As Range
ligne = 110

for i = 1 To ws.Range("A65536").End(xlUp).Row
    If InStr(UCase(ws.Range("a" & i)), UCase(mot)) <> 0 Then
        ws.Cells(ligne, 1).Hyperlinks.Add Anchor:=ws.Cells(ligne, 1), Address:="", SubAddress:= _
        ws.Name & "!a" & i, TextToDisplay:=ws.Range("a" & i).Value
        ligne = ligne + 1
        trouve = True
    End If
next i

If Not trouve Then
    MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
End if
End Sub

laurent
 

Discussions similaires

Réponses
7
Affichages
315

Statistiques des forums

Discussions
312 149
Messages
2 085 772
Membres
102 970
dernier inscrit
JMaurice