Probleme avec valeur numerique [Résolu]

- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 16 janv. 2013 à 18:57
Voici mon probleme. Quand j'entre une donnée dans ma texbox1 il doit afficher les données de la ligne trouvées de excel dans mes Label. mais le problème est que si la donnée que j'entre dans ma texbox comporte juste des chiffres sa ne fonctionne pas Ex: 123 (ne fonctionne pas) mes 123a ou 1a23 ou a123 (fonctionne)

Voici le code que j'ai sûrement fait une erreur

Private Sub tb_scan_Change()
i = 0
Me.ListBox1.Clear
For Each c In Range([B2], [B65000].End(xlUp))
If c.Offset(0, 0) Me.tb_scan Or Me.tb_scan "*" Then
Me.lb_code_produit = c.Offset(0, 1).Value
Me.lb_description = c.Offset(0, 2).Value
Me.lb_qty = c.Offset(0, 3).Value
Me.lb_poids = c.Offset(0, 5).Value


i = i + 1


End If
Next c



End Sub
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Regarde bien cette ligne de ton code :
If c.Offset(0, 0) Me.tb_scan Or Me.tb_scan "*" Then 

Aucune propriété utilisée n'y est définie, que ce soit pour la cellule ou pour la textbox !
Le risque est alors que même VBA ne sache plus exercer sa "tolérance", sauf lorsque la valeur évoquée contient un caractère non numérique qui supprime toute équivoque sur la première expression conditionnelle.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
J'apprendrai personnellement à te répondre lorsque tu aurtas bien voulu commencer, de ton côté, à ouvrir te discussions VBA dans la section Langages dérivés > VBA et non ici :
Forum > Visual Basic 6

Cela t'a pourtant déjà été dit dans ton autre discussion (laissé"e d'ailleurs sans suite).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
je dois demander mes question dans : Langages dérivés > VBA ? si oui DSL je ne le savais pas et pour l'autre discussion j'ai finalement réussi a trouvé comment fair
Commenter la réponse de maalxe
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
et pour l'autre discussion j'ai finalement réussi a trouvé comment fair
*
Alors :
1) - tu y retournes et y mets le code utilisé (c'est la moindre des chosers, chaque discussion n'ayant aucun sens sinon)
et
2) - tu la libères (un clic sur le tag "réponse acceptée")

Quant à la présente discussion (elle sera déplacée par un administrateur bienveillant) :
déjà :
1) demande-toi par quoi se lance l'évènement Change d'un textbox. Lire ce qu'est cet évènement dans ton aide VBA
2) demande-toi ce que peut bien être le décalage d'une cellule, de 0 lignes et de 0 colonne ! Ah oui : pour "marcher", cela marchera, mais ... (inutile)
3) apprends à systématiquement définir la propriété utilisée (tant en lecture qu'en écriture) plutôt que de laisser VBA exercer sa bienveillante tolérance !
exemple :
c "toto" s'écrit, si c est une cellule, c .value 0
4) A quoi te sert cette variable i que tu n'utilises pas ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
merci ! j'ai porté attention a ce don tu ma dit et voila ce que sa donne

Private Sub tb_scan_Change()

For Each c In Range([B2], [B65000].End(xlUp))


If c.Offset = CDbl(Me.tb_scan) Then

Me.lb_code_produit = c.Offset(0, 1).Value
Me.lb_description = c.Offset(0, 2).Value
Me.lb_qty = c.Offset(0, 3).Value
Me.lb_poids = c.Offset(0, 5).Value

Me.tb_scan.Text = Clear

End If

Next c

End Sub

Mes j'ai encord un problème...:( tout fonctionne me si j'ajoute la ligne me.tb_scan.text = clear un message d'erreur survien. Ce que j'éssais de fair est de vidé ma textbox une foie le produit scanné pour pouvoir en scanné un nouveau
Commenter la réponse de maalxe
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
C'est quoi, Clear, dans ton esprit ?
Où as-tu trouvé ou défini cette "constante" ?
A mins que ce ne soit une variable que tu as créée ? et où et comment et avec quelle valeur ?

Clear est par ailleurs un mot réservé de VBA et correspond à ... une méthode ... qui ne s'applique de surcroit pas à une textbox !

Il est important que tu commences à lire ton aide VBA (je te l'ai déjà dit, non ?). Cela t'évitera au moins d'écrire n'importe quoi, "au feeling" et au hasard ! Ouvre ton aide VBA sur le mot Clear !
Une textbox contient une chaîne vide. Une chaine vide = "".
Mais tu as alors forcément un autre problème là :
If c.Offset = CDbl(Me.tb_scan) Then
Car CDbl convertit en double une chaine der caractères représentant un numérique, ce qui ne saurait être le cas d'une chaîne vide.
Tu sais quoi, ami ?
Je vais maintenant te laisser seul car tu t'égares, n'écoute rien, perds ton temps et me fais, du coup, perdre le mien.
Tu n'a même pas été capable de comprendre ce que je t'ai dit de l'utilité de préciser la propriété utilisée !!! Ni même de comprendre la remarque faite à propos de Offset !
If c.Offset = CDbl(Me.tb_scan) Then
s'écrirait
If c .Value = CDbl(Me.tb_scan.text) then
Cette correction ne changera rien au fait que CDbl("") provoquerait une erreur puisque "" ne représente pas un numérique.
Tu ne peux (bis repetita) continuer ainsi, à tâtons, sans t'imprégner des notions de base les plus élémentaires ===>> A acquérir d'urgence dans ton aide VBA
Bonne chance.
D'autres accepteront peut-être de transformer en cours élémentaire VBA chaque question que tu poserais, chaque erreur basique que tu commettrais. Mais ce sera sans moi (vraiment désolé).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.