VBA recherche valeur exacte

Bonjour à tous.

Voilà, je suis entrain de faire un petit logiciel de gestion de production avec création d'article, clients, fournisseur, réalisation de nomenclatures, etc...

Je suis déjà bien avancé, mais j'ai un petit problème. Lorsque que je rechercher un code article, toute les informations concernant cet article s'affiche bien, mais si je continue ce même code en rajoutant des chiffres (par ex je passe du code F01212 à F01212306), rien ne bouge, les informations restes tels quelles.

Avez vous une solution?

En vous remerciant d'avance.

Cordialement

Guillaume

Bonjour. Bienvenue sur le Forum

S'il s'agit du résultat de formules de recherche,

regarde si dans les options de calcul, "Automatique" est coché.

Cordialement

Merci pour ta réponse.

Petite info, c'est bien un langage vba quej'utilise et non des formule excel.

J'ai essayé dans option calcul, mais cela ne fonction pas.

Bonjour

Reste à envoyer ton fichier, ou un fichier exemple illustrant ton problème.

Cordialement

Voici un morceau de mon programme.

Lorsque que tu vas dans article, tape le code 4567 et toutes les informations vont s'afficher. Mais lorsque que tu continue ce même code, par exemple 456789, les informations ne bouge pas...

50octanlus.xlsm (71.83 Ko)

Bonjour,

Ta procédure n'efface pas les valeurs des textbox lorsque le code ne correspond plus. Si tu continue à taper une fois trouvé les valeurs demeurent jusqu'à ce qu'un autre code valide les fasse changer.

Bonne journée

Ferrand

Justement ce que je souhaite c'est que si je continue à taper, que les information s'efface et voir même aller plus loin que je reçois un message "Cet article n'existe pas".

Tu peux utiliser le Else de la condition pour vider tes TextBox.

Mais je ne te conseille pas d'utiliser cet emplacement pour un message: l'évènement Change se déclenche chaque fois que tu tapes ou effaces un caractère, tu serais inondé ! Le cas échéant, l'évènement Exit pourrait convenir.

Cordialement

Ferrand

Ok merci pour tes informations. Par contre je ne vois pas comment mettre la fonction else ou exit dans ma formule de recherche.

Cordialement.

Guillaume

Tu as une condition If Not vrech Is Nothing... qui est suivie des instructions dans le cas où la valeur a été trouvée. A la fin, il y a naturellement un End If.

Avant le End If tu peux intercaler un Else, en dessous duquel tu mets les commandes relatives au fait que la valeur n'est pas trouvée.

Il ne s'agit pas d'une fonction ou d'une instruction autonome. C'es le bloc d'instructions conditionnelles :

If [condition(s) [color=#0000FF]Then

[instructions si conditions vérifiées]

ElseIf [autre condition si la première n'est pas vérifiée] Then (optionnel, il peut y en avoir plusieurs)

[instructions si conditions alternatives vérifiées]

Else [aucune condition vérifiée] (optionnel, on peut ne rien faire)

[instructions dans le cas où aucune condition n'est vérifiée]

End If

Cordialement

Ferrand

Ok merci pour la solution. J'essaye ça demain et revient te dire ce qu'il en est.

Bonjour,

Ta formule devrais marcher, mais je n'arrive pas à changer que lorsque mon code est différent des code dans mon tableau, que la liste soit vide.

As-tu une solution...

Qu'as-tu mis ?

Bah après le "else", je ne vois pas quoi mettre.

j'ai essayé ça

else

Set vrech <> Sheets("article").Columns("A").Find(Me.TextBoxcodearticle.Value, LookIn:=xlValues, lookat:=xlWhole)

If Not vrech Is Nothing Then

TextBoxdesignation.Value = ""

Mais cela ne fonctionne pas.

Faut enlever tout ce qui a été mis dans le cas où la condition était vérifiée.

Excuse moi, mais là je ne comprend plus rien lol

Je ne comprends pas que tu ne comprennes pas :

tu as une portion de code qui, si condition vérifiée, sert tes TextBox

Dans ce bloc If...Then ... End If le cas condition non vérifiée ou plus vérifiée n'est pas prévu, donc on ne fait rien ! Et ce qui est dans les TextBox y reste.

L'instruction Else est faite pour le cas Sinon (condition non vérifiée) : Tu introduis donc Else à la suite (avant End If qui clôt le bloc d'instructions), et sous Else tu vides les TextBox remplis dans le sous-bloc juste au-dessus. Là où tu as mis une valeur extraite de ton tableau de données (avec = .Range(xxx)...) tu l'enlèves ( ="").

Cordialement

Ferrand

Merci Ferrand, ça fonctionne. Dsl j'ai eu dû mal à comprendre sur ce coup là lol.

J'aurai une autre question.

Lorsque je fais enregistrer mon formulaire dans une tableau excel, l'enregistrement ce fait avec la lettre de la colonne (ex: "Range("A" & L).Value = TextBoxcodearticle").

Mais lorsque que je fait une recherche de formulaire comme auparavant, la recherche se fait avec les chiffres correspondant au lettre (ex: TextBoxdesignation.Value = vrech.Offset(0, 1).Value).

Ce que je souhaiterai, c'est que ma recherche se fasse avec une lettre et non un chiffre. C'est plus simple lorsqu'il y a plusieurs colonnes.

Cordialement.

L'essentiel est de pointer la bonne cellule... La méthode importe peu, celle qui apparaît la plus pratique et économique dans chaque cas peut être retenue.

Généralement, en VBA on a une préférence chaque fois que possible pour pointer : Cells(ligne, colonne), car la manipulation d'éléments numériques est souvent plus simple et, avantage, permet une utilisation aisée par groupes contigüs au moyen de boucles.

Si par exemple tu nommes tes TextBox liés à cette fonction en lien avec la feuille, par un nom commun assorti d'un numéro d'ordre les ordonnant dans le même ordre que les colonnes de ta plage (ex.: tb1, tb2, ...), avec une boucle où i [compteur] varie de 1 à 10, n étant la ligne à prélever, une seule ligne de commande dans la boucle suffit alors : Controls("tb" & i ) = Cells(n, i+2).Value par exemple. Ce qui optimise ton code.

Cordialement

Ferrand

Ok merci pour tes informations, mais je souhaiterais connaître la solution à mon problème justement. Faire une recherche avec des lettre et non des chiffres...

Cordialement

Guillaume

Rechercher des sujets similaires à "vba recherche valeur exacte"