Bug sur fonction .find

Résolu
mickysor -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
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.
A voir également:

2 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
Mickysor
 
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
mickysor
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
mickysor
 
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   Statut Modérateur Dernière intervention   2 761
 
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
mickysor
 
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   Statut Modérateur Dernière intervention   2 761
 
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
mickysor
 
tu as raison.super!!
encore merci pour tout!
longue vie à ce forum!
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
encore merci pour tout!

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