Amélioration de macro "Recherche"

Kim tucker

XLDnaute Nouveau
Bonjour a vous.

Grâce a ce site, j'ai pu trouver la solution à mon problème, reste juste à adapter cette solution a mon utilisation.

Donc, une âme charitable a crée cette macro qui fait une recherche dans une feuille suivant un critère "X", et donne les résultats de cette recherche dans une nouvelle feuille excel.
Ce dont j'aurais besoin, c'est que cette recherche ne s'effectue plus seulement sur une feuille, mais sur un classeur entier. Car j'ai une cinquantaine de feuilles, correspondant aux semaines dans l'année.

Merci d'avance.
Voici la macro:

Option Explicit
Sub RechercheMots()
Dim i As Byte, j As Long, Lig As Integer
Dim Mot As String, firstAddress As String
Dim Plage As Range, c As Range

Application.ScreenUpdating = False
'Efface le contenu des cellules si A5 n'est pas vide
If Sheets("RECAPITULATIF").Range("A5") <> "" Then
'efface les bordures du tableau
Range(Sheets("RECAPITULATIF").Range("A5"), Sheets("RECAPITULATIF").Range("A65536").End(xlToRight)).ClearFormats
'efface le contenu des cellules
Range(Sheets("RECAPITULATIF").Range("A5"), Sheets("RECAPITULATIF").Range("A65536").End(xlToRight)).ClearContents
End If

'selectionne la ligne du début du récapitulatif (à partir quelle ligne on va pouvoir insérer les données)
Lig = Sheets("RECAPITULATIF").Range("A65536").End(xlUp).Row + 1

'Selectionne la zone de recherche du mot
Set Plage = Range(Sheets("SUIVI").Range("A5"), Sheets("SUIVI").Range("A65536").End(xlUp))

Mot = InputBox("Mot à rechercher ?")

If Mot = "" Then Exit Sub

For Each c In Plage
If InStr(1, c, Mot) <> 0 Then
c.EntireRow.Range("A1:L1").Copy Sheets("recapitulatif").Cells(Lig, 1)
Lig = Lig + 1
End If
Next c

Sheets("RECAPITULATIF").Activate
Range("A4").Activate
Application.ScreenUpdating = True

End Sub



le fichier original est ici, si ca peut vous aider. C'est le fichier joint d'Hervé "SUIVINC":

https://www.excel-downloads.com/threads/fonction-find.37971/
 

Kim tucker

XLDnaute Nouveau
Re : Amélioration de macro "Recherche"

Wahou.
C'est vraiment super que tu ai fait ca aussi rapidement.
J'ai une dernière petite question:
Est-ce qu'il te serait possible d'adapter ton fichier modifié sur mon fichier de travail. Ca serait génial. J'ai beau essayer de comprendre les codages, j'ai du mal a savoir quoi modifier...
En fait je voudrais que la feuille de recherche soit mise avant les autres (donc juste a coté de la semaine 37). Mon tableau va de la colonne "A" à la colonne "M", et j'ai besoin de toutes ces colonnes (meme celles cachées) dans le tableau de recherche.

Et aussi pourquoi dans les intitulés de colonnes du fichier que tu as modifié il y a cette petite fleche vers le bas qui demande si on veut afficher les "10 premiers", ou "tous". Je n'en ai pas vraiment l'utilité.

P.S: je n'ai pu mettre qu'une seule feuille dans mon fichier pour vous l'envoyer compte tenu de son poids.

Merci.
Kim T.
 

Pièces jointes

  • planning.zip
    43.9 KB · Affichages: 26
  • planning.zip
    43.9 KB · Affichages: 26
  • planning.zip
    43.9 KB · Affichages: 27

Kim tucker

XLDnaute Nouveau
Re : Amélioration de macro "Recherche"

OUPS !!!!
TRES IMPORTANT:

j'ai oublié de préciser quel critère était à rechercher.
Je ne sais pas si le système de recherche de ton fichier vise une colonne en particulier, ou toutes les colonnes.
Après vérification, il me semble qu'il recherche un terme sur une colonne bien précise. Donc, sur mon fichier de travail, la recherche s'effectue sur la colonne B (c'est à dire par exemple "51JE35" ou "31VE36").

Encore merci.
K.T.
 

BrunoM45

XLDnaute Barbatruc
Re : Amélioration de macro "Recherche"

Salut,

Tu trouveras ci-joint ton fichier avec le code adapté ;)
Recherche simple dans la colonne B

En fait je voudrais que la feuille de recherche soit mise avant les autres (donc juste a coté de la semaine 37). Mon tableau va de la colonne "A" à la colonne "M", et j'ai besoin de toutes ces colonnes (meme celles cachées) dans le tableau de recherche.
Pour cela, il te suffit d'avoir mon fichier ouvert + ton fichier original
Dans mon fichier, tu fais un clique droit sur l'onglet RECAPITULATIF (nom de la feuille)
Tu choisis l'option : Déplacer ou copier
Dans la fenêtre tu sélectionnes ton classeur et la première feuille de celui-ci
Tu coches l'option "Copier"
Tu cliques sur OK
La feuille et son code sera copié dans ton classeur

Et aussi pourquoi dans les intitulés de colonnes du fichier que tu as modifié il y a cette petite fleche vers le bas qui demande si on veut afficher les "10 premiers", ou "tous". Je n'en ai pas vraiment l'utilité.
Je vois que tu ne connais presque pas Excel :p:confused:
Lorsque tu as ce genre de petite flêches vers le bas, c'est qu'un filtre automatique est activé dans ta feuille
Menu -> Données -> Filtrer -> Filtre automatique
Ce filtre te permet d'afficher les lignes correspondant à ton/tes critères 3CP>Tu coches l'option "Copier"
Tu cliques sur OK
La feuille et son code sera copié dans ton classeur


Et aussi pourquoi dans les intitulés de colonnes du fichier que tu as modifié il y a cette petite flec
 

Pièces jointes

  • KimTucker_PLANNING MODIFIE.zip
    56.6 KB · Affichages: 43

tactic6

XLDnaute Impliqué
Re : Amélioration de macro "Recherche"

Bonjour le forum

Serait il possible de modifier ce code afin que la recherche se fasse dans toute la feuille plutôt que sur une colonne ?

Si oui c'est exactement ce qu'il me faudrait
Bon dimanche à tous
 

klin89

XLDnaute Impliqué
Re : Amélioration de macro "Recherche"

Bonjour tactic6,

En reprenant le 1er fichier de Bruno, essaies ceci :

Code:
.../...
For Each Sht In ThisWorkbook.Sheets
    If Sht.Name = "RECAPITULATIF" Then GoTo Suite
    With Sht
      'Selectionne la zone de recherche du mot
      Set Plage = .Range(.Range("A5"), .[COLOR="Red"][B]Range("L65536").[/B][/COLOR]End(xlUp))
      For Each c In Plage
.../...

Un petit souci : sur une même ligne, si le mot recherché se trouve dans 3 cellules différentes, il te recopie la ligne 3 fois !

Klin89
 

Statistiques des forums

Discussions
303 819
Messages
2 014 412
Membres
219 920
dernier inscrit
Stephane2332