Extraction chaîne de caractère :/

Résolu
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011 - 20 juin 2011 à 09:30
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 21 juin 2011 à 16:58
Bonjour à tous.

Mon problème est le suivant, étant toujours débutante, j'essaye tant bien que mal de me renseigner et d'adapter des codes.

Ici je suis rendue à l'acquisition d'une chaîne de caractère transmise via le port série par un balance.

Je réceptionne dans ma textbox une valeur sous la forme suivante : XX.XXXKG, j'aimerait que cette valeur soit exploitable ensuite suivant des intervalles que j'ai prédéfini.

Je me doute que l'erreur vient du fait que l'affichage possède les lettres "KG", j'ai donc tenter de les supprimer de la manière suivante.

Soit :

If tampon = "KG" Then
tampon =" "
End if


Ou

tampon = replace (tampon, "KG", " ")


Mais ma textBox affiche toujours de la même manière.

En vous remerciant d'avance pour votre aide, j’espère avoir été claire :D

15 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 juin 2011 à 16:42
ou tout simplement :
Exemple :
toto = "1245.75KJ"
msgbox val(toto)



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2011 à 08:41
Tu développes bien sous VCBA ?
Si oui, je t'ai déjà répondu : utilisation de la fonction Val !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 juin 2011 à 09:40
Salut

Pas bien compris le sens de ta question.
"que cette valeur soit exploitable ensuite"
Exploitable ?
"suivant des intervalles que j'ai prédéfini"
Rien à voir avec le problème exposé

Si ton tampon ressemble à XX.XXXKG et que tu appliques la méthode Replace, tu vas obtenir "XX.XXX "
Mais que veux-tu obtenir ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011
20 juin 2011 à 10:42
Toutes mes excuses, étant nouvelle en Vba c'est un peu confus dans ma tête .

Je souhaite donc récupérer les valeurs envoyées par ma balance sous la forme
"XX.XXXKG" en supprimant le "KG", afin que celle ci soit considérer comme un nombre et de pouvoir les rentrer dans un tableau excel et leurs faire subir une série de calculs. (Comparaison, additions, moyennes, etc).

Par exemple si le poids reçu qui est ici une valeur envoyé est supérieur à 50, un label rouge s'allume. etc..

Et la méthode Replace ne marche pas ici pour supprimer "kg".

Merci beaucoup!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
20 juin 2011 à 15:47
Salut
dim p as double
dim s as string
s = textbox1.text
s = s.mid(1, len(s) - 2)
p = val(s)

if p > 50 then
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 juin 2011 à 15:49
Ok
Si si, Replace marche très bien.
Tu peux même écrire :
tampon = Replace(tampon, "KG", "")
(avec une chaine vide à la fin)

Maintenant, tout dépend de ce que que renferme ta variable "tampon".
Y a t-il un risque pour que cette variable contienne "XX.XXXKGXX.XXXKG", c'est à dire plusieurs mesures à la suite ? ou encore des données incomplètes ?
Là, c'est à toi de faire les tests sur ta chaine et de découper si besoin, voire mémoriser un contenu incomplet pour y ajouter les prochaines données.

Il faudra peut-être aussi remplacer le point par une virgule, pour être compatible avec les chiffres régionaux de Excel.

Ne sachant pas quel est ton problème, difficile de t'en dire plus : "ne marche pas" ne suffisant pas à décrire un problème.
0
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011
21 juin 2011 à 08:27
Bonjour à tous.

"ne marche pas" ne suffisant pas à décrire un problème.

J'avoue qu'en me relisant je ne suit pas des plus claire parfois.

Ce que j'obtient donc est une variable de poids sous la forme soit :
1) Dizaine unité. dixième centième millième KG
2) unité. dixième centième millième KG.

Je voudrais que les lettre KG soient supprimées à chaque fois car je récupère les données reçue dans une TextBox et je renvoie cette valeur reçue tout au long du programme (remplissage de cellule, moyenne, addition etc.)

Je vous joint un screen de mon écran afin de mieux comprendre si je me suis mal exprimée.

ICI :)

Donc, pour reprendre, la textobox est image de l'afficheur de ma balance, celle-ci renvoyant les données dans les cases du tableaux afin de leurs faire subir une suite d'opération, ici bloquée à cause de "KG

Je reste à votre disposition en cas d'autres questions.

Merci beaucoup
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 juin 2011 à 08:37
Salut

As tu testé la les réponses données
0
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011
21 juin 2011 à 08:44
Oui j'ai testé les réponses données, et j'utilise déjà la fonction Val depuis le départ, je doit probablement la placer au mauvais endroit car j'ai toujours le même résultat.

Voulez vous que je post mon code pour essayer de m'aider? Il est indenté cette fois ucfoutu ;)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2011 à 08:46
montre ton code

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011
21 juin 2011 à 08:56
Au temps pour moi, je suis sincèrement désolée, effectivement la fonction val marche très bien, j'utilisait juste la mauvaise variable pour le traitement (quelle boulette je fait!)

Je te remercie encore une fois ucfoutu! (Pour ta rapidité et ton efficacité!)


Réponse acceptée et encore merci à tous ! :)
0
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011
21 juin 2011 à 14:21
Mais du coup, cette fonction "Val" ne risque pas de m'enlever le "." non plus?

J'essaye de trouver l'erreur car mon afficheur affiche le bon poids, mais lorsqu'il est entré tel quel dans la cellule Excel, il est 1 000 fois plus grand (Ou, le point est supprimé^^)

Genre pour "3.412" à l'afficheur, ma cellule indique "3 412", ce qui n'avance pas non plus tellement l'affaire finalement^^

Merci de votre réponse même si le post est considéré comme résolu :D
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2011 à 14:35
Non.
Le point n'est pas un séparateur de milliers en numérique.
On peut toujours formater la cellule en texte et jouer avec replace, mais on va tout droit alors vers une usine à gaz si l'on doit ensuite utiliser la valeur de la cellule !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
cs_choupinoob Messages postés 27 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 27 juin 2011
21 juin 2011 à 15:08
Pourtant lorsque j'utilise comme conseillé la fonction "val", certes, je n'ai plus le "kg" qui me gênait, mais lorsque j'utilise la ligne suivante :

Range("B1").Offset(Nb_line, 0).Value = Ufrm_interface.TxtB_poids.Value

Ma cellule renvoie une valeur de (par exemple) 3 345 au lieu de 3,345 comme indiqué dans ma TextBox.

Cela va sans dire que Excel considère cela comme 3345 et "foire" tout mes calculs.

A ce moment la c'est pas possible de créer quelque chose me divisant chaques cellules d'une plage par 1000 afin de leurs rendre leurs valeurs d'origine? :D
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 juin 2011 à 16:58
Je ne sais que te dire, sinon que ça marche chez moi !

Cela doit probablement tenir au formatage de tes cellules.

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Rejoignez-nous