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

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

  • Test 2.xls
    68 KB · Affichages: 42

TOTOEXCEL2019

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

chris

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

chris

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

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
-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

  • FiltreBDPlusieursMotsCles.xlsm
    77.7 KB · Affichages: 17
Dernière édition:

TOTOEXCEL2019

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

TOTOEXCEL2019

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

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
206

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG