Bug sur fonction .find

Résolu/Fermé
mickysor - 25 juil. 2013 à 17:41
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 26 juil. 2013 à 19:44
Bonjour,
J'ai une macro comme ceci:
Dim A As Range
Set A = Range("listetag!I1:I" & Range("listetag!I65536").End(xlUp).Row).Find(TextBox1.Value)
If Not A Is Nothing Then
Me.Label9 = A.Offset(0, 1).Text
End If

Cette macro va me chercher une valeur dans une liste,lorsqu'on saisi sur le textbox1 la valeur à trouver et me l'affiche dans le label9
cette macro est mise dans le Private Sub TextBox1_Change.

Normalement lorsque tout marche bien, je commence à peine à saisir la valeur dans le textbox1 et au fur et à mesure il me trouve les données sans devoir saisir la valeur complète dans la textbox1.

Lorsque ça beugue, je suis obligé de saisir la valeur complète dans la textbox1,sinon ça ne marche pas?

Je ne comprends pas pourquoi ce bug ce produit.

Merci pour toute aide.

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
25 juil. 2013 à 19:51
Bonsoir,

on n'a que ça ne marche pas comme renseignement ?
C'est un peu léger...
Et un fichier de test avec les manip à faire pour reproduire l'erreur serait le bienvenu.

eric
0
Pardon. Le fichier est beaucoup trop lourd à envoyer. Je vais devoir créer un fichier avec le minimum de macros mais avec une explication plus détaillée. Merci pour linfo. Je reposte ici dès que mon tableau est prêt.
0
voici le tableau allégé ci joint:
http://cjoint.com/?0GzuMSQ9YUV

lorsque vous tapez dans le textbox (mad) il m'affiche dans le label en dessous (madrid).
pas obligé de saisir (madrid) en entier pour l'afficher dans le label.
cependant dans le vrai tableau (celui que je ne peux malheureusement vous envoyer car trop lourd) parfois cette recherche en faisant une saisie parcielle ne marche pas et il faut tout taper.ce qui est très embêtant car le vrai tableau sert à renommer des images jpg.les autres macros sont des insertion d'image , lui donner un nom via ce fameux textbox et cette macro de recherche et renommer le fichier réel en cliquant sur un bouton valider.

dans mes macros je suis parfois amené à faire sur ce userform un (unload me), userform1.show ou encore un (me.repaint).
C'est peu être ça qui peut me créer ce souci de recherche???
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
25 juil. 2013 à 22:04
Tu as réussi à avoir le pb sur ton fichier de test ?
Pour l'instant je n'ai pas réussi....
Beaucoup d'autres actions peuvent s'effectuer entre 2 .find ?

Par sécurité je mettrais d'office les arguments optionnels suivants :
LookIn:=xlvalues, LookAt:=xlpart
Ils peuvent tous être affectés par un autre .find, voir même par d'autres fonctions de recherche, y compris sur feuille.
Je pense surtout à LookAt:=xlpart mais bon, autant mettre les 2.

eric
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 26/07/2013 à 09:18
Bonjour

Ca va Eric ? ;o)
Xlpart est la valeur par défaut, donc...

la fonction Find cherche après une cellule non comprise dans la liste
pour ma part j'aurais écris ceci ( j'évite les codages mystérieux des variables à une lettre)

Private Sub TextBox1_Change()
Dim cellule As Range
With Sheets("listevilles")
Set cellule = .Columns("A").Find(TextBox1.Value, .Range("A65536"), xlValues)
If Not cellule Is Nothing Then Me.Label1 = cellule
End With
End Sub

autre point de vue
plutôt qu'un simple textbox , j'aurais utilisé un textbox_change et une listbox qui sélectionne au fur et à mesure les villes commençant par M puis MA etc

attention
.Range("A65536") concerne une version d'Excel <2007
0
bonjour, j'ai oublié de préciser.j'ai excel 2003 et ce code ne marche malheureusement pas.
de plus j'ai trouvé votre idée de listbox très intéréssante mais je ne l'ai jamais utilisée.il suffit de remplacer textbox1 par listbox1? c'est ça?
en tout cas merci pour toute votre aide
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 26/07/2013 à 10:59
Bonjour Messieurs,

Si on reprends l'idée de Michel_m de la textbox "liée" à une listbox, suffit de :
- dessiner un textbox (textbox1)
- dessiner une listbox (listbox1)

et d'utiliser ce code (de Michel_m trouvé ICI)
Private Sub TextBox1_Change()
Dim Tablo
lettre = UCase(TextBox1.Value)
If lettre = "" Then Exit Sub
ReDim Tablo(0)
ListBox1.Clear
derLig = Sheets("liste").Range("A65536").End(xlUp).Row
With Sheets("liste")
    For cptr = 1 To derLig
        test = .Cells(cptr, 1)
         If .Cells(cptr, 1) Like lettre & "*" Then
            Tablo(cptr_tablo) = .Cells(cptr, 1)
            cptr_tablo = cptr_tablo + 1
            ReDim Preserve Tablo(cptr_tablo)
        End If
Next
End With
ListBox1.List = Application.Transpose(Tablo)
End Sub


Ci-joint un classeur exemple.
Merci à Michel_M pour ce classeur
Cordialement,
Franck P
0
super!!!
cependant toute la feuille est utilisée par une image malheureusement
l'idéal serait que cette liste soit sur un label ou lisbox ou autre dans l'userform
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 juil. 2013 à 11:06
Et, dans ton classeur, tu ne peux malheureusement pas ajouter une feuille "liste"???
Tu peux même masquer cette feuille, il n'y aura aucun souci...
0
tu as raison.super!!
encore merci pour tout!
longue vie à ce forum!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 juil. 2013 à 11:10
encore merci pour tout!

Plutôt merci à tous, tu as tout de même eu affaire à des supers contributeurs ici non???
0
c'est vrai il n'y a rien a dire.merci à tous!!! :)))
0