biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 février 2005
-
18 févr. 2005 à 11:47
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006
-
20 mai 2005 à 17:23
Salut!
Je cherche à créer une macro permettant de trouver un mot dans une feuille active Excel.
Une fois le mot trouvé (et ses doublons possibles), j'aimerais que celui-ci soit sélectionner.
Voici ce que j'ai fait pour le moment. J'ai mis en bleu la ligne qui semble bancale,
mais je n'ai pas compris pourquoi.
Merci d'avance si vous pouvez me donner un coup de main :-)
Biscottte
Sub Chercher()
ActiveSheet.UsedRange.Select
' Déclaration des variables.
Dim Search
Dim Where As String
' On Obtient le mot à rechercher de l'utilisateur.
Search = InputBox("quel mot cherchez-vous?")
' Recherche le mot dans la feuille active.
Where = InStr(1, ActiveSheet, Search)
' Si l'utilisateur trouve le mot,
If Where Then
' Le mot est sélectionné
' on définit le début de la sélection
Text1.SelStart = Where - 1
' et on définit sa longueur.
Text1.SelLength = Len(Search)
Else
' Informe l'utilisateur.
MsgBox "mot introuvable."
biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 février 2005 18 févr. 2005 à 13:17
C'est ce que je suis en train de faire . Bon, je n'arrive qu'à sélectionner qu'une cellule à la fois et pas les doublons avec, mais j'ai une lueur d'espoir maintenant.
Pour les doublons j'essaie avec For Each... Next, mais il n'a pas l'air d'aimer.
Sub Q4essai()
Dim Cell As Variant
ActiveSheet.UsedRange.Select
Search = InputBox("quel mot cherchez-vous?")
Where = InStr(1, Search, UsedRange)
For Each Cell In Cells.Find(What:=Search, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Pierre_faucon
Messages postés96Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention22 mai 2007 18 févr. 2005 à 14:13
Utilise la procédure suivante
Sub Cherche()
Dim Flag_Trouve As Boolean ' Flag pour signaler que l'on a trouvé une cellule
Dim Cellule As Range
Dim Adresse_Premiere_Cellule As String
Set Cellule = ActiveSheet.Cells.Find(what:=Search, LookIn:=xlValues, lookat:=xlPart)
Do While Not Cellule Is Nothing
If Flag_Trouve = False Then
' Si flag_trouve = false, alors c'est la première cellule
Flag_Trouve = True
' on mémorise l'adresse de la première cellule qui correspond au critère
Adresse_Premiere_Cellule = Cellule.Address
End If
Cellule.Interior.Color = vbRed
Set Cellule = ActiveSheet.Cells.FindNext(after:=Cellule)
' On teste pour voir si on a bouclé sur toutes les cellule.
' Si oui, Excel recommence à la première et boucle indéfiniment.
' Donc, si on revient à la première, tout a été scanné et on sort de la boucle
If Cellule.Address = Adresse_Premiere_Cellule Then Exit Do
Loop
End Sub
Ok?
Pierre Fauconnier
Vous n’avez pas trouvé la réponse que vous recherchez ?
biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 février 2005 18 févr. 2005 à 14:37
Ca a fait planter Excel .
Visiblement il ne comprend pas quand sortir de la boucle. Je suis sur la même piste que celle que tu m'as donné, avec for each... next ou loop until. Le truc c'est qu'il faut que je trouve la bonne barrière pour éviter que le programme tourne en rond. J'ai pensé aussi à Union (range1, range2 etc.).
Merci d'avoir pris le temps de réfléchir à mon problème, en tout cas :-)
biscottte
Messages postés11Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention18 février 2005 18 févr. 2005 à 14:43
Youpiiiiii j'ai trouvé! J'ai fait complètement autre chose, quand çà bloque, çà bloque!!!
Sub SelectCellulesValeurDeterminee()
LaValeur = Range("D2").Value
For Each Cell In ActiveCell.CurrentRegion If Cell.Value LaValeur Then Plg Plg & Cell.Address() & ","
Next Cell
If Len(Plg) > 0 Then Range(Left(Plg, Len(Plg) - 1)).Select
End Sub
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 20 mai 2005 à 17:23
Bonjour Pierre,
je me permets de reprendre le fil de cette question, car la mienne est quasi similaire: je recherche moi une valeur particulière dans toute une colonne.
Set Cellule = Worksheets(1).Range("I:I").Find("20")
J'ai essayé de manipuler la fonction .Find mais elle plante.
En effet, la valeur à trouver est le résultat d'une fonction et lorsque j'utilise ma fonction .Find sur la colonne de résultats, elle me renvoie Nothing, alors que je suis sûr que la valeur est présente.
De plus, en précisant l'argument What de la fonction avec la valeur à trouver, il me renvoie une cellule, mais dont les coordonnées correspondent au nombre cherché (Ex: dans la colonne I, je cherche 20: la fonction me renvoie la cellule I20 !!!!!)!!!
Je ne comprends pas d'où peut venir le problème.
J'espère que tu as compris ma situation et que tu as quelconque idée.