Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

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 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"


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

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite un bon WE

Voici le fichier définitif en pièce jointe,
Un grand merci à nos ténors aidants.
Amicalement,
lionel
 

Pièces jointes

  • recherche_inputbox.xlsm
    29.5 KB · Affichages: 4

Discussions similaires

Réponses
8
Affichages
728
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…