probleme de recherche en vba

  • Initiateur de la discussion Initiateur de la discussion dj.run
  • Date de début Date de début

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 !

D

dj.run

Guest
Bonsoir à tous,

une petite question pour finir le week end.

y a t il possibilité en vba de faire une recherche (pour charger un textbox) avec une fonction du style faux que l'on utilise sous excel dans recherchev.... et qui nous renvoit la valeur exacte .

car mon probleme est le suivant :
via un usf je complete une liste de client (à la suite) mais quand je veux recharger une fiche client , cela ne me renvoit pas forcement la bonne fiche.
par exemple dans ma liste j'ai le client 144 et je cree le client 4 qui n'existait pas . mon client 4 va se retrouver apres mon client 144 car c'est cree à la suite et si j'appele la fiche du client 4 il me donne le 1er 4 qu'il rencontre c.a.d. 144. j'aurai la possibilité de faire un tri après chaque creation mais j'ai peur que cela allourdisse la procédure . si j'ai pas le choix je le ferai mais je me posais la question : il y peut etre une autre solution .

merci à vous tous

bonne soirée

dj.run
 
Bonjour @Christophe@,

merci pour l'exemple (qui plante chez moi à l'execution) je suis sous win98 et office97 pro .

je vais faire un peu de menage dans mon fichier puis je vais le zipper pour te l'envoyer ce sera plus simple .

a tout à l'heure

dj.run
 
Bonjour a tous

Voici ton fichier révisé.

Pour ton info:

Concernant la recherche, la raison pour laquelle tu trouve 144 et non 4 est que tu cherche avec comme critère: LookAt:=xlPart

J'ai donc remplacé dans ton code xlPart par xlWhole, voir copie du code en desous.

Selection.Find(What:=Textcdsal.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate

En faite xlWhole et xlPart, c'est comme le vrai et faux dans ton rechercheV.

Je t'ai aussi ajouté un contrôle des erreurs, parce que si tu introduit un client inexistant, tu as bug, normal, alors je lui ai ajouté une instruction, Si erreur, aller la, tu verras, facile a comprendre

J'ai egalement changé une petit chose dans le textbox ou tu introduit ton client, comme tu as mis comme evenement _change, des que tu introduit le premier chiffre il commence a chercher, en faite j'ai modifie par _DoubleClick, ce qui fait que tu introduit ton code client et ensuite tu double clic dans le textbox, et il cherche.

Voila en gros

Bonne chance

@Christophe@
 

Pièces jointes

re à tous,

@Christophe@, avant tout un grand merci, tu m'as fait avancer et j'ai apris deux choses aujourd'hui

la premiere c'est que de desactiver la mise a jour de l'ecran permet de gagner en temps d'execution.

et la deuxieme c'est la difference entre LookAt:=xlWhole et LookAt:=xlPart
je note tout cela, je note .

par contre si ce n'est pas trop abuser, je voudrai faire un test d'existance quand je cré un nouveau client, j'ai un exemple dans un autre projet (qui fonctionne) mais dans ce projet je n'y arrive pas .
le code que j'ai tapé :


Private Sub creersal_Click()
Application.ScreenUpdating = False
Dim L As Integer
L = Sheets("clients").Range("A3000").End(xlUp).Row + 1
With Sheets("clients")
For Each Cellule In Range("a2:a" & L)
If Cellule.Value = Textcdsal.Value Then
MsgBox ("Ce client existe déja")
Exit Sub
End If
Next Cellule
.Range("A" & L) = Textcdsal.Value ' Code
.Range("B" & L) = Textnomsal ' Nom
.Range("C" & L) = Textmatricule.Value ' Matricule
.Range("D" & L) = Combosociete ' Societe
End With
Sheets("credit").Activate
Unload Me
Application.ScreenUpdating = True
End Sub

le probleme c'est que ça marche pas et je comprends pas pourquoi .
j'arrive à creer plusieurs fois le même code client .

si quelqu'un a une idée .

merci pour votre aide.

dj.run
 
re à tous,

j'ai compris mon erreur mais comment la corriger ?

For Each Cellule In Range("a2:a" & L)
If Cellule.Value = Textcdsal.Value Then
MsgBox ("Ce client existe déja")
Exit Sub
End If
Next Cellule

Dans mon autre projet (où ça fonctionne) cela verifit des données alpha et dans mon projet actuel, ce sont des données numériques.

comment puis je corriger cela ??

merci encore pour votre aide

dj.run
 
Bonjour @Christophe@,

je sais plus quoi faire, chaque fois, je suis pas loin de la solution et j'y arrive pas . je suis vert, bleu, multicolore....

Pour ta solution c'est extra c'est tout a fait cela et ça marche très bien .

mais je devrai trouver des trucs comme cela car après analyse de ton code, la seule chose que je ne connaissais pas c'est : CDbl mais d'autres me l'avait donnés. le problème c'est que je crée mal mon code je suis "brouillon".

y a pas des cours par correspondance ?

car même avec les livres, vos exemples, et votre aide, j'y arrive pas . je suis écœuré .

un grand merci a toi @Christophe@ et aux autres je vais aller les remercier sur l'autre fil .


dj.run
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
158
Réponses
5
Affichages
310
Réponses
16
Affichages
913
Réponses
26
Affichages
2 K
Retour