VB6 Fonction MID [Résolu]

cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 5 déc. 2005 à 18:41 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 5 déc. 2005 à 21:39
Salut J'ai un problème avec la fonction MID...

J'ai regardé sur MSDN et ça ne m'aide pas plus... Il y a quelque chose que je ne comprend pas...

J'inscrit dans un textbox le nombre 60,2550 et je veux fais un calcul avec le nombre 25

int1 = Left(txtTest.Text, 2) ' int1=60
int2 = Mid(txtTest.Text, 3) 'Ici ca ne fonctionne pas
int3 = Right(txtTest.Text, 2) 'int3=50

Ca me dit qu'il y a un type incompatible...

Est ce que j'utilise la bonne fonction ?????

Aidez moi... merci d'avance...
Afficher la suite 

7 réponses

cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 5 déc. 2005 à 19:19
+3
Utile
As-tu regardé à quoi étais égal Mid(txtTest.Text,3) ? et int2 est déclaré comment ?



Mid(txtTest.Text,3) te donne ",2550"

en supposant que int2 soit déclaré en integer, ",2550" n'est pas
reconnu comme un nombre, donc la conversion implicite que tu as écrit
(string vers integer) ne peut pas marché car type incompatible.



l'aide du MSDN est pourtant claire :

Mid(string, start[,
length])


Élément,
Description,
----

string,
<object id="alink_5" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Expression de chaîne dont sont extraits
les caractères à renvoyer. Si l'argument string contient une
valeur de type
<object id="alink_6" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Null, Null est renvoyé.,
----

start,
Donnée de type
<object id="alink_7" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>Long. Position du caractère dans
l'argument string qui marque le début de la partie à extraire. Si
la valeur de l'argument start est supérieure au nombre de
caractères contenus dans l'argument string, la fonction Mid
renvoie une chaîne de longueur nulle ("").,
----

length,
Facultatif. Donnée de type Variant (Long). Nombre
de caractères à renvoyer. Si l'argument length est omis ou si le
nombre de caractères du texte (y compris le caractère qui occupe la position
start), est inférieur à la valeur de cet argument, tous les
caractères à compter de la position start et jusqu'à la fin de la
chaîne sont renvoyés.



en gros pour avoir 25, il te faut écrire int2=Mid(txtTest.Text,4,2)


Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne p
Cette réponse vous a-t-elle aidé ?  
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 5 déc. 2005 à 19:51
0
Utile
int2 = int(mid$(txttest.text,4,2) normalement....

et casy a raison de te demander le type de int1/2/3.... pense à convetir le résultat avec int(...chaine.....) (si Integer...)

PCPT [AFCK]
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 5 déc. 2005 à 20:30
0
Utile
Attention, pcpt, c'est pas int() qu'il faut utilisé mais Cint()



Int ne renvoie que la partie entière du nombre tandis que Cint renvoi l'entier le plus proche (avec l'arondi réglementaire)

ex :

int(4.85) renvoie 4

cint(4.85) renvoie 5


et pour finir int est très pervers avec les nombres négatifs

Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne p
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 5 déc. 2005 à 20:31
0
Utile
si tu prenais la peine de regarder les réponses:

http://www.vbfrance.com/forum.v2.aspx?ID=612282







Text1.Text = "60.2550"

Rappel:

s = Text1.Text

Lg = Len(s) 'Lg=7
MsgBox Left$(s, Lg - 5) + Mid$(s, Lg - 3, 2) / 60 + Right$(s, 2) / 3600
Left$(s, Lg - 5) --> Left$(s, 2)

Mid$(s, Lg - 3, 2) --> Mid$(s, 4, 2)

Right$(s, 2) --> Right$(s, 2)





ou si tu préfères:

Dim lg As Integer

Dim int1 As Integer

Dim int2 As Integer

Dim int3 As Integer



lg = Len(Text1.Text)

int1 = Left$(Text1.Text, lg - 5)

int2 = Mid$(Text1.Text, lg - 3, 2)

int3 = Right$(Text1.Text, 2)



marche aussi pour d.mmss ou dd.mmss ou ddd.mmss




Daniel
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 5 déc. 2005 à 20:42
0
Utile
casy -> int(25) çà fait quoi?

pas grave.... sur le principe, pourquoi pas ;)
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 5 déc. 2005 à 21:34
0
Utile
ça incite pas à te répondre.


Daniel
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 5 déc. 2005 à 21:39
0
Utile
pareil !

et un merci aux "autres participants" ne prend pas beacoup plus de temps que la simple validation....

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.