Microsoft 365 Recherche dans tout le classeur de youky(BJ)

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

Il y a déjà un bon moment, youky(BJ) m'avait transmis un code de recherche dans tout le classeur.
Cette recherche fonctionne très bien et je l'en remercie encore :)

Toutefois, j'ai 2 choses que j'aimerais résoudre
1625212898547.png

J'aimerais que seul l'object de la recherche soit écrit
Par exemple, ci-dessus : UNIQUEMENT LE MOT "excel"

VB:
If nom = "" Then
Application.EnableEvents = False
MsgBox ("Faudrait p'être saisir l'objet de la recherche !")
[a3].Select
Application.EnableEvents = True
Exit Sub
End If
1625212933118.png

J'aimerais, si clic sur "Annuler" :
QUE : MsgBox ("Faudrait p'être saisir l'objet de la recherche !") ne s'affiche pas et que la sortie soit directe

Voici le code complet :
VB:
Sub Recherche()
nom = InputBox("Saisir l'objet de la Recherche :", "Recherche")

If nom = "" Then
Application.EnableEvents = False
MsgBox ("Faudrait p'être saisir l'objet de la recherche !")
[a3].Select
Application.EnableEvents = True
Exit Sub
End If

Application.EnableEvents = False
  q = ActiveSheet.Index
  For q = q To ActiveSheet.Index + Sheets.Count - 1
    K = (q - 1) Mod (Sheets.Count) + 1
With Sheets(K).UsedRange
Application.ScreenUpdating = False

Set C = .Find(nom, LookAt:=xlPart)   'LookAt:=xlpart dans cellule - LookAt:=xlWhole) 'cellule entière
'[a1].Activate
If Not C Is Nothing Then
firstAddress = C.Address
Do
On Error Resume Next

Sheets(K).Select
C.Activate
    Application.ScreenUpdating = True
    ActiveWindow.ScrollRow = Selection.Row
    'Cells(ActiveCell.Row, 1).Select

Rep = MsgBox(C & " : OK dans " & ActiveSheet.Name & Chr(10) & "" & Chr(10) & "Cellule - ligne :  " & C.Address & Chr(10) & Chr(10) & "" & "Continuer la recherche ?", 4 + 32, "Résultat")

If Rep = vbNo Then
Application.EnableEvents = True
Exit Sub
End If
'Application.ScreenUpdating = False
Application.ScreenUpdating = True
Set C = .FindNext(C)

Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
  Next q
MsgBox "Ben NON : y'a pas ou y'a plus !"
'Application.ScreenUpdating = False
End Sub
Pour tests, je joins le fichier.
Je vous remercie vivement,
Amicalement,
lionel,
 

Pièces jointes

  • test inputbox.xls
    50.5 KB · Affichages: 8

Dudu2

XLDnaute Barbatruc
Bonjour ,

Déjà ce serait plus qu'utile que le code soit indenté correctement pour pouvoir le lire et le comprendre.
En prime, une Option Explicit et la déclaration des variables permet 1/ d'éviter des erreurs et 2/ de rester en contrôle en facilitant la compréhension.
VB:
Option Explicit

Sub Recherche()
    Dim Nom As String
    Dim q As Integer
    Dim k As Integer
    Dim C As Range
    Dim Rep As Variant
 
    Nom = InputBox("Saisir l'objet de la Recherche :", "Recherche")
 
    If Nom = "" Then
        Application.EnableEvents = False
        MsgBox ("Faudrait p'être saisir l'objet de la recherche !")
        [A3].Select
        Application.EnableEvents = True
        Exit Sub
    End If
 
    Application.EnableEvents = False
    q = ActiveSheet.Index
 
    For q = q To ActiveSheet.Index + Sheets.Count - 1
        k = (q - 1) Mod (Sheets.Count) + 1
        With Sheets(k).UsedRange
            Application.ScreenUpdating = False
 
            Set C = .Find(Nom, LookAt:=xlPart)   'LookAt:=xlpart dans cellule - LookAt:=xlWhole) 'cellule entière
            '[a1].Activate
            If Not C Is Nothing Then
                firstAddress = C.Address
                Do
                    On Error Resume Next
 
                    Sheets(k).Select
                    C.Activate
                    Application.ScreenUpdating = True
                    ActiveWindow.ScrollRow = Selection.Row
                    'Cells(ActiveCell.Row, 1).Select
 
                    Rep = MsgBox(C & " : OK dans " & ActiveSheet.Name & Chr(10) & "" & Chr(10) & "Cellule - ligne :  " & C.Address & Chr(10) & Chr(10) & "" & "Continuer la recherche ?", 4 + 32, "Résultat")
 
                    If Rep = vbNo Then
                        Application.EnableEvents = True
                        Exit Sub
                    End If
                 
                    'Application.ScreenUpdating = False
                    Application.ScreenUpdating = True
                    Set C = .FindNext(C)
                 
                Loop While Not C Is Nothing And C.Address <> firstAddress
            End If
        End With
    Next q
 
    MsgBox "Ben NON : y'a pas ou y'a plus !"
    'Application.ScreenUpdating = False
End Sub

InputBox ne permet pas de différencier la touche Annuler d'une saisie vide.
Il faut utiliser Application.InputBox.
Ex:
VB:
    Rep = Application.InputBox("Saisir l'objet de la Recherche :", "Recherche")
    If VarType(Rep) = vbBoolean Then Exit Sub    'Touche Annuler
    Nom = CStr(Rep)
 

Usine à gaz

XLDnaute Barbatruc
Bonjour Dudu2,
Merci pour ta réponse et ton code qui fonctionne après "légère" modif :

VB:
Sub Recherche()

    Nom = Application.InputBox("Saisir l'objet de la Recherche :", "Recherche")
    If VarType(Nom) = vbBoolean Then 'Touche Annuler
    Nom = CStr(Nom)
    Exit Sub
    End If

If Nom = "" Then
Application.EnableEvents = False
MsgBox ("Faudrait p'être saisir l'objet de la recherche !")
[a3].Select
Application.EnableEvents = True
Exit Sub
End If
etc.....

Pour info : le Option Explicit fait beuguer le code.

Désolé pour ne pas avoir indenté, je n'ai pas pris cette habitude car je ne sais encore bien faire :)

Un grand merci à toi :)
lionel,
 

Usine à gaz

XLDnaute Barbatruc
Bonjour,

Pour le bouton, tu as juste a supprimé le code ;
VB:
If nom = "" Then
Application.EnableEvents = False
MsgBox ("Faudrait p'être saisir l'objet de la recherche !")
[a3].Select
Application.EnableEvents = True
Exit Sub
End If

et pour la recherche c'est toi qui rajoute le lien, la prochaine fois écrit juste excel
Bonjour shinozak,

Merci pour m'avoir répondu.
Le bur est de garder le code et de ne pas le supprimer !
"et pour la recherche c'est toi qui rajoute le lien, la prochaine fois écrit juste excel"
Et, à ton avis, j'avais écrit "juste" koi ? LOL ;)

Merci quand même pour ton intervention,
lionel :)
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re-bonjour Bonjour Dudu2, shinozak, le Forum,

Grâce à Dudu2 la question 2 est résolue, Encore merci à toi :)

Je n'arrive pas à trouver comment résoudre la partie 1 :
Toutefois, J'aimerais que seul l'object de la recherche QUI EST ECRIT
Par exemple, ci-dessus : UNIQUEMENT LE MOT ECRIT "excel"
1625225203975.png


Si quelqu'un peut encore m'aider, ça m'arrangerait bien :)
Je joins le nouveau fichier test,
Un grand merci à tous et à toutes,
Amicalement,
lionel,
 

Pièces jointes

  • test inputbox.xlsm
    31.8 KB · Affichages: 3

Discussions similaires

Réponses
8
Affichages
728

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki