Critère de recherche avec bouton suivant et ScrollBar

Bonjour,

J'aimerais rechercher tous les noms qui commencent par "L"

Dans la colonne1 , il a 4 noms qui commencent par L

N°3 le Moine

N°5 Le Golf

N°14 Lacroix

N°18 Laporte

Je Clic sur le bouton "Critères"

Je tape L dans le TextBox1

J'aimerais que chaque fois que j'appuie sur le bouton suivant, je passe à l'item suivant.

Exactement comme le bouton suivant qui se trouve dans le formulaire intégré d'excel

Mais je bloque sur le 1er nom N°3 Le Moine

Merci

Bonsoir,

le "soucis" c'est la manière dont vous faites le teste sur le bouton suivant :

        If UCase(Left(c.Value, Len(Me.TextBox1))) = UCase(Me.TextBox1.Value) Then 'condition : si les premiers caractères correspondent (indépendamment de la casse)
'            MsgBox c.Row - 1 & " : " & c.Value ' le MsgBox fonctionne
            Me.ScrollBar1 = c.Row - 1  ' affiche la valeur de la cellule dans le textBox1 en regard du ScrollBar1
        End If

ici vous testez si les premières lettres de la cellule colonne 1 sont = aux lettres entrées dans le textbox1. Ceci dans une boucle.

Pour le premier "passage" le test est égal, on incrémente la scrollbar, qui prend par exemple la valeur 3 au lieu de 1.

Cela crée un "changement" de valeur de la scrollbar qui lance la procédure suivante :

        r = Me.ScrollBar1.Value + 1 'Si r =1 ->Se positionne sur la 3 ème ligne (1ère ligne du Tableau)
    For i = 1 To 3
        Me("TextBox" & i).Value = Ws.Cells(r, i).Value  'Affiche les données de la colonne 1 dans la TextBox1
    Next i

suite au changement du scrollbar, les valeurs "adéquate" sont affichées dans les trois textbox => tout est OK pour le premier passage.

Retour sur la boucle de la colonne de nom, et là "forcément" le test suivant n'est plus "VRAI"

 If UCase(Left(c.Value, Len(Me.TextBox1))) = UCase(Me.TextBox1.Value) Then 

En effet vous testez si les noms suivant sont égal à "Lemoine", la boucle se finie et on a bien trouvé le premier nom commençant par L.

Vous cliquez sur le bouton suivant, vous lancer un deuxième passage sur le code suivant :

        If UCase(Left(c.Value, Len(Me.TextBox1))) = UCase(Me.TextBox1.Value) Then 'condition : si les premiers caractères correspondent (indépendamment de la casse)
'            MsgBox c.Row - 1 & " : " & c.Value ' le MsgBox fonctionne
            Me.ScrollBar1 = c.Row - 1  ' affiche la valeur de la cellule dans le textBox1 en regard du ScrollBar1
        End If

Ici on se retrouve comme lors du retour sur la boucle, aucun autre nom est égal Lemoine si ce n'est Lemoine, puisqu'il n'y a pas en mémoire la position de la dernière réponse. Donc on retombe encore et encore sur Lemoine, donc les trois textbox reste sur les valeurs précédemment trouvées... etc, etc...

Il vous faut revoir tout le cheminement de votre procédure, et pour info la recherche d'Excel dissocie le textbox de recherche et la valeur trouvée, qui n'est autre que la cellule correspondante, hors vous dans votre projet le résultat de la recherche devient le critère de la recherche suivant, donc la recherche se termine...

@ bientôt

LouReeD

Bonjour LouReed

J'ai bien compris qu'il y a un os sur le bouton suivant, mais malheureusement je bloque là - dessus

Le msgBox trouve bien tous les noms qui commencent par L

En ce qui concerne la recherche et le textbox1 , j'ai reproduit presque exactement le formulaire intégré d'Excel 2013

Merci pour les explications fort intéressantes.

Bonjour,

c'est bien ce que je vous ai expliquer si vous mettez le résultat ailleurs que dans la textbox (c'est à dire dans la MSGboxe) cela fonctionne...

@ bientôt

LouReeD

Re bonsoir,

Ci joint un fichier quelque peu modifié, avec possibilité de recherche sur les trois colonnes...

@ bientôt

LouReeD

Bonjour,

Génial !!!! Fabuleux !!!!

Ça fonctionne. Jamais je n’aurais trouvé

Je vais me pencher sur la solution tranquillement.

Juste une chose est – ce possible que le curseur du ScrollBar soit lié avec le résultat de la recherche ?

C’est-à-dire chaque fois que j’appuie sur Suivant le curseur descend en regard du numéro de la recherche et remonte dans le cas inverse.

Merci encore pour la solution

Bonsoir,

voili, voilou...

Bonne fin de soirée et @ bientôt

LouReeD

Bonjour,

Perfect , c'est Rock 'n' Roll . 8)

Merci beaucoup LouReed

Bonjour,

une option en plus : Tout

Une recherche sur les trois critères...

@ bientôt

LouReeD

Bonjour,

c'est puissant et efficace cette dernière fonction ...

Je l'ai testé à partir de la 2ème , la 3ème et la 9ème colonne d'un tableau. Le "Truc" ne se trompe jamais.

Bravo ! Good job !

Merci encore LouReed

A vot'service

@ bientôt

LouReeD

Bonjour LouReed ,

En trifouillant ton programme dans tous les sens , je suis tombé sur un petit souci

La recherche provoque une erreur si et seulement si un item est situé sur la dernière ligne du Tableau.

Lorsque l'on tape par exemple la lettre G

Giraud est ok

mais Germain déclenche une erreur.

Merci

Bonsoir,

Voici la correction :

Private Sub UserForm_Initialize()
' initialisation des contrôles
UserForm1.Height = 218
recherche = False
TextBox4.Visible = False
Label4.Visible = False
OptionButton1.Visible = False
OptionButton1.Value = True
OptionButton2.Visible = False
OptionButton3.Visible = False
CommandButton2.Visible = False
CommandButton6.Visible = False
critère_de_recherche = 1
critère_de_recherche_début = 1
ligne_recherche = 1
ligne_affichée = 1

Dim L As Long  ' Ligne Scrollbar
Set Ws = Sheets("tblo") 'Se positionne sur l'Onglet tblo
        L = Ws.ListObjects(1).ListRows.Count+ 1 'Nombre de lignes (sans les entêtes et totaux)
    With Me.ScrollBar1
        .Min = 1
        .Max = L
        .Value = 1
    End With
End Sub

@ bientôt

LouReeD

Bonsoir,

Ca marche !!!

Merci

Bonsoir,

Ca marche !!!

Merci

3 points d'exclamation !?

Pourquoi ?

Vous en doutiez ?

Non c'est une blague...

@ bientôt

LouReeD

Rechercher des sujets similaires à "critere recherche bouton suivant scrollbar"