trouvé un mot dans un tableau (Resolu)

  • Initiateur de la discussion Initiateur de la discussion achraf26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

achraf26

XLDnaute Occasionnel
je voudrai trier automatiquement la tableau dans la colonne Dossier et afficher juste la ligne dont le mot affiché dans la cellule D7 avec un macro
ça sera beaucoup mieux si ça sera fesable mais sans bouton rechercher
je vous remercie beaucoup pour votre aide
 

Pièces jointes

Bonjour achraf26,

un essai par macro évènementielle, à copier dans la feuille de code de la feuille Docs:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Mot As Range
If Target.Address = "$D$7" Then
    Set Plage = Range("D10:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Plage.EntireRow.Hidden = True
    Set Mot = Plage.Find(Target)
    If Not Mot Is Nothing Then Rows(Mot.Row).Hidden = False
End If
End Sub

A+
 
Bonjour, achraf26, Paf 🙂, le Forum,

Un autre essai avec le code suivant, logé dans le module de l'onglet "Docs" :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal c As Range)
    If c.Address = "$D$7" Then ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3, Criteria1:=c
End Sub
N. B. : les macros doivent être acceptées.

A bientôt 🙂
 
Re,

...afficher juste la ligne dont le mot affiché dans la cellule D7 avec un macro

Pour n'afficher que la ligne correspondant à D7, il faut bien masquer les autres ?
Si vous préférez ne masquer aucune ligne si aucune ligne ne correspond à D7:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Mot As Range
If Target.Address = "$D$7" Then
    Set Plage = Range("D10:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Set Mot = Plage.Find(Target)
    If Not Mot Is Nothing Then
        Plage.EntireRow.Hidden = True
        Rows(Mot.Row).Hidden = False
    Else
        Plage.EntireRow.Hidden = False
    End If
End If
End Sub

A+

Edit: Bonjour DoubleZero !
 
Re,



Pour n'afficher que la ligne correspondant à D7, il faut bien masquer les autres ?
Si vous préférez ne masquer aucune ligne si aucune ligne ne correspond à D7:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Mot As Range
If Target.Address = "$D$7" Then
    Set Plage = Range("D10:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Set Mot = Plage.Find(Target)
    If Not Mot Is Nothing Then
        Plage.EntireRow.Hidden = True
        Rows(Mot.Row).Hidden = False
    Else
        Plage.EntireRow.Hidden = False
    End If
End If
End Sub

A+

Edit: Bonjour DoubleZero !


Fonctionne super bien, ce que je voulais
Merci Beaucoup Chef 🙂
 
Bonjour, achraf26, Paf 🙂, le Forum,

Un autre essai avec le code suivant, logé dans le module de l'onglet "Docs" :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal c As Range)
    If c.Address = "$D$7" Then ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3, Criteria1:=c
End Sub
N. B. : les macros doivent être acceptées.

A bientôt 🙂

Bonjour Double Zero,
Merci pour ton Aide, ça fonctionne aussi, le souci que j'ai eu c'est qu'une fois on efface la cellule D7 , le tableau remets pas les lignes, Paf m'a proposé la bonne solution.
Merci et Bravo à vous deux.
 
Re,



Pour n'afficher que la ligne correspondant à D7, il faut bien masquer les autres ?
Si vous préférez ne masquer aucune ligne si aucune ligne ne correspond à D7:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Mot As Range
If Target.Address = "$D$7" Then
    Set Plage = Range("D10:D" & Range("D" & Rows.Count).End(xlUp).Row)
    Set Mot = Plage.Find(Target)
    If Not Mot Is Nothing Then
        Plage.EntireRow.Hidden = True
        Rows(Mot.Row).Hidden = False
    Else
        Plage.EntireRow.Hidden = False
    End If
End If
End Sub

A+

Edit: Bonjour DoubleZero !

Rebonsoir Paf,

la solution fonctionne bien, j'ai eu un souci, si il y'a deux ou plus la meme valeur dans la colonne D10😀, il y'a que la 1er ligne dont la valeur qu'on cherche qui s'affiche.
Merci
 
Re-bonjour,

Un autre essai, avec :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal c As Range)
    If c.Address = "$D$7" Then
        Select Case c
        Case "": ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3
        Case Else: ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3, Criteria1:=c
        End Select
        [d7].Select
    End If
End Sub
A bientôt 🙂
 
rebonsoir,
j'ai reussi à faire le filtrage à partir de la saisie dans la cellule Feuille Docs "D7", là c'était bien
le code est dans la feuille Docs

à partir de la feuille Infos je voudrais quand une celulle est active dans la colonne (B10:B), Copie la valeur de cette cellule active dans la feuille Docs (D7)

pour qu'au moins je fais pas la saisie manuel à chaque fois, malheureusement je reçois message "Erreur exécution 9" l'indice n'appartient pas à la sélection
Merci de me trouver une solution
NB : le code de filtrage dans la feuille docs fonctionne super bien

le code copie valeur active est :

Option Explicit
Private Sub Worksheet_selectionChange(ByVal Target As Range)
With Target
If .Column = 2 And .Row > 9 And .Count = 1 Then Sheets("Docs").Range("D7") = .Value
End With
End Sub
 

Pièces jointes

Dernière édition:
Bonjour à toutes et à tous,

Comme ceci ?

Onglet "Infos" :
VB:
Option Explicit
Private Sub Worksheet_selectionChange(ByVal c As Range)
    If c.Count > 1 Or c.Column <> 2 Or c.Row < 10 Then Exit Sub
    If c <> "" Then With Sheets("Docs"): .Activate: .Range("D7") = c: End With
End Sub
Onglet "Docs" :
VB:
Option Explicit
Private Sub Worksheet_Activate()
    Dim c As Range
    ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3, Criteria1:=[d7]
End Sub
Private Sub Worksheet_Change(ByVal c As Range)
    If c.Address = "$D$7" Then
        Select Case c
        Case "": ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3
        Case Else: ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3, Criteria1:=c
        End Select
        [d7].Select
    End If
End Sub
A bientôt 🙂
 
Double Zero, j'ai eu un souci avec le dernier code
pourquoi quand
- j'efface la cellule D7 pour que le tableau affiche toutes ses lignes et ça marche et jy vais dans une autre feuille
- une fois que je reviens a la feuille Docs il y'a plus de tableau complet, je dois appuyer effacer cellule D7 pour que le tableau revient

je pense qu'il y'a un soucie ici

Case "": ActiveSheet.ListObjects("TPA").Range.AutoFilter Field:=3

je veux que si case est vide le filtrage est effacé
voir fichier merci pour ton aide

Merci
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour