Recherche de mots sur plusieurs feuilles (VBA)
l
Bonjour,
Je suis débutant en VBA.
En adaptant un modèle trouvé sur internet, j'ai créé une petite macro pour rechercher un texte sur plusieurs feuilles.
- Le premier problème est que la macro ne donne que la première cellule sur laquelle elle tombe et contenant le texte pour chaque feuille : Je voudrais avoir un message affichant toutes les cellules où on retrouve ce texte.
- Le second problème est que les cordonnées de la cellule sont affichées avec des "$" (Exemple : $B$54) : Je voudrais qu'ils disparaissent pour plus de lisibilité.
- Le dernier problème est que je voudrais que le texte soit cherché uniquement dans la colonne B de chaque feuille où figurent mes tableaux.
Voici le code de ma macro :
Sub ChercheTexte()
Dim MesFeuilles As Variant, Feuille As Worksheet
Dim rech As Range
Dim Montexte As String
Montexte = InputBox("Veuillez saisir le texte")
MesFeuilles = Array("Feuille1", "Feuille2", "Feuille3", "Feuille4")
For i = LBound(MesFeuilles) To UBound(MesFeuilles)
Set Feuille = Sheets(MesFeuilles(i))
Set rech = Feuille.Cells.Find(Montexte)
If Not rech Is Nothing Then
MsgBox ("J'ai trouvé le texte dans la cellule " & rech.Address & " de " & Feuille.Name)
Else
MsgBox ("Le texte n'est pas dans " & Feuille.Name)
End If
Next i
End SubPouvez-vous modifiez ma macro pour obtenir le résultat escompté ?
Merci d'avance,
Bonne soirée.
Bonjour et bienvenue sur ce forum,
Essayez votre code comme ceci
Sub ChercheTexte()
Dim mesFeuilles()
Dim feuille As Worksheet
Dim rech As Range
Dim montexte As String, prem As String, cel As String
Dim i As Byte
montexte = InputBox("Veuillez saisir le texte")
mesFeuilles = Array("Feuille1", "Feuille2", "Feuille3", "Feuille4")
For i = LBound(mesFeuilles) To UBound(mesFeuilles)
Set feuille = Sheets(mesFeuilles(i))
Set rech = feuille.Range("B:B").Find(montexte)
If Not rech Is Nothing Then
prem = rech.Address
Do
If cel = "" Then
cel = rech.Address(0, 0)
Else: cel = cel & " - " & rech.Address(0, 0)
End If
Set rech = feuille.Range("B:B").FindNext(rech)
Loop While Not rech Is Nothing And rech.Address <> prem
MsgBox "J'ai trouvé le texte dans la(es) cellule(s) " & cel & " de " & feuille.Name, , "Mot trouvé"
End If
cel = vbNullString
Next i
End SubSi ok et terminé mercide cloturer le fil
Cordialement
l
C'est parfait, merci beaucoup !