Macro de recherche sur une feuille

Tom32

XLDnaute Occasionnel
Bonjour,

je voudrais créer une macro recherche, mais ça me semble compliqué à réaliser :
Je voudrais que quand on clique sur un bouton : une fenêtre recherche s'ouvre avec dedans une case pour inscrire le mot recherché, et 2 cases pour choisir le type de recherche (soit une recherche de référence dans les colonnes A à E, soit une recherche de texte dans la colonne G).
Quand on clique sur exécuter la recherche, je voudrais que seules les lignes contenant le mot recherché ou seules les lignes correspondants à la référence inscrite s'affiche.

Je ne sais pas si c'est possible de faire ce genre de chose, si oui, pouvez vous m'aider ?
Si non merci de me le dire, je continuerai à utiliser les filtres automatiques.

Merci
 

Tom32

XLDnaute Occasionnel
Re : Macro de recherche sur une feuille

Ouah, c'est génial


C'est exactement ce dont j'ai besoin.
Seulement, dans la colone G, il y a du texte (plusieurs mots), il est donc peu probable que l'on tape les mots exacts dans la case prévu à cet effet de ton Userform.

Est-il possible de faire une recherche sur le contenu des cellules, c'est à dire que est il possible que si j'entre le mot "risque", la recherche puisse me sortir une ligne où il est écrit par exemple : "liste des risques" ??

De meme pour les colonnes de références.

En tout cas je te remercie de t'être penché sur mon problème
 

wilfried_42

XLDnaute Barbatruc
Re : Macro de recherche sur une feuille

bonjour à tous

j'ai modifié le code de romain, pour faire une recherche dans la ligne du text saisi dans textbox, modifier la ligne en rouge

Code:
    ElseIf Me.col_G = True Then
        For i = 2 To Range("A65536").End(xlUp).Row
[COLOR="Red"]            If InStr(Cells(i, 7).Value, Me.TextBox1.Value) = 0 Then[/COLOR]
                Rows(i).EntireRow.Hidden = True
            End If
        Next i
    End If

si tu veux ne pas faire de diference entre majuscule et minuscule :

Code:
    ElseIf Me.col_G = True Then
        For i = 2 To Range("A65536").End(xlUp).Row
[COLOR="Red"]            If InStr(ucase(Cells(i, 7).Value), ucase(Me.TextBox1.Value)) = 0 Then[/COLOR]
                Rows(i).EntireRow.Hidden = True
            End If
        Next i
    End If
 

porcinet82

XLDnaute Barbatruc
Re : Macro de recherche sur une feuille

Salut,

Merci d'etre passé aider notre ami Wilfried.
Juste une petite remarque cependant pour parfaire un peu les connaissances de Tom en vba. Il me semble me rappeler avoir mis Option Compare Text en haut du code, ce qui permet de ne pas tenir compte de la casse (majuscule/minuscule) lors de l'execution du code. Le second code avec Ucase ou Lcase n'est donc pas necessaire...

Bon réveillon a tous,

@+
 

wilfried_42

XLDnaute Barbatruc
Re : Macro de recherche sur une feuille

Bonjour porcinet :)

Merci pour cette precision, je n'avais pas vu la ligne, trop concenté sur la boucle ! de plus je n'utilise jamais cette option, je prefere largement le gerer par moi meme quand j'en ai besoin...

M'enfin c'est un choix personnel

Bon reveillon à tous
 

Tom32

XLDnaute Occasionnel
Re : Macro de recherche sur une feuille

En ce qui concerne la casse, ça marche très bien pour la recherche dans la colonne G. mais ça ne fonctionne pas pour la recherche dans les colonnes A à E. Alors j'ai essayé d'entrer le code Ucase, mais ça a tout fait foiré lol. Voila ce que j'ai entré :
Code:
If Ucase(Cells(i, j).Value) = Ucase(Me.TextBox1.Value) Then

Quel code dois-je entrer à la place ?
 

wilfried_42

XLDnaute Barbatruc
Re : Macro de recherche sur une feuille

re:


tu n'as rien à changer dans la premiere partie, dans la modif que je t'ai données, tu avais 2 options pour la meme modif

Le deusieme option est inutile dans le fait ou romain a precisé avoir mis : Option Compare Text

donc tu n'as que la ligne en rouge à modifier

Code:
    ElseIf Me.col_G = True Then
        For i = 2 To Range("A65536").End(xlUp).Row
            [COLOR="Red"]If InStr(Cells(i, 7).Value, Me.TextBox1.Value) = 0 Then[/COLOR]
                Rows(i).EntireRow.Hidden = True
            End If
        Next i
    End If
 

Tom32

XLDnaute Occasionnel
Re : Macro de recherche sur une feuille

J'ai effectivement changé la ligne en rouge par ce que tu m'avais indiqué.
De cette manière, la casse n'est plus importante quand je choisis d'effectuer ma recherche dans la colonne G
Quand je fais ma recherche dans les colonnes A à E, la casse doit être respéectée, quand je mets des majuscules, il ne me trouve que les majuscules.

Or la première partie à l'air plutôt dédiée à la recherche dans les colonnes A à E, donc j'ai supposé qu'il fallait écrire Ucase dans la première partie, mais apparement je me suis trompé.

Par ailleurs, quand j'utilise la première option que tu m'as proposé, la casse doit être respectée alors que quand je mets la 2ème, elle ne doit pas forcément être respectée.

Je pense que porcinet n'a pas du spécifier option compare text, mais comme je ne sais pas où cette option sera inscrite, je ne peux pas te l'affirmer
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : Macro de recherche sur une feuille

Salut,

Bon, l'option Option Compare Text si elle y ai, doit se trouver dans la première ligne du module, c'est a dire juste au dessus la macro.
Par contre, si une partie de la macro doit tenir compte de la casse et une autre partie ne doit pas en tenir compte, il faut retirer cette option qui annule la casse dans tous le module.
Donc si la casse est importante, tu mets un truc du genre : If Cells(i, j).Value = Me.TextBox1.Value Then

Si tu ne souhaites pas en tenir compte, tu mets : If Ucase(Cells(i, j).Value) = Ucase(Me.TextBox1.Value) Then

@+
 

Tom32

XLDnaute Occasionnel
Re : Macro de recherche sur une feuille

C'est bon,

j'ai rajouté la ligne contenant les Ucase et ça marche impeccable !

Je ne pense pas que j'aie encore des modifications à faire à cette macro.

Je vous remercie tous les 2 de m'avoir aidé, c'est réélement sympa de votre part.
J'ai désormais un fichier excel performant pour ce que j'ai à faire.

Encore merci et à bientôt.
 

Discussions similaires

Statistiques des forums

Discussions
312 438
Messages
2 088 425
Membres
103 849
dernier inscrit
giem