Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…