XL 2019 table des matières

Yvon M

XLDnaute Nouveau
bonjour
je suis en train de créer une tables des matières, avec les lien vers les fichiers concernés.
je voudrais dans une box ou cellule, entrée un mot ou une partie d'un mot, pour que un tri se fasse sur les lignes ou ce dernier et trouver.
suis arriver a avoir un résultat mais je n'obtient que la premiere ligne, contenant ma recherche.
en vous remerciant, d'avance,
mes salutations
 

Pièces jointes

  • recherche et trie.xlsx
    13.9 KB · Affichages: 11

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir Yvon M

Retrouvé dans mes archives car pas trop pro avec ListBox. J'ai essayé d'adapté à ton besoin. En espérant que cela te convienne.
Bonne soirée à toutes & à tous.
@+ Eric c
 

Pièces jointes

  • Yvon M.xlsm
    30.7 KB · Affichages: 6

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @Yvon M
Avec une formule matricielle stockée dans un nom, et 2 tableaux structurés (un pour la source "_Liste" , un pour les résultats "_Extraction", ces deux tableaux doivent avoir le même nombre de lignes, si toutes les lignes de la source matchent)
le Nom défini dans le gestionnaire de noms :
NomDéfinition
LstIdx=PETITE.VALEUR(SI(ESTNUM(CHERCHE("*"&Feuil1!$D$2&"*";_Liste[theme]));LIGNE(_Liste[theme])-LIGNE(_Liste[#En-têtes]);LIGNES(Feuil1!$A:$A));LIGNE(DECALER(Feuil1!$A$1;0;0;NB.SI(_Liste[theme];"*"&Feuil1!$D$2&"*"))))
Ce nom renvoie le N° des lignes du tableau source qui ont une correspondance


La formule dans le tableau résultat :
VB:
=SIERREUR(INDEX(_Liste[theme];INDEX(LstIdx;LIGNE()-LIGNE($D$3)));"")

1649016944882.png



Voir le fichier joint
Amicalement
Alain
 

Pièces jointes

  • table des matières.xlsx
    14.2 KB · Affichages: 5

Yvon M

XLDnaute Nouveau
bonjour
la macro fonctionne bien, mais la recherche se fait sur la premiere colonne, alors qu'il faudrai sur la troisième.
encore merci pour votre aide
salutations
je pense avoir trouver
Sub Recherche()
Dim sText As String
ActiveSheet.ListObjects("Tableau1").ListColumns(3).Range.AutoFilter
sText = InputBox("Texte à rechercher:", "Texte", "")
If sText = "" Then Exit Sub
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=3, Criteria1:="=*" & sText & "*"
End Sub

encore merci
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour à toutes & à tous, bonjour @Yvon M

Question : Si c'est pour filtrer sur place, pourquoi ne pas utiliser les filtres du tableau directement en choisissant filtre textuel et contient ? ça fait la même chose sans macro ...

Sinon pour extraire ailleurs que dans le tableau, avec tes données ma solution par formule ne convient pas car le temps d'exécution est rédhibitoire.
Je te propose une solution par macro qui s'exécute lorsque l'on change le mot clef :
Code à placer dans le code de la feuille table des matières :
Enrichi (BBcode):
Option Base 1
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
  
 'Sortir si La modif ne provient pas du mot clef
    If Intersect(Target, [_Mot_Clef]) Is Nothing Then Exit Sub
   
    Dim Tb, MotClef$, Extrait(), Article, Nb_Articles As Long
   
    'RàZ de l'extraction
    [_Extraction[Extraction]].ClearContents
    With Me.ListObjects("_Extraction")
        .Resize .HeaderRowRange.Resize(2)
    End With
   
    MotClef = [_Mot_Clef]
    'Sortir si le mot clef est vide
    If MotClef = "" Then Exit Sub
   
    'Liste des articles
    Tb = [_TdM[Article / Sujet]]
   
    'Recherche des articles qui correspondent
    Nb_Articles = 0
    For Each Article In Tb
        If Article Like "*" & MotClef & "*" Then
            Nb_Articles = Nb_Articles + 1
            ReDim Preserve Extrait(Nb_Articles)
            Extrait(Nb_Articles) = Article
        End If
    Next
   
    'Restitution du résultat de la recherche
    If Nb_Articles > 0 Then
        With Me.ListObjects("_Extraction")
            .Resize .HeaderRowRange.Resize(Nb_Articles + 1)
            .DataBodyRange.Value = Application.Transpose(Extrait)
        End With
    End If
End Sub
Voir pièce jointe
Amicalement
Alain
 

Pièces jointes

  • table des matieres Macro.xlsm
    934.3 KB · Affichages: 2

AtTheOne

XLDnaute Impliqué
Supporter XLD
Re-Bonjour
Avec une fonction de suppression des accents trouvée sur le Net :
Enrichi (BBcode):
Function sansaccent(texte)
    t = texte
    Avec = "ÀÂÇÈÉÊËÏÔÖÛÜàáâçèéêëîïôöùûü"
    Sans = "AACEEEEIOOUUaaaceeeeiioouuu"
    For i = 1 To Len(Avec)
        t = Replace(t, Mid(Avec, i, 1), Mid(Sans, i, 1))
    Next i
    sansaccent = t
End Function
...
Voir l'exemple en PJ
Amicalement
Alain
 

Pièces jointes

  • table des matieres Macro.xlsm
    937.9 KB · Affichages: 2

Yvon M

XLDnaute Nouveau
Re-Bonjour
Avec une fonction de suppression des accents trouvée sur le Net :
Enrichi (BBcode):
Function sansaccent(texte)
    t = texte
    Avec = "ÀÂÇÈÉÊËÏÔÖÛÜàáâçèéêëîïôöùûü"
    Sans = "AACEEEEIOOUUaaaceeeeiioouuu"
    For i = 1 To Len(Avec)
        t = Replace(t, Mid(Avec, i, 1), Mid(Sans, i, 1))
    Next i
    sansaccent = t
End Function
...
Voir l'exemple en PJ
Amicalement
Alain
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Re-Bonsoir,
Tel-quel la macro de Riton00 utilise le filtre du tableau structuré
(exactement comme si tu choisis dans les filtres "Filtres textuels" et "Contient" :
1649096362142.png
)
La différence est un bouton plus explicite que l'interface Excel.
Si l'on peut faire abstraction des accents sur le texte saisi par l'utilisateur, ce n'est pas le cas pour les textes contenus dans la colonne "Article / Sujet" qui garderont leur accentuation.

Je regarde ce que l'on peut faire avec une autre méthode.
Amicalement
Alain
 
Dernière édition:

AtTheOne

XLDnaute Impliqué
Supporter XLD
Re, de nouveau
Voici un exemple, indifférent à l'accentuation, avec une extraction de toutes les colonnes dans une feuille à part
"Rechercher un Article|Sujet"
La macro se déclenche à chaque changement du mot clef et rapatrie les 9 colonnes de ton tableau (y compris les liens hypertextes).
Dis moi si ça peut te convenir
Amicalement
Alain
 

Pièces jointes

  • table des matieres Macro 2.xlsm
    647.1 KB · Affichages: 11

Discussions similaires

Réponses
6
Affichages
322

Statistiques des forums

Discussions
312 231
Messages
2 086 440
Membres
103 209
dernier inscrit
MIKA33260