Créer un champ de recherche sous excel 2003

ouaich

XLDnaute Nouveau
Bonjour,

Je suis complètement perdu.
Je suis novice sous excel.
J'ai fait de multiples recherches sur internet mais à chaque fois ce que je fais ne marche pas, je viens donc vous demandez votre aide.

J'ai un fichier excel qui comporte 7 colonnes. (A à G)
Le nombre de ligne sera "infini".
Je souhaiterai en haut du tableau avoir un bouton "Rechercher" qui me permette de rechercher un mot, une partie de mot ou une date suite à ce que j'aurais tapé dans une cellule à proximité auparavant ou alors que ça m'ouvre une boite de dialogue où j'entrerai ce mot ou date.

Ensuite je voudrais que le résultat de la recherche mette la ligne en surbrillance ou alors ne laisse plus apparaitre que les lignes contenant le terme recherché.

Merci d'avance.
Je me tiens à votre disposition.
 

ouaich

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

Merci Modeste pour ton aide,

Je suis "content" j'ai avancé, j'ai trouvé un fichier excel que j'ai un peu modifié à ma sauce et à mon gout.

Cependant je butte à un endroit c'est que je voudrais faire la recherche sur deux feuilles l'une appelée "rapports 2012" elle marche actuellement et l'autre appelée "rapports 2013" mais celle-ci je n’arrive pas à la rajouter dans le code.

Voici l'extrait de la section module où je voudrais rajouter "Rapports 2013":
La recherche aurait lieu aussi sur A13:F100

Sub recherche(mot)
On Error GoTo fin
ligne = 11
Set ws = Worksheets("Rapports 2012")
With ws.Range("A13:F100")
Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Sheets("Moteur de recherche").Cells(ligne, 1).Select
Selection.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ws.Name & "'!" & c.Address, TextToDisplay:="" & c.Value
ligne = ligne + 2
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
trouve = True
End If
End With
If Not trouve Then MsgBox ("Pas de " & mot & " trouvé dans ce fichier")
fin:
End Sub
 

Pièces jointes

  • essai.xls
    191.5 KB · Affichages: 216
  • essai.xls
    191.5 KB · Affichages: 214
  • essai.xls
    191.5 KB · Affichages: 193

Modeste

XLDnaute Barbatruc
Re : Créer un champ de recherche sous excel 2003

Bonjour ouaich,

On est loin du filtre automatique (et même élaboré!) que j'évoquais hier soir :rolleyes:
En annexe, ton fichier dans lequel j'ai modifié d'un poil la création de tes liens hypertextes. Tu verras par ailleurs que j'ai "doublé" ton code, pour que la recherche se fasse dans l'autre feuille ...
 

Pièces jointes

  • ouaich.xls
    83 KB · Affichages: 210

ouaich

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

Merci beaucoup,

Je n'avais pas pensé à doubler le code effectivement.
J'ai vu les petites modifications que tu as apporté.

Comment fait-on pour choisir où apparaissent les résultats, car avant ça commençait à A11 et maintenant c'est A8.
Car je compte mettre un Logo en haut de page à l'avenir et je voudrais être capable de choisir à quelle hauteur commencent l'affichage des résultats. merci
 

Modeste

XLDnaute Barbatruc
Re : Créer un champ de recherche sous excel 2003

Re-bonjour,

Pour l'affichage en ligne 11 (et suivantes), une petite modif au niveau de la création du lien hypertexte:
VB:
With Sheets("Moteur de recherche")
    derligne = Application.Max(11, .[A65000].End(xlUp).Row + 1)
    .Hyperlinks.Add Anchor:=.Range("A" & derligne), Address:="", SubAddress:="'" & ws.Name _
        & "'!" & c.Address, TextToDisplay:="" & c.Value
End With

... à refaire dans la seconde partie du code, bien sûr :)
 

ouaich

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

Encore moi,

Je vais abuser de ta gentillesse.

En-dessous mon bouton "Recherche", serait-il possible de mettre un genre de "menu déroulant" permettant de faire une recherche sur l'ensemble des feuilles (pour le moment rapport 2012, rapport2013) et également de pouvoir choisir seulement 2012 ou seulement 2013.
Si ça pouvait être simple à modifier pour les années suivantes quand je vais rajouter des années !

Si cela est possible pourrais-tu me copier le code sur le forum comme tu as fait ce matin.

Merci d'avance.
 

Modeste

XLDnaute Barbatruc
Re : Créer un champ de recherche sous excel 2003

Bonjour,

C'est effectivement de l'abus ... Mais l'exercice m'intéressait, alors une proposition en vitesse en pièce jointe. Je n'ai pas mis le code ici, puisque j'ai ajouté un UserForm, pour afficher les différentes feuilles dans une liste + une option "Toutes"
A ce stade, le UserForm s'affiche automatiquement, après l'inputBox. Il me semble que je ferais tout dans le UserForm (mais il faut bien que je te laisse des choses à faire ;)) Plutôt que de "doubler" le code, comme proposé hier, celui-ci est placé à l'intérieur d'une nouvelle boucle. Celle-ci étant liée à ce qui a été sélectionné dans le UserForm.
Si je ne me suis pas trop planté, le code devrait fonctionner, même si tu ajoutes des feuilles supplémentaires, par la suite (j'insiste sur le conditionnel!)

Pas testé de manière approfondie (juste une feuille sélectionnées ou "Toutes"). Il y aurait certainement l'une ou l'autre "sécurité" à ajouter, pour bien faire ...
 

Pièces jointes

  • ouaich (V2).xls
    90.5 KB · Affichages: 218

ouaich

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

Merci ça marche nickel.

Je viens de l'adapter à mon fichier qui a évolué entre temps.
ça marche bien même quand on ajoute un rapport 2014 par exemple.
Sais-tu comment je pourrais faire, avant l'onglet "moteur de recherche" j'ai ajouté un onglet "données" qui contient des listes déroulantes.
J'ai beau masquer cette onglet il apparait dans la liste de choix pour la recherche ?
 

Modeste

XLDnaute Barbatruc
Re : Créer un champ de recherche sous excel 2003

Re-bonjour,

Allons, un petit effort, tout de même :rolleyes:

Le fait de masquer l'onglet ne servira effectivement à rien, dans ton cas. Par contre en parcourant le code, tu devrais quand même arriver à trouver ce qui permet de faire la liste des feuilles sauf la feuille "Moteur de recherche" (attention le même bloc d'instructions est utilisé à deux reprises: une fois pour "garnir" la liste déroulante dans le UserForm et une autre fois, dans la procédure "recherche")
 

ouaich

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

Oui ça j'ai c'est le signe < > qui fait que moteur de recherche n'est pas pris dans la recherche, je pense qu'il faut faut rajouter un "et".
Peut être un point virgule je vais essayer, je viens de rentrer du travail.
 

ouaich

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

J'ai rentré cette ligne mais "données apparait toujours dans la liste donc ce n'est pas bon:
If f.Name <> "Moteur de recherche" And f.Name <> "Données" Then

J'ai bien compris qu'il faudrait aussi que je mette cette ligne dans userform pour l'enlever de la recherche.

J'étais quasiment sûr que c'était "And" mais apparemment c'est pas ça
 

Modeste

XLDnaute Barbatruc
Re : Créer un champ de recherche sous excel 2003

Bonsoir,

J'étais quasiment sûr que c'était "And" mais apparemment c'est pas ça
Ah mais si! C'est même précisément ça!

Une fois dans la procédure "UserForm_Initialize()" (pour ne pas que la feuille "Données" apparaisse dans la liste déroulante) et une seconde fois dans la procédure "recherche(mot)" (pour que la recherche ne se fasse pas dans cette même feuille)
 

noucho

XLDnaute Nouveau
Re : Créer un champ de recherche sous excel 2003

Bonjour,

Je prends la discussion en route ...
Tout d'abord félicitations Modeste pour ton travail.
Une petite question : lorsqu'on utilise l'onglet rechercher et qu'on annule la recherche, la recherche se fait sur les cellules vides. Quelle ligne faut il ajouter dans la macro pour que le bouton annuler stoppe la recherche ?

Merci d'avance

Noucho
 

Discussions similaires