Bonjour à tous,
je recherche depuis quelques temps comment réalisé une macro pour faire une recherche dans une feuille, à force de chercher à droite et à gauche j'ai réussi à adapter le code ci-dessous, et je remercie la personne qui l'a réalisé en partie:
maintenant voila, la recherce est effectué dans toute la feuille, j'aimerai adapté mon code pour qu'il réalise la recherche uniquement dans la plage de donnée (F12;F65536). J'espère ainsi diminué le temps de recherche qui peut s'averer être long....
Merci d'avance à ceux qui pourront m'aider!
je recherche depuis quelques temps comment réalisé une macro pour faire une recherche dans une feuille, à force de chercher à droite et à gauche j'ai réussi à adapter le code ci-dessous, et je remercie la personne qui l'a réalisé en partie:
Code:
Option Explicit
Sub TrouverMotChoix()
Dim Mot As String
Dim Ws As Object
Dim Nbre As Long
Dim Cycle As Long
Dim Trouvé As Variant
Dim CellAddress As Variant
Dim MyValue As String
'Définition de la variable à rechercher
Mot = InputBox("Saisir le N° de caisse à chercher.", Title:="Recherche")
'Vérification si existante
If Mot = "" Then Exit Sub
For Each Ws In Worksheets
Nbre = Nbre + Application.CountIf(Ws.UsedRange, "=" & Mot)
Next Ws
'Message en cas de mot inexistant
If Nbre = 0 Then
MyValue = MsgBox(" Le n° de caisse " & Mot & " n'est pas enregistrée ", vbOKOnly, " Message ")
Else
Cycle = 0
'Recherche et arrêt sur les cellules contenant le Mot
For Each Ws In Worksheets
With Ws
.Activate
Set Trouvé = .Cells.Find(What:=Mot, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart)
If Not Trouvé Is Nothing Then
CellAddress = Trouvé.Address
Do
Cycle = Cycle + 1
Trouvé.Activate
If Nbre = 1 Then
MyValue = MsgBox(" Le n° de caisse " & Mot & " est enregistrée 1 seule fois ", vbOKOnly, " Message ")
Exit Sub
End If
If Cycle = Nbre Then
MyValue = MsgBox(" Le n° de caisse " & Mot & " sélectionnée est la dernière !", vbOKOnly, "Message")
Sheets("Feuil1").Activate
Range("A1").Select
Exit Sub
Else
MyValue = MsgBox(" Le n° de caisse " & Mot & " sélectionnée est la " & Cycle & " sur " & Nbre & " existantes. " & vbLf & _
" Voulez vous continuer la recherche ? ", vbYesNo, "Message")
If MyValue = vbNo Then Exit For
Set Trouvé = .Cells.FindNext(After:=Trouvé)
End If
Loop While Not Trouvé Is Nothing And Trouvé.Address <> CellAddress
End If
End With
Next Ws
End If
End Sub
maintenant voila, la recherce est effectué dans toute la feuille, j'aimerai adapté mon code pour qu'il réalise la recherche uniquement dans la plage de donnée (F12;F65536). J'espère ainsi diminué le temps de recherche qui peut s'averer être long....
Merci d'avance à ceux qui pourront m'aider!