Limiter la recherche d'un mot à une zone mais sur plusieurs feuilles

P

Pégase

Guest
Bonjour à tous,

J'ai encore besoin de votre aide...

Pour rechercher un mot dans plusieurs pages j'utilise une macro VBA ressemblant à celle que je reproduis ci dessous.
Mon problème c'est que je n'arrive pas à limiter la recherche à une zone, identique, pour chaque feuille.
Par exemple je voudrais que la recherche ne se fasse que sur les lignes 12 à 80

Voici ma macro d'origine

Sub RechercheMot()
mot = InputBox("Mot à rechercher ?")
For feuille = 1 To Sheets.Count
Sheets(feuille).Select
Set Trouve1 = Cells.Find(What:=mot)
If Not Trouve1 Is Nothing Then
Trouve1.Activate
Suite:
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set Trouve2 = Cells.FindNext(After:=ActiveCell)
If Trouve2.Column <> Trouve1.Column Or Trouve2.Row <> Trouve1.Row Then
Trouve2.Activate
GoTo Suite
End If
End If
Next feuille
End Sub

Je pense qu'un Rows("12:80") bien placé devrais aller mais je n'y arrive pas.

D'avance merci

Pégase
 
M

michel

Guest
bonsoir Pégase

j'espere que l'adaptation ci dessous répondra à ta demande


Sub ChercherMot()
Dim Cell As Range
Dim Valeur As String, FirstAddress As String
Dim Feuille As Byte

Valeur = Application.InputBox("Saisir le mot à trouver : ")
If Valeur = "" Then Exit Sub

For Feuille = 1 To Sheets.Count

With Sheets(Feuille).Rows("12:80")
Set Cell = .Find(Valeur, LookIn:=xlValues)
If Not Cell Is Nothing Then
FirstAddress = Cell.Address
Do
Sheets(Feuille).Activate
Cell.Select
If MsgBox(" Continuer la recherche", 4, "Message") = vbNo Then Exit Sub

Set Cell = .FindNext(After:=ActiveCell)
Loop While Not Cell Is Nothing And Cell.Address <> FirstAddress
End If
End With

Next Feuille

If FirstAddress = "" Then MsgBox " La donnée " & Valeur & " n'a pas été trouvée dans le classeur . ", , "Message"

End Sub


bonne soiree
MichelXld
 
@

@+Thierry

Guest
Bonjour Michel, Pégase

Ah tiens tiens, vu que c'est justement une démo du jour, j'en profite pour vous inviter au vernissage :

=> Lien supprimé

Venez nombreux on sabre le champagne !!! lol

Non sérieux, il suffit de définir une range dans cette partie du code :
&nbsp; => Module "ModuleSearch"
&nbsp; => Macro "Recherche"
&nbsp; => Ligne 19
&nbsp; => Code d'Origine "With Sheets(S).UsedRange
&nbsp; => Code de Remplacement ""With Sheets(S).Range("A12:IV80")

Bonne Soirée
@+Thierry
 
P

Pégase

Guest
Merci à Michel et Thierry pour votre aide et votre réactivité fulgurante.

Je suis bien novice, depuis 3 à 4 semines je me suis lancé dans le VBA (j'avais déjà fait de la programmation Basic et Fortran mais il y a bien longtemps) et je me régale

Michel je viens d'essayer ton code ça fonctionne exactement comme je le souhaitais.
Il me reste à l'adapter (et donc de bien comprendre) à mon code qui est un peu plus élaboré que ce que j'avais donné.

Sabrer le champagne est une de mes spécialités (au sens propre), étant cavalier nous avons cette tradition.... donc, par la pensée, je me joins à vous

Merci
Pégase
 
P

Pégase

Guest
Bonjours à tous,

Après quelques jours d'absence, je viens d'adapter le code de Michel et ça marche bien.
Je n'ai plus qu'un petit pb.

Dans mes tableaux j'ai beaucoup de nombre présentés avec le séparateur de millier et 2 décimales (ex : 1015 s'affiche 1 015.00).
Or avec la macro de recherche si je tape 1015 il ne trouve pas 1 015.00 à cause de l'espace et si je tape 1 015 il ne le trouve pas non plus
.
J'ai trouvé une solution (mais elle est peu élégante je trouve) :
En début de macro je reformate toutes colonnes concernées avec la fonction Selection.NumberFormat = "0.00" puis en fin de macro je fais l'opération inverse avec Selection.NumberFormat = "#,##0.00"

Peut être que quelqu'un a une solution plus simple ?

J'ai essayé la DEMO UserForm de Recherche MultiSheets de Thierry (super) mais sur des nombres formatés, il réagit comme le mien puisqu'il n'y a rien de particulier dans le code.

D'avance merci de votre aide.

Pégase
 

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p