Extraction dans une chaine

Salut, je cherche la formule exacte pour extraire le contenu apres le "+" et le mettre en hexa. Noter que la valeur apres le "+" est en base 10 et peux comporter 1 a 3 chiffres.

j'ai essayer ceci mais ca ne marche pas: =DECHEX(RIGHT (RC9,LEN(RC9)-13),2)

CLEAR @ 1245+25

CLEAR @ 1245+190

CLEAR @ 1245+8

Bonjour

Supprimes l'espace entre RIGHT et (RC9......

=DECHEX(RIGHT(RC9,LEN(RC9)-13),2)

ca fonctionne tres bien!

j'ai une autre formule pour extraire le nbre mais qui ne fonctionne pas lorsque j'ai un "." devant ce nbre. Dans ma syntaxe, le delais est exprime en msec, dont la valeur peut varie de .1msec a 6553 msec. Je multiplie par 10 afin de ne pas avoir de fraction, mais on me donne le message: ****** erreur d'execution "13" incomptatibilite de type ***** avec ma formule: =DECHEX(MID(RC9,8,5)*10,2)

DELAIS .1

DELAIS 10

DELAIS 150

DELAIS 6553

Bonsoir

Expliques un peu mieux

CAPUCIN a écrit :

Je multiplie par 10 afin de ne pas avoir de fraction

Les valeurs commencent à .1 (c'est à dire un 10ème de milliseconde) c'est ça ?

Donc multiplier par 10 donne pour

.1 multiplié par 10 = 1 Ms

.25 multiplié par 10 = 2.5 Ms --> Fraction

Mais pour 6553 Ms => multiplié par 10 = 65530 Ms ---> 65 secondes et 530 millisecondes (au départ on avait 6 secondes et 553 millisecondes)

En plus pour toutes valeurs supérieures a 255 tu n'auras jamais un nombre hexa sur 2 octets

A lire les précisions

J'explique: les valeurs sont exprimes en msec. donc, 6553 = 6.553 sec et .1 =100 usec.. Je dois pouvoir couvrir de 100 usec a environ 6 sec, c'est ce qui explique le "point.

J'aurais du te dire qu'il n'y aura toujours qu'un seul chiffre apres le point, lorsqu'il y aura un point.

La multiplication par 10 ca permet de ce debarasser du point car le resultat sera traite par une routine "delais", je ne veux vraiment pas avoir de fraction la dedans. Ma routine assembleur en tient compte donc si j'ecris DELAIS 6000, c'est vraiment 6 secondes de delais que j'obtiendrai a la fin.

Par ailleur, je ne mettrai jamais plus que 6553, donc ce nbre X 10 ne depasse pas 16 bits (2 octets =65536 max).

Donc, le resultat dois etre sur 2 octets (16 bits) ex. A03B, 003C ...

Je vais par la suite spliter le resultat pour avoir 8 bits dans une cellule et l'autre 8 bits dans l'autre cellule.

exemples: RESULTAT ATTENDU:

DELAIS .1 0001

DELAIS .5 0005

DELAIS 1 000A

DELAIS 10 0064

DELAIS 100 03E8

DELAIS 6000 EA60

DELAIS 6553 FFFA


Ce qu'il faudrais que tu retienne je pense , c'est que ma formule n'aime pas traite la string lorsqu'elle a un point.

Bonsoir

Alors essayes cette formule

=DECHEX(SUBSTITUTE(MID(RC9,8,5),""."","","")*10,4)

Je n'arrive pas a extraire les octets, un a la fois. Faut-il prendre mid? ex: si le resultat est A08D, comment puis-je recuperer A0.

=DECHEX(SUBSTITUTE(MID(RC9,8,5),""."","","")*10,4)

Bonsoir

Pour la partie gauche A0

=Left("A08D",2)

Pour la partie droite 8D

=Right("A08D",2)

ou

=Mid("A08D",3)

Est-ce que je peux remplacer A08D par notre formule, si je la met entre des virgules: ?

=Right("A08D",2)

= Right("DECHEX(SUBSTITUTE(MID(RC9,8,5),""."","","")*10,4)",2)

Bonjour

Oui mais pas de guillemets

=Right(DECHEX(SUBSTITUTE(MID(RC9,8,5),""."","","")*10,4),2)

j'ai essaye plein de choses mais je ne vois pas ce qui cloche. Peux-tu verifier que la formule genere bien un seul octet. Je t'envoi une version de mon projet. Les instructions sont sur la feuille.

Merci!

13capucin-v-47.zip (279.51 Ko)

Bonjour

Ton fichier est trop énorme

Remplaces la formule en case AT730 par celle-ci

'=RIGHT(DECHEX(SUBSTITUTE(MID(RC9,8,4),".",",")*10,4),2)

Les guillemets ne sont pas doublés

GOOD!

quel est la modification a faire dans la formule pour maintenant recuperer l'autre octet.

Par exemple si on a B8C5, en ce moment on recupere C5, alors comment recuperer B8?

Bonjour

dans le même style

En cellule AU730

'=LEFT(DECHEX(SUBSTITUTE(MID(RC9,8,4),".",",")*10,4),2)

Ca marche drolement bien, merci Banzai!

Je ferme le post.

Rechercher des sujets similaires à "extraction chaine"