Filtre ou "Goto" via textbox

Bonjour le forum!

J'ai donc dans mon fichier une textbox qui me sert à filtrer sur 3 feuilles.

La chose étant que mon fichier devient de plus en plus volumineux.

La macro met donc du temps à filtrer ce qui doit l'être.

Ma demande est donc la suivante.

J'aimerai soit:

- Trouver un code de filtre par textbox sur 4 feuilles plus rapide

OU

- Utiliser un "Goto" sur 4 feuilles pour alléger la manipulation.

J'entends donc par "Goto" = "Aller à", il me semble que c'est comme cela qu'on l'utilise en VBA (si je ne me trompe pas).

Le principe serait donc que ma textbox ne filtre pas mais me permette "d'Aller à" la première cellule dans une colonne définie qui commence par la saisie dans la textbox. Pour donner un exemple, si je tape "A" dans ma textbox la macro me permettrai d'aller à la première cellule qui commence par "A" dans ma colonne A (par exemple). Si je tape "Ab" et bien d'aller à la première qui commence par "Ab" etc etc...

Il faudrait que ce "Goto" fonctionne sur 4 de mes feuilles (et ouais depuis j'ai rajouté une feuille...) pour les titres en colonne A (ce sont les même d'une feuille à l'autre).

Dans le fichier test founis ci dessous, ce serait aux 4 feuilles qui y sont d'appliquer la macro via n'importe quelle textbox (car il y a une textbox dans chaque feuille et toute du même nom "Textbox1").

165test.xlsm (274.99 Ko)

Voila je pense m'être expliqué assez clairement (pour une fois ).

En espérant trouver de l'aide, je continu de chercher en parallèle et vous tiens au courant de mon avancé!

Amicalement!

Bonjour,

les filtres de feuille de calculs étant instantanés, y a pas mieux !

Bonjour Marc,

Je vois ce que tu veux dire par instantané sur le fichier test... mais quand tu as plus de 700 lignes à traiter sur 4 feuilles c'est saccadé et pas très... optimisé? J'ai pensé justement au "Goto" pour palier à ce manque de rapidité avec un fichier de la taille du miens...

Aurait tu une idée de comment remplacer mon filtre par un goto sur mes textbox?

Merci pour ta réponse!

Un filtre - ou un filtre avancé - traitant instantanément des dizaines de milliers de lignes, je n'ai rien d'autre en magasin !

Ces filtres sont ceux accessibles depuis la feuille de calculs …

Mais peut-être ton "filtre" n'en est pas un ! Quant au Goto, sans explication digne de ce nom,

j'ai l'impression de régresser de plus de trente ans à l'époque où le téléphone sans fil n'existait pas !

Pour ce qui est du filtre c'est celui-ci:

Private Sub TextBox1_Change()
TextBox1.Value = Application.Proper(TextBox1.Value)
Dim ws As Worksheet
      For Each ws In Sheets(Array("Sommaire", "DL", "Prévisions"))
Dim sCritere As String
    sCritere = "=" & TextBox1.Text & "*"
    ws.Range("$A$18:$J$100000").AutoFilter Field:=1, Criteria1:=sCritere, _
    Operator:=xlAnd 'colonne à filtrer 1 = A, 2 = B etc...'
Next ws
End Sub

Celui-la même dans le fichier test fourni.

Et pour l'explication du "Goto":

Zayx a écrit :

J'entends donc par "Goto" = "Aller à", il me semble que c'est comme cela qu'on l'utilise en VBA (si je ne me trompe pas).

Le principe serait donc que ma textbox ne filtre pas mais me permette "d'Aller à" la première cellule dans une colonne définie qui commence par la saisie dans la textbox. Pour donner un exemple, si je tape "A" dans ma textbox la macro me permettrai d'aller à la première cellule qui commence par "A" dans ma colonne A (par exemple). Si je tape "Ab" et bien d'aller à la première qui commence par "Ab" etc etc...

Il faudrait que ce "Goto" fonctionne sur 4 de mes feuilles (et ouais depuis j'ai rajouté une feuille...) pour les titres en colonne A (ce sont les même d'une feuille à l'autre).

Dans le fichier test founis ci dessous, ce serait aux 4 feuilles qui y sont d'appliquer la macro via n'importe quelle textbox (car il y a une textbox dans chaque feuille et toute du même nom "Textbox1").

Je ne vois guère comment faire mieux...

Et en désactivant l'écran pendant l'évènement ? (propriété ScreenUpdating )

Pour le "Goto" je ne comprends pas ! Le filtre réduisant déjà l'affichage …

A moins que tu mélanges deux problématiques ?!

J'ai rajouté,

Application.ScreenUpdating = False

à ma macro de filtre (pour ma textbox), une légère différence se fait sentir mais toujours une bonne grosse seconde de temps d’exécution.

Pour ce qui est de "Goto" on ne parle plus de filtrer on parle d'aller à une cellule bien précise en fonction du contenu de la textbox.

Si je rentre "A" dans ma textbox la macro qui y est associée fera en sorte de sélectionner la première cellule en colonne A qui commence par "A". Je ne vois pas comment l'expliquer mieux que ça.

Les deux propositions sont à traiter séparément, il me faut SOIT un filtre rapide SOIT un "Goto" et non pas les deux

En espérant m'être mieux exprimé, préviens moi si il y a encore des points à éclaircir, je me ferai un plaisir de t'aider à m'aider!

Bonne soirée!

Donc pour le "Goto" ce serait une simple recherche via la méthode Range.Find

Bonjour Marc, le forum!

A ce que je vois tu as compris ce que j'aimerai faire.

Range.Find

Ça me dis pas grand chose de plus malheureusement je ne suis pas très fort en VBA, tout juste bon à grappiller des bouts de code par ci par là et les emboiter on va dire...

Comment faire pour l'adapter à ma textbox? Que ce Range.Find soit actif via ma textbox et qu'en gros il cherche à chaque fois la première cellule qui commence par le texte saisi dans ma textbox et la sélectionne.

Encore merci pour tes réponses!

Activer le Générateur de macros puis effectuer manuellement une recherche : un code est livré sur un plateau !

Le comparer ensuite avec l'aide VBA de la méthode Find, voilà comment se former …

Euuuuhhh... Sans paraitre désagréable Marc... Je viens ici justement par ce que je suis débutant sur excel pour avoir une certaine aide.

Si l'enregistreur de macro réglait tous les maux des débutants je ne viendrai jamais sur ce forum.

J'ai bien compris que cela aide énormément, je m'en sert de temps à autre mais quand tu me dis "effectue une recherche manuellement" (quitte à passer pour un inculte) je ne vois pas ce que tu entends par là. Après je comprend qu'une fois ce code généré je pourrais me dépatouiller seul mais qu'entends tu par "effectue une recherche manuellement"?

Encore merci pour tes réponses Marc!

La lecture de l'aide suffisant à elle seule …

Sinon dans mes "vieilles" versions d'Excel, il y a bien une fonction de recherche depuis une feuille de calculs

et donc cela m'étonnerait fort qu'elle ait été supprimée dans une version plus récente !

Bonjour Marc,

Bon... Euh je vais clôturer le sujet. Depuis que je l'ai ouvert je n'ai pas avancé d'un poil, je comprends que tu cherches à me faire apprendre seul mais même tes "explications" pour l'apprentissage via l'aide ou l’exécuteur de macros ne sont que des moitiés de réponses...

C'est bien la première fois qu'on me donne pas un semblant de piste à étudier (et ce de manière relativement bien expliqué) pour que je puisse m'en sortir soit seul soit grâce au travail de quelqu'un sur mon fichier test.

Je te remercie tout de même pour tes réponses même si c'était plus une perte de temps qu'autre chose pour toi comme pour moi.

Au final donc sujet non résolu, bonne journée!

Bonjour le forum.

Après moult recherches et moult essais j'ai trouvé une solution via un Range.Find

Option Explicit

Private Sub Textbox1_Change()
TextBox1.Value = Application.Proper(TextBox1.Value)
    Dim ws As Worksheet
    Dim FindString As String
    Dim Rng As Range

    Set ws = ActiveSheet

    FindString = TextBox1.Value & "*"

    If Trim(FindString) <> "" Then
        Set Rng = ws.Cells.Find( _
                         What:=FindString, _
                         LookIn:=xlValues, _
                         LookAt:=xlWhole, _
                         SearchOrder:=xlByColumns, _
                         SearchDirection:=xlNext, _
                         MatchCase:=False, _
                         SearchFormat:=False)

        If Not Rng Is Nothing Then
            Application.Goto Rng, True
        Else
            TextBox1.Value = ""
        End If
    End If
End Sub

A utiliser donc avec une textbox qui permet d'aller à la première cellule qui commence par la saisie de la textbox (filtre par colonne mais modifiable pour filtrer par ligne) et si aucun résultat et bien remet à zéro le contenu de la textbox.

Amicalement!

C'est bien que tu t'y mettes car comme on a du mal à te décoder

Bonjour à tous,

Et encore tu as de la chance, il ne t'a pas dit que tu lui cassais les c...

https://forum.excel-pratique.com/excel/forumule-si-forcer-le-calcule-d-une-cellule-texte-t58909-20.html#p333409

Bonne journée, surtout à zayx

eric

Ça a vraiment pas été facile mais j'y suis arrivé c'est ce qui compte.

A ce que je vois il y a encore eriic qui sait pas quoi faire. Je l'imagine bien encore en train de critiquer.

Bref merci pour ton aide Marc et bonne journée!

Rechercher des sujets similaires à "filtre goto via textbox"