Recherche avec Find ... Next

W

William

Guest
Salut le ShowRoom,

Je fais appel à votre assistance, car je commence sérieusement à tourner en rond...

Je fais une recherche avec Find ... Next (vouis, c'est dans le titre...)

Et j'aimerais pouvoir connaître le numéro de la ligne, pour chaque résultat positif, dans la colonne "F".

En fait, admettons que je recherche ZAZA, cette donnée peut-être en "F4" et en "F12" également...

Comment faire pour le savoir ??

Toute aide sera bien sûre bienvenue... Je prend les liens vers d'autres fils, les explications brutes, les chèques déjeuners, les carte bleue, et même une petite pièce...

A vot' bon coeur...

Merci d'avance,

William
 
W

William

Guest
Suis pas sûr que ma question était claire, en la relisant à froid....

Donc, ci dessous, le code (simplifié), que j'utilise :



Range("A1").Value = trouve
Range("F:F").Select

Range("F1").Activate

Selection.Find(What:=trouve, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate

fiche = Selection.Value



... Et alors là, pour avoir toutes les valeur égales ) "trouve" de la colonne "F" : Quid ?


J'espère que cette fois c'est Ok, sinon I'll Be Back !!

(C'est comme ça qu'il dit non ?)

A bientôt,

William
 
V

Vériland

Guest
Bonsoir William et le forum,

Il me semble que tu sois tout seul sur ce fil...Elle va bien Marie ? ...alors avant de développer une réponse macrologique je pense que pour l'instant la simple option de filtre automatique pourrais déjà correspondre...

pour ce faire tu selectionnes le haut de la colonne ensuite tu fais Données / Filtre / Filtre automatique...tu peux des lors obtenir le résultat de ta recherche par simple selection dans la cellule titre...mais il faut que ta colonne contienne des valeurs (texte ou nombre)...

Je ne sais pas si tu connais cette option, c'est aussi réalisable par macro bien sûr...mais c'est une autre histoire pour le coup...

A+ Vériland
 
W

William

Guest
Hello,

Il est vraiment.... Il est vraiment.... Il est vraiment veri - land la la la la !!

Ben vouis, Marie va bien, mais le problème c'est qu'elle m'a laissé tout seul, donc du coup je manque sérieusement de compagnie... D'autant que ce fil était loin d'être animé avant ton arrivée !

Merci de ton conseil, et surtout de t'être intéressé à mon désarroi...

Mais hélas, je connaissais déjà le filtre automatique... Sniff !

J'ai eu un fol espoir, lorsque tu a indiqué que c'était réalisable par macro, avant de sombrer de nouveau (lolo .... Euh, lol)

Je sens qu'il est possible de faire un boucle avec la recherche Find... What, mais quand arrêter le Next, ça c'est autre chose...

J'espère te revoir bientôt, pour peut être une "réponse macrologique"...

@+

William
 
V

Vériland

Guest
Re bonsoir William,

hi hi hi...Donc voici un début de macro qui je pense pourrait déjà correspondre :

Sub ChercheMot()
critère = "trouve"
Sheets("Feuil1").Columns("F:F").AutoFilter 1, critère
End Sub

Donc sur "Feuil1" c'est un Filtre automatique qui fait le recherche du mot "trouve" dans la colonne F...

A+ Vériland
 
Dernière modification par un modérateur:
S

steplof

Guest
Salut à tout le monde,

au risque de faire un bide...

je comprends pas bien ce que tu veux faire de tes résultats une fois trouvés... et je comprends pas non plus (mais c peut être la conséquence de ma première incompréhension) pourquoi vouloir utiliser Find Next pour ça.

Bon j'ai fait un petit truc tout bête qui te liste les cellules de la colonne F correspondant à la valeur saisie en A1...

si ça peut t'aider ou si tu veux développer, explique moi un peu plus...


@bientôt
Steplof
 

Pièces jointes

  • Will.xls
    29 KB · Affichages: 97
Dernière modification par un modérateur:
W

William

Guest
Bonjour Steplof, Veriland, et tous les autres,


Alors en fait, j'ai besoin, en fonction des résultats se trouvant en colonne "F", de connaitre les données figurant en colonne A sur la même ligne...

Pour cela, une fois que la cellule "F" contenant la fameuse donnée : "trouve", je peux m'en sortir sans problème, par un Offset....

Le problème, c'est d'arriver sur la cellule "F"... Si j'y parvient par un Find What, je ne peux accéder qu'à la première ligne, et pas au suivantes, d'où l'utilité du ... Next...

Steplof, je veux bien ton truc pour lister les cellules, mais peux tu me l'envoyer dans ma BAL... Restrictions - Restrictions....

Veriland, je vais tester ton tri, et voir ce que cela donne...

A Bientôt, et bonne journée,


William
 
@

@+Thierry

Guest
Bonjour William, Vériland, StepLof et ceux, celles qui passeront par là...

Si j'ai bien compris, il te faudrait ce que j'ai fait dans "Contact Manager" voir ce fil

Pour te donner une idée voici un extrait du code utilisé :

Private Sub CommandButton2_Click() 'MODE RECHERCHE STRING
Caption = "Thierry's Démo Mode Recherche par String"
Dim Cherche As String
Dim L As Integer
Dim Maplage As Range
Dim FirstADdress As String
Dim C As Object
Cherche = TextBox4
If Cherche = "" Then
ListBox2.Clear
Exit Sub
End If

L = ThisWorkbook.Sheets("Database").Range("A65536").End(xlUp).Row
Set Maplage = ThisWorkbook.Sheets("Database").Range("A2:C" & L)
With Maplage
Set C = .Find(Cherche, LookIn:=xlValues)
If Not C Is Nothing Then
FirstADdress = C.Address
Do
ListBox2.AddItem C
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstADdress
End If
End With


Ici je remplie une ListBox, mais le principe serait le même pour écrire sur une feuille par exemple en rajoutant en seconde colonne l'adresse des cellules :


Option Explicit

Private Sub CommandButton1_Click()
Dim Cherche As String
Dim L As Integer
Dim i As Integer
Dim Maplage As Range
Dim FirstADdress As String
Dim C As Object
Cherche = InputBox("Tapez votre recherche", "RECHERCHE")
If Cherche = "" Then Exit Sub
i = 1

L = Sheets("Feuil1").Range("A65536").End(xlUp).Row
Set Maplage = Sheets("Feuil1").Range("A2:C" & L)
With Maplage
Set C = .Find(Cherche, LookIn:=xlValues)
If Not C Is Nothing Then
FirstADdress = C.Address
Do
With Sheets("Feuil1")
.Cells(i, 3) = C
.Cells(i, 4) = C.Address
i = i + 1
End With
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstADdress
End If
End With
End Sub


Attention toutefois, si par exemple en A1:A20 to as "Toto1, Toto2, Toto3... Etc Toto20.... Si tu cherches "2", ce programme of course te retournera deux occurences en colonne "C" et "D" pour "Toto2" & aussi "Toto20"...

Mais sinon çà tourne !! allez roulez jeunesse !! lol

Bon Appétit
@+Thierry


PS : si tu veux le "Contact Manager" je te l'envoie aussi William
 
W

William

Guest
Re-bonjour Tout le monde,


J'ai reçu le Will.xls de Steplof, dans ma BAL, et suis donc de nouveau sur la route du bonheur.....

Impecable, la recherche des données !! (Non ? .... Si si !!)

J'aurais cependant besoin de conserver les données (N° de ligne) en mémoire, pour un usage ultérieur...

Et comme je suis super mauvais avec les boucles For... Next, je sollicite votre bienveillante assistance...

De la même manière, il faudrait que je puisse effectuer la recherche sur d'autres feuilles, que "trouve" soit trouvé ou pas...

Mais, il me manque la formule pour y arriver (Etonnant non ?)

Alors merci encore à tous les volontaires...

Merci encore !!

Bonne journée,

William
 
W

William

Guest
Salut Thierry,

Merci de me porter assistance !

Je viens de voir que tu m'a envoyé tes deux derniers messages, pendant que j'écrivais le mien...

Je regarde ton code, et reviens dès que tout de suite, encore que plus vite, c'est pas facile...

@+

William
 
@

@+Thierry

Guest
Re Bonjour

Ben pour la méthode de StepLof je viens d'y jetter un oeil, il suffit de la modifier comme ceci pour écrie en dûr sur la feuille :


Private Sub CommandButton1_Click()
Dim DernLigneF As Long
Dim LignesTrouve() As Long
Dim trouve As String
Dim compteur As Long
trouve = Sheets(1).Range("a1").Value
DernLigneF = Sheets(1).Range("F65536").End(xlUp).Row
compteur = 0
ReDim LignesTrouve(DernLigneF + 1)
For Each cell In Range("f1:f" & DernLigneF)
If cell.Value = trouve Then
LignesTrouve(compteur) = cell.Row
compteur = 1 + compteur
End If
Next cell
If compteur = 0 Then
MsgBox "Pas trouve" & trouve
Exit Sub

Else
For i = 0 To compteur - 1
Sheets(1).Range("B" & i + 1).Value = "Trouve " & trouve & " en F" & LignesTrouve(i)
Next i
End If
End Sub


Mais attention cette méthode recherche la Valeur intégrale de la cellule, pas un extrait de string de son contenu... C'est tout à fait différent, mais c'est peut-être ce que tu cherches William.

Bon Aprèm
@+Thierry
 
@

@+Thierry

Guest
Je viens de voir que tu voulais çà en "Multi Feuilles", j'ai un exemple si tu veux, je te le mail.... (Attention toutefois, c'est la méthode de StepLof : "If cell.Value = trouve Then " et pas "Set C = .Find(Cherche, LookIn:=xlValues)"

Je te le post si tu veux...

@+Thierry


PS pour StepLof, très bien au fait ta méthode avec une Array Dynamique
 
W

William

Guest
Thierry,

Je veux bien que tu me post le fichier avec recherche multi feuilles.

D'autant que je dois effectuer une recherche avec une valeur exacte (il s'agit de N° d'immat), et que ce serait parfait si je n'étais pas envahi par des n° proches, mais pas identiques....

Cependant, je te préviens tout de suite, je risque de revenir pour une explication de texte, parce que jusque là, je n'ai pas compris grand chose
;o)

@+

Et merci encore,

William
 

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 182
dernier inscrit
savio