XL 2013 Filtrage automatique des résultats de recherche

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 !

chaelie2015

XLDnaute Accro
Bonjour Forum
Je cherche à mettre en place une fonction dans Excel où les résultats de recherche saisis dans la cellule E3 s'affichent automatiquement dans la colonne F en fonction des lettres tapées. Par exemple, si je saisis la première lettre "A" dans la cellule E3, je souhaite que la colonne F affiche tous les mots qui commencent par "A". Ensuite, si je continue à saisir "Ac", la colonne F devrait automatiquement se mettre à jour pour n'afficher que les mots commençant par "Ac", et ainsi de suite, jusqu'à ce que je valide la cellule E3.
Ci-joint le fichier que j'ai préparé. Je n'ai pas réussi à automatiser le processus lors de la saisie.
Merci par avance
 

Pièces jointes

Bonjour,

Généralement pour cela on utilise une TextBox sur la feuille, que tu peux éventuellement lier à la cellule E3.


[edit]
Je cherche à mettre en place une fonction dans Excel où les résultats de recherche saisis dans la cellule E3 s'affichent automatiquement dans la colonne F en fonction des lettres tapées.
Au temps pour moi, j'ai lu trop vite et pas "vu" que tu voulais mettre en place une fonction.
[/edit]
 
Bonjour chaelie2015, TooFatBoy, le forum,

Ce problème n'a tout simplement aucun sens :

- en mode édition (lors de la frappe en E3) aucun calcul ne peut s'effectuer

- la plage où doit se faire la recherche n'est pas indiquée.

A+
Bonjour Job75, TooFatBoy, et les membres du forum,

Merci pour vos retours.
  1. Pour le 1 point, je te remercie pour l'information. C'est justement pour cela que j'avais posé la question, est ce possible ?
  2. Concernant le 2 point, la plage de recherche se situe dans la colonne D, qui était effectivement masquée.
Merci encore pour votre réponse.
 
Bonjour à tous, 🙂

A défaut d'une formule, essaie ceci :
VB:
Sub test()
     Dim x, Prefix As String, Arr
     With Sheets("Liste")
          Prefix = .[e3]
          x = Filter(.Evaluate("transpose(if(left(d3:d685," & Len(Prefix) & _
                               ")=""" & Prefix & """,row(1:1)))"), False, 0)
          If UBound(x) = -1 Then Exit Sub
          Arr = Application.Index(.Range("d3:d685").Value, Application.Transpose(x), [transpose(row(1:1))])
          If UBound(x) = 0 Then
               .[f3].Resize(, UBound(Arr)) = Arr
          Else
               .[f3].Resize(UBound(Arr), UBound(Arr, 2)) = Arr
          End If
     End With
End Sub

Mais bon, avec une formule je sais que c'est possible 🙃
klin89
 
Mais bon, avec une formule je sais que c'est possible 🙃
En es-tu vraiment sûr ?

La formule ne peut s'actualiser, si je ne me trompe, qu'après validation de la saisie. Nan ? 🤔
C'est d'ailleurs pour ça qu'habituellement on ne fait pas la saisie dans une cellule mais dans une TextBox qui permet d'interception facilement chaque caractère saisi.

Mais ici Charlie a un besoin spécifique.
Besoin qui jusqu'ici reste bien mystérieux puisqu'il ne nous en dit rien. 😉
 
Dernière édition:
Bonjour klin89,

Bah chaelie2015 a bien dit :
les résultats de recherche saisis dans la cellule E3 s'affichent automatiquement dans la colonne F en fonction des lettres tapées.
Ensuite, si je continue à saisir "Ac", la colonne F devrait automatiquement se mettre à jour pour n'afficher que les mots commençant par "Ac", et ainsi de suite, jusqu'à ce que je valide la cellule E3.
Mais s'il s'agit de restituer le filtrage de la colonne D c'est simple et rapide avec des tableaux VBA :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim critere$, tablo, rest(), i&, n&
critere = [E3] & "*"
tablo = Range("D3:E" & Cells.SpecialCells(xlCellTypeLastCell).Row) 'matrice, plus rapide, au moins 2 éléments
ReDim rest(1 To UBound(tablo), 1 To 1)
If critere <> "*" Then
    For i = 1 To UBound(tablo)
        If tablo(i, 1) Like critere Then n = n + 1: rest(n, 1) = tablo(i, 1)
    Next
End If
Application.EnableEvents = False: [F3].Resize(UBound(rest)) = rest: Application.EnableEvents = True
End Sub
 

Pièces jointes

Re à tous, 🙂

En effet, la demande de chaelie2015 n'est réalisable que par l'intermédiaire d'une zone de texte permettant la capture de caractères, je voulais simplement relancer la discussion qui me semblait un peu bloquée sur le coup 🙃
Sinon pour continuer, j'ai vu quelque part qu'il était possible d'obtenir le même résultat que les deux macros proposées en utilisant les fonctions DECALER, PETITE.VALEUR et TROUVE.

klin89
 
- 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
8
Affichages
257
Réponses
22
Affichages
878
Réponses
3
Affichages
410
Retour