trouvé un mot dans un tableau (Resolu)

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

  • docs.xlsx
    14.8 KB · Affichages: 33

Paf

XLDnaute Barbatruc
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+
 

DoubleZero

XLDnaute Barbatruc
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 :)
 

Paf

XLDnaute Barbatruc
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 !
 

achraf26

XLDnaute Occasionnel
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 :)
 

achraf26

XLDnaute Occasionnel
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.
 

achraf26

XLDnaute Occasionnel
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:D, il y'a que la 1er ligne dont la valeur qu'on cherche qui s'affiche.
Merci
 

DoubleZero

XLDnaute Barbatruc
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 :)
 

achraf26

XLDnaute Occasionnel
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

  • docs.xlsm
    21.9 KB · Affichages: 35
Dernière édition:

DoubleZero

XLDnaute Barbatruc
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 :)
 

Si...

XLDnaute Barbatruc
salut

Pour ÓÒ qui n’aime pas les Tableaux (et avec que je n’ai pas échangé ces derniers temps:D:)) : un style simplifié pour les codes de ceux-ci .

Nota : j’ai ajouté la possibilité d’avoir des tableaux non filtrés à la sélection de chaque onglet.
 

Pièces jointes

  • Evènement et Tableau.xlsm
    20.7 KB · Affichages: 31

achraf26

XLDnaute Occasionnel
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

  • docs.xlsm
    23.6 KB · Affichages: 25
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed