VB6 Fonction MID [Résolu]

Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
- 5 déc. 2005 à 18:41 - Dernière réponse :
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 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

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
5 déc. 2005 à 19:19
3
Merci
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

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
5 déc. 2005 à 19:51
0
Merci
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]
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
5 déc. 2005 à 20:30
0
Merci
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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
5 déc. 2005 à 20:31
0
Merci
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
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
5 déc. 2005 à 20:42
0
Merci
casy -> int(25) çà fait quoi?

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


Daniel
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
5 déc. 2005 à 21:39
0
Merci
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.