VB6 Fonction MID [Résolu]

Signaler
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 151 internautes nous ont dit merci ce mois-ci

Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
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
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
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
Statut
Membre
Dernière intervention
11 mars 2019
21
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
casy -> int(25) çà fait quoi?

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


Daniel
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
pareil !

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