Microsoft 365 Barre de recherche via des mots clés

KadNes

XLDnaute Nouveau
Bonjour à vous,

Je me permets de vous solliciter car je galère sur un sujet, je vous explique :

Dans mon tableau ci-joint, j'aimerai effectuer une recherche par mot clé dans une barre de recherche (textbox1 en cellule B6, onglet Monsieur X)

Jusque la tout va bien, mais mon code ne fonctionne pas.

Vous trouverez en pièce jointe un modèle du tableau.

J’espère que mes explication sont clairs.

Merci à vous n'hésitez pas si besoin d'infos complémentaires
 

Pièces jointes

  • Relevé Temps BE 2022.TestA.xlsm
    637.2 KB · Affichages: 10
Solution
Bonjour Kadnes, et bienvenu sur XLD,
Une proposition en PJ sans Textbox mais avec une macro événementielle dans la feuille :
Code:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [B6]) Is Nothing Then
        On Error GoTo Fin
        Dim L%, DL%, T
        Application.ScreenUpdating = False
        DL = Range("A65500").End(xlUp).Row
        T = Range("A7:A" & DL)
        Range("A7:A" & DL).EntireRow.Hidden = True              ' Masque toutes les lignes
        If Target <> "" Then
            Application.EnableEvents = False
            For L = 1 To UBound(T)
                If LCase(T(L, 1)) Like LCase("*" & Target & "*") Then Cells(L + 6, "A").EntireRow.Hidden = False...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Kadnes, et bienvenu sur XLD,
Une proposition en PJ sans Textbox mais avec une macro événementielle dans la feuille :
Code:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [B6]) Is Nothing Then
        On Error GoTo Fin
        Dim L%, DL%, T
        Application.ScreenUpdating = False
        DL = Range("A65500").End(xlUp).Row
        T = Range("A7:A" & DL)
        Range("A7:A" & DL).EntireRow.Hidden = True              ' Masque toutes les lignes
        If Target <> "" Then
            Application.EnableEvents = False
            For L = 1 To UBound(T)
                If LCase(T(L, 1)) Like LCase("*" & Target & "*") Then Cells(L + 6, "A").EntireRow.Hidden = False
            Next
        Else
            Range("A7:A" & DL + 100).EntireRow.Hidden = False   ' Démasque toutes les lignes
        End If
    End If
Fin:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Pour avoir toutes les lignes, il suffit d'effacer la valeur en B6. La casse n'est pas utilisée, la recherche peut se faire en majuscules ou minuscules.
 

Pièces jointes

  • Relevé Temps BE 2022.TestA.xlsm
    652 KB · Affichages: 10

KadNes

XLDnaute Nouveau
Bonsoir Sylvanu

Merci pour votre réponse, cela fonctionne à la perfection.

Si je peux me permettre de vous demandez une dernière chose, je viens de me rendre compte d'un soucis, je vous expose le problème :

dans mon onglet Projets j'ai un bouton qui me permet d'affecter de nouvelles tâches.
On y retrouves plusieurs colonnes avec des filtres, si je venais à créer une nouvelle tâches alors qu'un des filtres serait activé, Ma formule viendrait rajouter la nouvelle tâche à la suite et du coup m'écraser la tâche suivante qui serait masquée par le filtre.

Pour exemple :

Au total j'ai 20 projets numéroté de 001 à 020

J'active un filtre qui m'affiche plus que les projets de 001 à 010

Si je créer un nouveau projet, il aura le numéro 021 mais sera placé juste après le projet 010 et m'aura écrasé le projet 011, une fois que j'aurai enlevé les filtres.

Est ce qui est possible de remédier à ça, via un code, j'aimerai éviter le simple message d'erreur si possible.

J'espère avoir été clair. N'hésitez surtout pas si besoin d'infos complémentaires ou autres.

Merci beaucoup.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Le plus simple me semble t-il est de tout démasquer avant d'archiver avec :
VB:
Private Sub BtnArchiver_Click()
    Range("A2:A" & Range("A65500").End(xlUp).Row).EntireRow.Hidden = False
    ....
Par contre on perd le filtre, mais c'est la méthode la plus sure.
A voir si ça irait avec votre utilisation.
Sinon il faudrait mémoriser le filtre en place et le restituer à la fin, mais ça ressemble à une usine à gaz, voir ce lien :
 

KadNes

XLDnaute Nouveau
Merci pour votre retour,

Je viens d'essayer mais cela ne fonctionne pas, à moins que je m'y prends mal, ce qui me surprendrais pas...

Voici l'endroit ou j'ai mis le code, mais sans résultat, cela continue à m'écraser la ligne suivante où se trouve un autre le projet.
1642113869130.png


1642113869130.png
 

KadNes

XLDnaute Nouveau
Salut Sylvanu,

Ça fonction très bien, je ne sais pas comment je me suis démerdé pour ne pas y arriver la première fois, comme quoi, travailler à tête reposée, ce n'est pas une légende.

Encore merci pour ton aide.

Au plaisir de pouvoir un jour t'apporter mon aide.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345