Sub RechercheMot()

  • Initiateur de la discussion muriel
  • Date de début
M

muriel

Guest
bonjour à tous,

je suis un débutant dans VB, mais j'ai réussi à trouver un code qui permet de rechercher un mot dans tout les classeur, mais par contre je n'ai pas réussi à comprendre tout le code et moi je voudrais juste qui cherche un mot dans la colonne B, C et D, et en esperant ne pas abuser je voudraissavoir aussi comment c'est possible de faire que quant il selectionne un mot à la place de juste se mettre dessus avec le curseur lui donner une couleur rouge ou autre.

d'avance merci pour votre aide à tous,

mike
 
A

arnaud

Guest
cherche dans ton code une chose comme :
.Cells( i , j ) ( avec i et j corresponadant a des noms de variable donc n'importe quoi )

et tu remplace le j par le numéros de la colonne que tu veux ( comme le numéros 12 pour la colonne M
 
M

mike

Guest
désolé je voulais mettre le code et j'ai zapper donc le voici car j'ai un peu essayer ce que tu m'a dis sur ton post mais je n'y suis pas arrivé:

Sub RechercheMot()
'mpfe, auteur inconnu
mot = InputBox("Mot à rechercher ?")
For feuille = 1 To Sheets.Count
Sheets(feuille).Select
Set trouvé1 = Cells.Find(what:=mot)
If Not trouvé1 Is Nothing Then
trouvé1.Activate
étiq:
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé2 = Cells.FindNext(After:=ActiveCell)
If trouvé2.Column <> trouvé1.Column Or trouvé2.Row <> trouvé1.Row Then
trouvé2.Activate
GoTo étiq
End If
End If
Next feuille
End Sub


merci pour ta réponse,

@++
 
A

arnaud

Guest
j'en suis pas sur du tout je peut même pas te dire si ça va compiler....

Sub RechercheMot()
'mpfe, auteur inconnu
mot = InputBox("Mot à rechercher ?")
For feuille = 1 To Sheets.Count
Sheets(feuille).Select
for i=1 to 3000 ' a toi de voir combien de ligne tu fais
Set trouvé1 = Cells(i,12).Find(what:=mot) ' 12 c donc pour le "m" donc a toi de changer et si tu veux plusieur colonne, fais une 2ème boucle
If Not trouvé1 Is Nothing Then
trouvé1.Activate
next i
étiq:
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé2 = Cells.FindNext(After:=ActiveCell)
If trouvé2.Column <> trouvé1.Column Or trouvé2.Row <> trouvé1.Row Then
trouvé2.Activate
GoTo étiq
End If
End If
Next feuille
End Sub
 
A

arnaud

Guest
Sub RechercheMot()
'mpfe, auteur inconnu
mot = InputBox("Mot à rechercher ?")
For feuille = 1 To Sheets.Count
Sheets(feuille).Select
for i=1 to 3000 ' a toi de voir combien de ligne tu fais
Set trouvé1 = Cells(i,12).Find(what:=mot) ' 12 c donc pour le "m" donc a toi de changer et si tu veux plusieur colonne, fais une 2ème boucle
If Not trouvé1 Is Nothing Then
trouvé1.Activate
étiq:
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé2 = Cells.FindNext(After:=ActiveCell)
If trouvé2.Column <> trouvé1.Column Or trouvé2.Row <> trouvé1.Row Then
trouvé2.Activate
GoTo étiq
End If
End If
next i
Next feuille
End Sub
 
M

michel

Guest
Bonjour à tous

vous trouverez ci joint un exemple de recheche dans les colonne B à D . quand une valeur est trouvée , le fond de la cellule devient rouge .

Bon apres midi
Michel
 

Pièces jointes

  • Trouver.zip
    8.9 KB · Affichages: 30
M

mike

Guest
c'est super arnaud ça marche impeccable, encore merci pour cette formule.

je ne sais pas si je peux abusé, vu déjà le service que tu m'as rendu,
mais bon je tente au pire tu me diras d'aller jouer ailleurs,
si par exemple ce code je ne voulais l'executer que sur la premier feuille et non pas sur les trois feuilles pour que au final le code se termine en feuille 3 que dois-je changer dans mon code ???

Pour les autres questions j'irais sur le forum pour les poser

@++
 
A

arnaud

Guest
je suis pas sur d'avoir bien compris ta question. en tt cas, pour que cela ne se fasse que sur une feuille ( la 1 par ex ) il suffit d'enlever la boucle qui regarde ds les 3 feuilles. donc :

Sub RechercheMot()
'mpfe, auteur inconnu
mot = InputBox("Mot à rechercher ?")
feuille = 1 'remplace le 1 par le numéros de la feuille que tu veux
Sheets(feuille).Select
for i=1 to 3000 ' a toi de voir combien de ligne tu fais
Set trouvé1 = Cells(i,12).Find(what:=mot) ' 12 c donc pour le "m" donc a toi de changer et si tu veux plusieur colonne, fais une 2ème boucle
If Not trouvé1 Is Nothing Then
trouvé1.Activate
étiq:
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé2 = Cells.FindNext(After:=ActiveCell)
If trouvé2.Column <> trouvé1.Column Or trouvé2.Row <> trouvé1.Row Then
trouvé2.Activate
GoTo étiq
End If
End If
next i
End Sub
 
M

mike

Guest
bonjour michel,

je trouve votre module très interressant, et je vous remercie de me l'avoir mis à disposition, je n'aurais qu'une question car le reste et vraiment très bien, comment puis je faire pour qu'apres avoir quitter la cellule la couleur ne reste pas ?

d'avance merci,

mike
 
M

mike

Guest
Excellent Michel, ça marche très bien.
Une petite question, dans le code d'arnaud si je fait une recherchge et qu'il y a plusieurs mots ayant les memes lettres il me propose "suivant" alors que ta formule s'arrete au premier mot trouvé, comment faire pour intégrer cela dans ta formule ?

Merci à vous tous pour votre aide,

en souhaitant que tu es compris ma question Michel,

bonne soirée,
Mike
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz