begin process at 2012 02 15 19:46:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

VBA

 > 

Convertir une trame de données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Convertir une trame de données

mercredi 3 mai 2006 à 16:50:05 | Convertir une trame de données

gilds5

Bonjour à tous
J'ai écris un programme sous VBA Excel qui récupère une trame de données à partir du port RS232.
Si tout allait pour le mieux dans le meilleur des mondes, voici la trame que je devrais récupérer:

1H|\^&|||GEM 3000^5.4.2     ^15800^^325670^2.4|||||||||20060503155232
P|1||101229584||MENEZ^GUY||19300327
O|1||62||||||||||||A
R|1|^^^TCO2|37.3|mmol/L||||||||20060503101628
R|2|^^^BE(B)|6.3|mmol/L
R|3|^^^BEecf|8.9|mmol/L
R|4|^^^HCO3-|35.2|mmol/L
R|5|^^^Hct|46|%
R|6|^^^SO2c|90|%
R|7|^^^THbc|14.3|g/dL
R|8|^^^pCO2|70|mmHg
R|9|^^^pH|7.31
R|10|^^^pO2|65|mmHg
R|11|^^^Temp|37.0|C
L|1

Or, comme chacun sait, rien ne va plus dans ce triste monde, et voila ce que j'obtiens (à peu près):

"1H|\^&|||GEM3000^5.4.2    ^15800^^325670^2.4|||||||||20060503155232P|1||101229584||MENEZ^GUY||19"
"300327 O|1||62||||||||||||A R|1|^^^TCO2|37.3|mmol/L||||||||20060503101628 R|2|^^^BE(B)|6.3|mmol/L R|"
"3|^^^BEecf|8.9|mmol/L R|4|^^^HCO3-|35.2|mm7B"
148
"2ol/L R|5|^^^Hct|46|% R|6|^^^SO2c|90|% R|7|^^^THbc|14.3|g/dL R|8|^^^pCO2|70|mmHg R|9|^^^pH|7.31 R|1"
"0|^^^pO2|65|mmHg R|11|^^^Temp|37.0|C L|1 E2"

En gros, les retours à la lignes ne sont pas reconnus par excel, et ils sont remplacés par des cractères bizares (petits carrés).
Alors si quelqu'un a une idée sur l'origine de ce problème, voire même une solution à ce problème, merci de me le faire savoir.

mercredi 3 mai 2006 à 16:55:53 | Re : Convertir une trame de données

Dalida

Membre Club
salut,

le petit carré signifie que la police utilisée ne reconnait pas le caractère.
qu'est-ce que tu fais de ta chaîne de caractères ?
si tu l'affiches dans une Cellule c'est sans doute un problème de format de cellule.


[ Dalida ]
pensez à indiquer le langage utilisé et sa version !
mercredi 3 mai 2006 à 17:08:20 | Re : Convertir une trame de données

demon_renard

salut,
les petits carrés correspondent au retour a la ligne, il devrait y avoir 2 petits carrés : le premier vaut 13 et le second 10 en décimal.
Il suffit de testé la valeur de chaqu'un des caractères qui compose t'a trame et dès que tu trouve ces 2 caractères qui se suivent tu les supprimes et tu fais un retour à la ligne manuelle
mercredi 3 mai 2006 à 17:36:32 | Re : Convertir une trame de données

gilds5

Merci pour ces réponses éclair!
En effet, j'affiche ma chaine dans une cellule et les petits carrés sont effectivement censé correnspondre à retour à la ligne.

Ceci dit, quel format de cellule faut-il donner pour qu'ils soient pris en compte?

Et comment tester chaque caractère de la chaine?

Autant de question auxquelles je brûle de savoir répondre, grâce notament à votre aide avisée .
Bref, si vous pouviez préciser un peu plus, je serais comblé.
Merci d'avance...

mercredi 3 mai 2006 à 18:12:41 | Re : Convertir une trame de données

ScSami

Membre Club
Utilise, d'une part, la MSDN (l'aide du VB/VBA dispo, normalement, et sur ton ordi et sur le net), et d'autre part, la fonction VB "Replace" (cf. l'aide pour les arguments de la fonction) qui permet de remplacer, dans une chaine, une suite de caractère par une autre.
Au lieu d'utiliser CHR(10) et CHR(13) utilise plutôt les constantes VB : vbCR, vb LF et, pour le retour à la ligne, vbNewLine.
Autrement dit, il faut faire une boucle de type DO/LOOP en remplacant tous les caractères zarbes (CR ou LF voir les deux - a toi de faire les tests...) par vbNewLIne jusqu'a ce qu'il n'y ait plus d'occurence trouvé (auquel cas on sort du DO/LOOP).
Tu peux aussi utiliser les instructions InStr qui se contente de chercher la première occurence... Si elle n'en trouve pas, je crois, de mémoire, qu'elle te renverra "0" ou un truc du genre.

Voici un code A VÉRIFIER (puisque fait de mémoire!!!) histoire de te mettre plus sur la voie :

DO While InStr(taChaine, vbCR)
 Replace taChaine, vbCR, vbNewLine
LOOP

Enjoy

( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
jeudi 4 mai 2006 à 08:59:41 | Re : Convertir une trame de données

demon_renard

Réponse acceptée !
salut
si tu veux du code je peux t'en donner mais en VB6, je ne connais pas la différence avec le VBA exel ^^'
Voila ce que je te propose:

'tachaine est un string contenant tes trames
Dim toto() As Integer
 
  ReDim toto(Len(tachaine))
  For i = 1 To Len(tachaine) - 1
    toto(i) = Asc(Mid(tachaine), i, 1)
  Next i
 
  For i = 1 To Len(tachaine) - 1
    If Chr(toto(i)) = 13 And Chr(toto(i + 1)) = 10 Then
      text1.Text = text1.Text & vbCrLf      'Va à la ligne
      i = i + 1
    Else
      text1.Text = text1.Text & Chr(toto(i))
    End If
  Next i

j'espère que ça pourra t'aider

jeudi 4 mai 2006 à 13:36:44 | Re : Convertir une trame de données

gilds5

Merci à vous.
Grace à vos réponse je m'en suis sorti.


Cette discussion est classée dans : données, convertir, trame, mmol, lr


Répondre à ce message

Sujets en rapport avec ce message

URGENT!! Ma base ne s'ouvre plus je deviens fou [ par Nitocris ] Lorsque j'essaye d'ouvrir ma baseun message d'erreur m'apparait."Cette base de données est dans un état inattendu; Microsoft Access ne peut pas l'ouvr URGENT!! Ma base ne s'ouvre plus je deviens fou [ par Nitocris ] Lorsque j'essaye d'ouvrir ma baseun message d'erreur m'apparait."Cette base de données est dans un état inattendu; Microsoft Access ne peut pas l'ouvr Convertir données num au format texte dans un format numérique [ par Melinda ] slt, j'ai effectuer l'importation d'un fichier .txt sous Excel.j'ai des données nuérique mais celles qui sont décimales sont représentées comme des do Convertir string a integer [ par scoder ] Bonjour, je fais transiter des données par l'intermédiaire de winsock, ce qui m'oblige à declarer ces données en string. Cependant certaines sont des convertir données hexa en caracteres [ par waspy59 ] bonjour,voila mon probleme: g un fichier txt de plusieures centaines de ko contenant des données hexa:ex:616261697373657200646570726573732C206C6F77657 macro permettant de convertir des données [ par lerishan ] Bonjour à toutes et tous!!!Je suis novice dans le domaine de la programmation c'est pour cela que je viens vous demander un peu d'aider.Dans le cadre Convertir l'encodage des données issues d'une base SQL pour retrouver les accents [ par samystyle ] Bonjour,je recupere avec un datareader des données texte d'une base sql,ce texte est ensuite transmis par mail,le probleme est que les caracteres avec conversion base de données 2007 en access 2000 [ par elnico16 ] bonjour, j'ai une base de données que j'ai converti en access2007 qui etait sous 97 et que je dois reconvertir en version antérieure sous access2000 m convertir en float [ par Hsaima1 ] salut, Dans mon application je dois insérer des données dans la base et d'introduit ces données à travers des TextBox or il ya des donnés de type flo convertir une chaine à un date [ par rima22 ] SVP comment convertir une chaine à une date ou bien une date à une chaine et avec CStr et CDate ne marche pas !! [^^sad2]


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales