Extraire des données d'un tableau excel par liste de mots clefs

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 !

TOTOEXCEL2019

XLDnaute Nouveau
Bonjour,

Voici le principe de la macro VBA actuelle : elle permet de rechercher dans le tableau de la "Feuil1" un critère, puis extrait dans une nouvelle feuille les lignes qui y sont rattachées.

Je voudrais savoir s'il est possible de la faire évoluer un peu.

En effet, il serait bien de rechercher dans le tableau de la "Feuil1" une liste de critères (présent par exemple dans l'onglet "Liste"), puis de générer une nouvelle feuille comportant les lignes identifiées par la liste de la recherche.

En d'autres termes, cela permettrait de passer d'une recherche monocritère à multicritères via une liste de mots clefs.

Je vous joins la macro VBA actuelle ainsi que l'onglet "Liste" ajouté pour faire la recherche.


Merci par avance.
 

Pièces jointes

Re,

Finalement, on se demande s'il faut répondre puisque c'est résolu. J'arrête donc de modifier le fichier pour la prise en compte de toutes les colonnes.
Bien le salut Toto...

Re,

Oups, je n'avais pas vu que tu étais entrain de modifier le fichier @mapomme .
Désolé.
Ce serait intéressant en effet de voir le fichier final avec la prise en compte de toutes les colonnes.

Merci par avance.
 
RE

On peut modifier une des lignes de ma requête pour remplacer les noms par "Toutes les colonnes"

Si le titre du tableau de mots clés ne change pas, c'est la seule modif sinon il faut adapter ces lignes qui s'y réfèrent

Là je m'absente jusqu'en fin d'après-midi, je posterai au retour selon la précision donnée pour le titre des motsclés (on peut aussi se référer à l'unique colonne éventuellement)
 
RE
Re @chris ,

En fait l'idée serait de pouvoir modifier l'en-tête ou ajouter une colonne dans la Feuil1.

Merci par avance.

Comme je l'ai dit on peut faire abstraction des en-têtes et du nombre de colonnes de la BD donc ma question portait sur la liste des mots mais tu n'y a pas répondu.
La solution PowerQuery est a priori plus rapide mais tu sembles avoir opté pour le solution de job75...
 
-Fonctionne pour tout type de BD
-Calcule tous les mots clés de la BD
-Choix intuitif des mots clés dans des comboboxs
-Affichage des résultats dans une ListBox


VB:
Dim f, Rng, TblBD(), NbCol, Choix1()
Option Compare Text
Private Sub UserForm_Initialize()
  Set f = Sheets("BD")
  Set Rng = f.[A1].CurrentRegion.Offset(1)
  TblBD = f.[A1].CurrentRegion.Offset(1).Value
  NbCol = UBound(TblBD, 2)
  Choix1 = ListeMotsTab(f.[A1].CurrentRegion.Offset(1))
  For i = 1 To 5
    Me("combobox" & i).List = Choix1
  Next i
End Sub

Private Sub b_ok_Click()
  ReDim Tbl(1 To UBound(TblBD), 1 To NbCol)
  n = 0: Dim clé(1 To 5)
  For m = 1 To 5: clé(m) = "*" & Me("combobox" & m) & "*": Next m
  For i = 1 To UBound(TblBD)
       témoin = False
       For m = 1 To 5
         For k = 1 To NbCol
           If clé(m) <> "**" Then If TblBD(i, k) Like clé(m) Then témoin = True: Exit For
         Next k
         If témoin Then Exit For
       Next m
       If témoin Then n = n + 1: For k = 1 To NbCol: Tbl(n, k) = TblBD(i, k): Next k
  Next i
  If n > 0 Then
    Set f2 = Sheets("extrait")
    f2.Cells.ClearContents
    f.Range("A1").CurrentRegion.Resize(1, NbCol).Copy f2.[A1]
    f2.[A2].Resize(n, NbCol) = Tbl
    f2.Cells(1, NbCol + 5) = "Mots-clés"
    For i = 1 To 5: f2.Cells(i + 1, NbCol + 5) = Me("combobox" & i): Next i
    Me.ListBox1.ColumnCount = NbCol
    EnteteListBox
    Me.ListBox1.List = f2.[A1].CurrentRegion.Offset(1).Value
  End If
End Sub

Version ET entre plusieurs mots:

Avec comboBox:



Avec TextBox:


Boisgontier
 

Pièces jointes

Dernière édition:
RE

On peut modifier une des lignes de ma requête pour remplacer les noms par "Toutes les colonnes"

Si le titre du tableau de mots clés ne change pas, c'est la seule modif sinon il faut adapter ces lignes qui s'y réfèrent

Là je m'absente jusqu'en fin d'après-midi, je posterai au retour selon la précision donnée pour le titre des motsclés (on peut aussi se référer à l'unique colonne éventuellement)


Bonjour Chris,

Je regarde également ta solution, apparemment plus rapide...

> On peut modifier une des lignes de ma requête pour remplacer les noms par "Toutes les colonnes"

Peux-tu préciser un peu comment faire cette modification ?

L'objectif serait de pouvoir modifier le titre des colonnes du tableau de données, et d'en rajouter.

Merci par avance.
 
RE

On peut modifier une des lignes de ma requête pour remplacer les noms par "Toutes les colonnes"

Si le titre du tableau de mots clés ne change pas, c'est la seule modif sinon il faut adapter ces lignes qui s'y réfèrent

Là je m'absente jusqu'en fin d'après-midi, je posterai au retour selon la précision donnée pour le titre des motsclés (on peut aussi se référer à l'unique colonne éventuellement)


Bonjour Chris,

> On peut modifier une des lignes de ma requête pour remplacer les noms par "Toutes les colonnes"

Pourrais-tu, s'il te plaît, préciser cette modification ?

L'objectif serait de pouvoir modifier les en-têtes des colonnes de tableau des données initiales et d'en rajouter.

Merci par avance.
 
- 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

Réponses
19
Affichages
472
Retour