Optimisation moteur de recherche et liste
Bonjour !
•J'ai actuellement le moteur de recherche suivant:
Sub recherche()
motclé = InputBox("Numéro de plan à chercher :", "Moteur de recherche", "Exemple: 221500")
For Each ws In Worksheets
With ws.Columns("K:K")
Set re = .Find(motclé, lookat:=xlWhole)
If Not re Is Nothing Then
fa = re.Address
Do
ws.Activate
re.Select
Exit Sub
Set re = .FindNext(re)
Loop Until re Is Nothing Or re.Address = fa
End If
End With
Next
End SubCe moteur parcours toutes les valeurs de la colonne K et nous emmène à la feuille contenant cette valeur. Sauf que celui-ci s’arrête à la première valeur. J'aimerais que si jamais il y a deux fois la même valeur, on ait le choix d'aller à la feuille contenant l'autre valeur, via une MessageBox par exemple
•J'ai aussi une liste
With Sheets(ActiveSheet.Name).Cells(j, 23).Validation 'Entrez le numero de la feuille ainsi que la cellule correspondante
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(tabl, ",")
End Withet je n'arrive pas à trouver le bout de code qui me manque pour qu'il m'affiche la liste dans l'ordre décroissant
j'ai lu sur quelques fourums qu'il y avait un ".Reverse" mais cela ne fonctionne pas
Merci
Bonjour,
Je me suis rendu compte qu'en supprimant une ligne, le moteur nous emmène désormais à la dernière feuille contenant le mot recherché.
Est-il possible d'afficher un message "Aller à la feuille suivante ?" si jamais le mot recherché existe plusieurs fois dans le classeur ?
Sub recherche()
motclé = InputBox("Numéro de plan à chercher :", "Moteur de recherche", "Exemple: 221500")
For Each ws In Worksheets
With ws.Columns("K:K")
Set re = .Find(motclé, lookat:=xlWhole)
If Not re Is Nothing Then
fa = re.Address
Do
ws.Activate
re.Select
Set re = .FindNext(re)
If MsgBox("Un autre résultat à été trouvé, aller à celui ci ?", vbOKCancel, "Résultat de la recherche") = vbCancel Then Exit Sub
Loop Until re Is Nothing Or re.Address = fa
End If
End With
Next
End SubJ'ai donc une fenêtre qui s'ouvre à chaque recherche mais je voudrais que celle-ci n'apparaissent uniquement si il y a des "doubles" et non pas à chaque fois.
Merci
J'ai trouver la solution pour le moteur de recherche
Sub recherche()
Dim Premier_passage As Boolean
Premier_passage = True
motclé = InputBox("Numéro de plan à chercher :", "Moteur de recherche", "Exemple: 221500")
For Each ws In Worksheets
With ws.Columns("K:K")
Set re = .Find(motclé, lookat:=xlWhole)
If Not re Is Nothing Then
fa = re.Address
Do
If Premier_passage = False Then
If MsgBox("Un autre résultat à été trouvé, aller à celui ci ?", vbOKCancel, "Résultat de la recherche") = vbCancel Then Exit Sub
End If
Premier_passage = False
ws.Activate
re.Select
Set re = .FindNext(re)
Loop Until re Is Nothing Or re.Address = fa
End If
End With
Next
End SubPar contre concernant l'ordre inverse de la liste si quelqu'un a des infos je suis preneur !