Extraction chaîne de caractère :/ [Résolu]

cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 20 juin 2011 à 09:30 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 20 juin 2011 à 16:42
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 juin 2011 à 08:41
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de ucfoutu
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 20 juin 2011 à 09:40
0
Merci
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)
Commenter la réponse de cs_Jack
cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 20 juin 2011 à 10:42
0
Merci
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!
Commenter la réponse de cs_choupinoob
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 20 juin 2011 à 15:47
0
Merci
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
Commenter la réponse de cs_ShayW
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 20 juin 2011 à 15:49
0
Merci
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.
Commenter la réponse de cs_Jack
cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 21 juin 2011 à 08:27
0
Merci
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
Commenter la réponse de cs_choupinoob
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 21 juin 2011 à 08:37
0
Merci
Salut

As tu testé la les réponses données
Commenter la réponse de cs_ShayW
cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 21 juin 2011 à 08:44
0
Merci
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 ;)
Commenter la réponse de cs_choupinoob
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 juin 2011 à 08:46
0
Merci
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
Commenter la réponse de ucfoutu
cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 21 juin 2011 à 08:56
0
Merci
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 ! :)
Commenter la réponse de cs_choupinoob
cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 21 juin 2011 à 14:21
0
Merci
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
Commenter la réponse de cs_choupinoob
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 juin 2011 à 14:35
0
Merci
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
Commenter la réponse de ucfoutu
cs_choupinoob 27 Messages postés dimanche 25 janvier 2009Date d'inscription 27 juin 2011 Dernière intervention - 21 juin 2011 à 15:08
0
Merci
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
Commenter la réponse de cs_choupinoob
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 21 juin 2011 à 16:58
0
Merci
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
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.