Probleme avec l'instruction Goto

Résolu
blackcatthc Messages postés 86 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 1 avril 2015 - 25 janv. 2007 à 22:27
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 28 janv. 2007 à 22:58
Slt

j'essaie de faire fonctionner l'instruction Goto avec une variable de cette facon :
 
   Public number As Integer

   number = 10
   Goto number
   10:
    text1 = "test"

mais apparament ca le fait pas trop. Est ce possible d'utilisé l'instruction Goto avec une variable ? sinon qu'elle autre méthode je peut uiliser

11 réponses

cs_caramelmou Messages postés 56 Date d'inscription jeudi 25 décembre 2003 Statut Membre Dernière intervention 23 avril 2008 3
25 janv. 2007 à 23:45
Comme te l'as dis jmfmarques, tu ne peux pas utiliser une variable pour definir une etiquette, mais tu as aussi la syntaxe


    Select Case n
    Case 1
...
    Case 2
...
    Case 3
...
...
    End Select
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 janv. 2007 à 22:34
Non, Blackcatthc, tu ne peux te référer ainsi à une étiquette.
Dans ce cas, par exemple, il te faut nécessairement spécifier 10 et pas une variable qui vaudrait 10.

tu peux par contre t'intéresser de près à :
On...GoSub, On...GoTo
qui te permettent presque de faire ce que tu cherches à faire..

Ceci dit : je te recommande très vivement de tout mettre en oeuvre (on y arrive) pour éviter ces GOTO, etc...
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
25 janv. 2007 à 22:37
Salut,
Goto (comme Gosub) est un héritage des vieux Basics.
Ces instructions sont à proscrire vb.
La seule utilisation possible de goto est On error goto (quoique la plupart du temps on peut ausi s'en passer).
Explique ce que tu veux faire et on te montrera que goto est inutile en vb6.
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
25 janv. 2007 à 22:48
Un exemple :

Ces 2 façons de faire fonctionnent en vb6 :

Mauvaise façon :
if mavar = 1 then goto etiq1
if mavar = 2 then goto etiq2
goto etiq3
etiq1:
...
goto etiq3
etiq2:
...
etiq3:
...

Bonne façon :
if mavar = 1 then
...
elseif mavar = 2 then
...
end if
0

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

Posez votre question
blackcatthc Messages postés 86 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 1 avril 2015
25 janv. 2007 à 23:35
oui dolphin j'avais pensé a utilisé if et elseif. mais dans mon cas ca enchenerait au moin une centaine de elsif qui se suivent et je ne sai pas trop, mais le temp que le pc regarde condition par condition  et arrive par exemple au numero 98 il va mettre un certain temp non?. mon programme ressemble a ca:

Goto number

1:
2:
3:
4:

100:

 Parce que j'ai besion que ce soit instantané d'ou le fait que je voulais utilisé Goto.
0
blackcatthc Messages postés 86 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 1 avril 2015
25 janv. 2007 à 23:42
Sinon je suis allé voir pour On Gosub On Goto jmfmarque. Entre cette instruction la et if, elseif qu'elle méthode  réponderait le plus rapidement
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 janv. 2007 à 06:21
Faire un enchaînement de 100 if, c'est que tu dois avoir un problème de conception sûrement !

Qu'es-tu censé testé dans tes 100 if ? Ne peux-tu remplacer ton approche impérative par une approche objet : un objet par condition, ce qui te ferai non plus 100 tests à faire, mais 100 petits objets qui ont leur comportement différent par exemple ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 janv. 2007 à 06:25
Je suis ok avec Caramelmou, c'est Select Case qui convient parfaitement :

    Public number As Integer

number = 10
Select Case number
    Case 10: text1 = "test"  ' si Number =
10
    Case 20: text1 = "test 2"  ' si Number =
20
    Case 30, 40: text1 = "test3"  ' si Number = 30 OU
40
    Case 41 To 50: text1 = "test 4"  ' si Number = une valeur
comprise entre 41 et 50
End Select

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 janv. 2007 à 08:11
Bonjour,

Un sommeil réparateur a réactivé mes réflexes.

Imagine,  Blackcatthc , que tu fasses plusieurs fonctions ou routines portant les mêmes premières lettres (toto par exemple) et se terminant par une chaine de caractères reprenant la valeur de ta variable.
Tu aurais ainsi les fonctions (par exemple):
toto1
toto2
.
.
tono10

etc.

.
Imagine maintenant que tu appelles la fonction correspondante à cette "concaténation" toton (ou n = 1, 2 ...etc...)

Ce serait la solution à ton problème, presqu'assurément ...
Or, il existe pour celà une fonction et son nom est CallByName
Vois ici comment elle peut être utilisée :
http://support.microsoft.com/kb/186143/fr
Bonne journée
0
blackcatthc Messages postés 86 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 1 avril 2015
28 janv. 2007 à 12:27
désolé je n'est pas pu me connecter ces derniers jours. La solution de caramelmou me convient parfaitement. c'est exactement ce que je voulais. Sinon je ne connais pas la fonction CallbyName jmfmarques. Je vais aussi jeter un coup d'oeil a ca. Merci 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 janv. 2007 à 22:58
Un Select Case dans le cas de conditions multiples est préférable à une série de IF, au moins pour la lecture du code.
Par contre, si tu donnais plus de détails sur ce que tu cherches à faire avec ces 100 conditions, peut-être que quelqu'un pourrait te suggérer une meilleure méthode.

MPi
0
Rejoignez-nous