VB6 Fonction MID

Résolu
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 5 déc. 2005 à 18:41
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre 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...

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 déc. 2005 à 19:19
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 déc. 2005 à 19:51
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]
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 déc. 2005 à 20:30
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 déc. 2005 à 20:31
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 déc. 2005 à 20:42
casy -> int(25) çà fait quoi?

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


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

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