Rechercher en commençant par la feuille active

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Me re-voici avec un souci de recherche. Mes essaies, recherches" et mon niveau en vba ne m'ont pas permis de trouver la bonne codification.
Je me tourne à nouveau vers vous en espérant une solution.

j'avais posé, il y a quelques temps une question sur la recherche à laquelle vous aviez eu la gentillesse de me donner des réponses toutes bonnes comme l'habitude.

Le code de Youky me convenait le mieux. Toutefois j'aurais besoin de 2 améliorations :
Serait-il possible :
de commencer la recherche par la feuille active ?
d'avoir un message qui indique que l'objet de la recherche est inexistante ?

je joins un fichier test.

Avec mes remerciements,
Je vous souhaite une bonne fin de journée,
Amicalement,
arthour973
 

Pièces jointes

  • Recheche simple tous onglets.xlsm
    263.2 KB · Affichages: 16

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @arthour973,

Essayez ce code:
VB:
Sub Rechercher()
'youky - modifié mapomme
  nom = InputBox("A rechercher", "Recherche")
  If nom = "" Then Exit Sub
  For k = ActiveSheet.Index To Sheets.Count
    With Sheets(k).UsedRange
      Set c = .Find(nom, LookIn:=xlValues)
      If Not c Is Nothing Then
        n = n + 1
        firstAddress = c.Address
        Do
          Sheets(k).Select
          c.Activate
          rep = MsgBox("Continuer la recherche ?", 4 + 32, "Sélection")
          If rep = vbNo Then Exit Sub
          Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
      End If
    End With
  Next
  If n = 0 Then
    MsgBox "Aucune correspondnace n'a été trouvée", vbExclamation
  Else
    MsgBox "WALA, y'en a pas d'autre(s) !"
  End If
End Sub

nota : on commence la recherche sur la feuille active pour terminer par la dernière feuille. On ne revient pas sur les feuilles avant la première feuille active. S'il faut y revenir, le préciser...
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @arthour973,

Si après avoir atteint la dernière feuille, il faut rechercher à partir de la première feuille, alors essayez ce code :
VB:
Sub Rechercher()
'youky - modifié mapomme
  nom = InputBox("A rechercher", "Recherche")
  If nom = "" Then Exit Sub
  q = ActiveSheet.Index
  For q = q To ActiveSheet.Index + Sheets.Count - 1
    k = (q - 1) Mod (Sheets.Count) + 1
    With Sheets(k).UsedRange
      Set c = .Find(nom, LookIn:=xlValues)
      If Not c Is Nothing Then
        n = n + 1
        firstAddress = c.Address
        Do
          Sheets(k).Select
          c.Activate
          rep = MsgBox("Continuer la recherche ?", 4 + 32, "Sélection")
          If rep = vbNo Then Exit Sub
          Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
      End If
    End With
  Next q
  If n = 0 Then
    MsgBox "Aucune correspondance n'a été trouvée", vbExclamation
  Else
    MsgBox "WALA, y'en a pas d'autre(s) !"
  End If
End Sub
 

job75

XLDnaute Barbatruc
Une règle absolue, faire les choses le plus simplement possible :
VB:
Sub Rechercher()
Dim nom$, cherche$, w As Worksheet, c As Range, mes$
nom = InputBox("A rechercher :", "Recherche")
If nom = "" Then Exit Sub
cherche = "*" & LCase(nom) & "*"
For Each w In Worksheets
    For Each c In w.UsedRange
        If LCase(c) Like cherche Then mes = mes & vbLf & w.Name & "!" & c.Address(0, 0)
Next c, w
MsgBox "'" & nom & IIf(mes = "", "' pas trouvé...", "' trouvé en :" & mes), , "Résultat"
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir mapomme, Bonsoir Gérard,

Merci mapomme pour ces codes. je vais tester et je reviendrai :)

Quel est l'intérêt pour moi de commencer par la feuille active ?
Je vais tenter d'expliquer sans être trop long.

J'ai un classeur de travail qui contient plusieurs feuilles (une usine à gaz comme m'avait dit quelqu'un qui se reconnaitra LOL et qui avait bien raison mais j'y travaille avec votre aide).

Il y a donc :
  • une feuille ou nous mettons tous nos appels,
  • une autre où nous mettons les RdVs pris,
  • une autre ou je transferts (par code automatisé) les appels de la feuille appels qui ne sont plus a appeler (RdVs pris, Professionnels, biens vendus, refus définitifs, etc.).
Ces appels doivent être gardés car très souvent nous avons besoin de retrouver des appels 'archivés" pour savoir ce qui s'est passé et ne pas faire d'erreurs d'appels (doublons notamment),
Pour raisons qui seraient un peu longues à expliquer, il peut y d'avoir dans la feuille d'archivage ou dans la feuille RdVs pris plusieurs appels qui concernent un même sujet ou vendeur.

Quand nous travaillons, nous sommes toujours sur la feuille des appels en cours avec laquelle nous faisons nos rappels et nos nouveaux appels par ajouts de lignes.
Avant de faire un appel, nous contrôlons toujours si l'appel à faire n'est pas en doublon dans la feuille d'appels (feuille active), et ou en relation avec les appels "archivé " ou les RdVs ,pris,

C'est cette raison que j'ai besoin que chaque recherche commence par la feuille "appels" qui est toujours active car si nous y trouvons un appel précédent, nous n'avons pas à rechercher dans les autres feuilles.
LOL, je ne suis pas certain d'être clair :).

Merci Gérard pour le code, je vais tester :)

Amicalement,
arthour973,
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 143
Membres
103 129
dernier inscrit
Atruc81500