Rechercher par mot clé

chaelie2015

XLDnaute Accro
Bonjour Forum
je souhaite afficher toutes les résultats par une recherche par mots clé dans une base de donnée
exemple :je cherche le mot clé "s200" dans la colonne D de la feuille "Base de donnée"s
après touts les mots qui contient "s200" s'affichent dans le tableau de la feuille "moteur de recherche".
Salutation
 

Pièces jointes

  • charlie moteur de recherche.xlsm
    133.5 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour chaelie2015,

Les cellules fusionnées n'acceptent pas les formules matricielles mais on peut ne pas les utiliser avec le nom défini matrice :
Code:
=SI(ESTNUM(CHERCHE('moteur de recherche'!$L$6;'Base de Données'!$D$4:$D$1000));LIGNE('Base de Données'!$D$4:$D$1000))
Formule en B9, à adapter dans les autres colonnes :
Code:
=SIERREUR(INDEX('Base de Données'!F:F;PETITE.VALEUR(matrice;LIGNE()-8));"")
A+
 

Pièces jointes

  • charlie moteur de recherche(1).xlsm
    136.5 KB · Affichages: 17

job75

XLDnaute Barbatruc
Re, bonjour Pierre,

Quand on ne cherche que les valeurs la méthode la meilleure ( la plus rapide) est d'utiliser des tableaux VBA :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, ub%, crit$, tablo, resu(), i&, n&, j%
a = Array(1, 6, 7, 11, 12, 16, 15)
ub = UBound(a)
crit = "*" & LCase([D6]) & "*"
With Sheets("Base de Données")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    tablo = .Range("A1", .Range("D" & .Rows.Count).End(xlUp)).Resize(, Application.Max(a)) 'matrice, plus rapide
End With
'---remplissage de resu---
ReDim resu(UBound(tablo) - 1, ub) 'base 0
For i = 4 To UBound(tablo)
    If crit <> "**" And LCase(tablo(i, 4)) Like crit Then
        For j = 0 To ub
            resu(n, j) = tablo(i, a(j))
        Next j
        n = n + 1
    End If
Next i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
Application.EnableEvents = False 'désactive les évènements
With [A9]
    If n Then
        .Resize(n, ub + 1) = resu
        .Resize(n, ub + 1).Borders.Weight = xlThin 'bordures
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, ub + 1).Delete xlUp 'RAZ en dessous
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Bien entendu j'ai supprimé les cellules fusionnées qui ne font que compliquer les choses.

Fichier (2).

A+
 

Pièces jointes

  • charlie moteur de recherche(2).xlsm
    133.2 KB · Affichages: 16

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,

C'est un programme standard qu'il suffit de paramétrer.

'--- à adapter
colInterro = Array(1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) ' colonnes à interroger (adapter)
colVisu = Array(1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) ' colonnes à visualiser dans listbox (adapter)


Boisgontier
 

said58

XLDnaute Nouveau
Bonsoir,

C'est un programme standard qu'il suffit de paramétrer.

'--- à adapter
colInterro = Array(1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) ' colonnes à interroger (adapter)
colVisu = Array(1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) ' colonnes à visualiser dans listbox (adapter)


Boisgontier
Bonsoir Jacques
et merci de votre retour , vraiment c'est un outil efficace chapeau a celui qui l a conçu !


Bonne Nuit & Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 922
Membres
103 040
dernier inscrit
badi