Macro qui sélectionne toutes les cellules d"une recherche

judoka64

Nouveau membre
Bonjour à tous ,

étant novice en la matière et suivant vos forums avec attention , je rencontre cependant un problème concernant la programmation d'une macro .

Etant en stage , je dois réaliser une base de données documentaire de l'entreprise et vu le nombre important de fichiers , je dois réaliser des recherches qui facilitent la recherche .
Après avoir classser mes documents par catégories , j'ai réalisé une macro permettant de faire une recherche en fonction de la catégorie du document ( je peux le cas échéant aider certains qui ont des problèmes ) ..
JE dois a présent réaliser une macro qui lance une recherche par mot clé , c'est à dire que lorsque je tape un mot appartenant au titre du document ( par exemple si je tape Fiche ) tous les documents qui contiennent le mot "FIche" dans leur titre s'affiche .
J'ai essayé l'enregistrement macro mais je rencontre un problème : ma macro marche seulement si il y a un et un seul document comportant le mot fiche , si il y en a plusieurs ils ne s'affichent pas tous .
JE voudrais donc savoir comment faire pour sélectionner d'un seul coup toutes les cellules qui contiennent le mot recherché ?


Merci par avance
 

zeb

Modérateur
Salut,

Eh, il y a peut-être un bug dans ta macro. Publies-en donc les morceaux les plus pertinents pour qu'on puisse t'aider.

Si tu suis avec tant d'attention ce forum, je n'ai pas besoin de te rappeler qu'un minimum de mise en forme est de rigueur quand on présente son code ici ;)
 

judoka64

Nouveau membre
Code:
Application.ScreenUpdating = False
   
     Sheets("Princ").Select
    Range("B15:C69").Select
    Selection.ClearContents
    Sheets("Liste").Select
    Range("A4:B155").Select
    Selection.Find(What:=Range("G3"), After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
       
    Rows(ActiveCell.Row).Select
    Selection.Copy
    Sheets("Princ").Select
    Range("A15").Select
    ActiveSheet.Paste
    Sheets("Liste").Select
    ActiveSheet.Range("$A$3:$C155").AutoFilter Field:=2
    Sheets("Princ").Select
    Range("A1").Select
Application.ScreenUpdating = True
[code]


Voici ma macro !!!
EN espérant avoir respecté les consignes :)
 

judoka64

Nouveau membre
[cpp]Application.ScreenUpdating = False

Sheets("Princ").Select
Range("B15:C69").Select
Selection.ClearContents
Sheets("Liste").Select
Range("A4:B155").Select
Selection.Find(What:=Range("G3"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Rows(ActiveCell.Row).Select
Selection.Copy
Sheets("Princ").Select
Range("A15").Select
ActiveSheet.Paste
Sheets("Liste").Select
ActiveSheet.Range("$A$3:$C155").AutoFilter Field:=2
Sheets("Princ").Select
Range("A1").Select
Application.ScreenUpdating = True[/cpp]
 

zeb

Modérateur
M'enfin pourquoi toutes ces sélections ???????
Ce code est tellement inefficace que tu en es obligé de rajouter des ScreenUpdating !

Code:
' // Codes plein d'inutilités
Sheets("Princ" ).Select
Range("B15:C69" ).Select
Selection.ClearContents

' // En tellement plus simple
Sheets("Princ" ).Range("B15:C69" ).ClearContents

Code:
' // Codes plein d'inutilités
Rows(ActiveCell.Row).Select
Selection.Copy

' // En tellement plus simple
ActiveCell.EntireRow.Copy
Sauf que je ne vois pas de quel droit ton programme se permet d'utiliser le presse-papier. Imagine si tous les programmes, pour leur besoin interne en faisaient autant ?

Donc on visite la page de manuel de Copy() et on se ravise.

Allez, propos-moi quelque chose de plus propre. En attendant, je te prépare une soluce ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 067
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut