J'ai un probl=E8me avec une gestion d'erreur. Il trouve 2=20
valeurs identiques et ensuite j'aimerai que le programme=20
ce stop pour que l'on puisse modifier les valeurs et le=20
relancer. Mais je n'arrive pas trouver le code pour=20
r=E9aliser cette op=E9ration.=20
Est ce que quelqu'un peut m'aider le code d=E9j=E0 ecrit ce=20
trouve juste en dessous. Merci beaucoup.
'gestionnaire d'erreur des directions identiques
=20
On Error GoTo identiquedirection
=20
For i =3D 1 To 3
=20
If tblcoordonnee(i, 3) =3D tblcoordonnee(-3 / 2 * i ^ 2=20
+ 11 / 2 * i - 2, 3) Then
=20
MsgBox "direction identique !!!",=20
vbOKCancel 'message d'erreur
=20
Me.txtdirection(i).BackColor =3D &HFF& 'mise en=20
surbrillance des valeurs identiques
Me.txtdirection(-3 / 2 * i ^ 2 + 11 / 2 * i -=20
2).BackColor =3D &HFF&
=20
End If
=20
Next i
=20
identiquedirection:
=20
'quel est le code pour l'arr=EAter et modifier les=20
valeurs?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred
Bonjour,
Pour sortir d'une fonction, routine, boucle ou d'un programme, il existe quelques instructions appropriées :
Sortie d'une boucle for-next : exit for Sortie d'une boucle do-loop : exit do Sortie d'une fonction : exit function Sortie d'une routine : exit sub Sortie d'un programme : end
Dans le cas présent, vous avez mis en place un gestionnaire d'erreur (on error ...)
Donc, d'un point de vue pratique, voici un exemple de code :
function Division(byval n as integer,byval m as integer) as double on error goto monerreur
Division=n/m ' ' --- On arrive à la fin de la fonction. Il n'y a pas eu d'erreur donc on peut sortir... ' exit function ' On sort de la fonction sans erreur...
' ' --- Si on arrive à ce niveau du programme, c'est qu'il y a eu une erreur... ' monerreur: if m=0 then msgbox "Division par zéro...",vbcritical,"Erreur" else msgbox "Une erreur est survenue avec m=" & m & ", n=" & n & " Détail : " & err & ", " & error,vbcritical,"Erreur" end if
end function
Maintenant, dans votre programme, vous avez défini une boucle et vous souhaitez sortir du programme afin d'en corriger les paramètres en cas d'anomalie :
if tblcoordonnee(i, 3) = tblcoordonnee(-3 / 2 * i ^ 2 + 11 / 2 * i - 2, 3) Then
Me.txtdirection(i).BackColor = &HFF& 'mise en surbrillance des valeurs identiques Me.txtdirection(-3 / 2 * i ^ 2 + 11 / 2 * i - 2).BackColor = &HFF& MsgBox "direction identique !!!", vbOKCancel 'message d'erreur me.txtdirection(i).setFocus ' On positionne le curseur dans la première zone pour corriger la valeur exit sub ' On sort du programme pour donner la main à l'utilisateur end if
Frédéric.
"Franck" a écrit dans le message de news:1c1a201c45219$3f97ceb0$ Hello,
J'ai un problème avec une gestion d'erreur. Il trouve 2 valeurs identiques et ensuite j'aimerai que le programme ce stop pour que l'on puisse modifier les valeurs et le relancer. Mais je n'arrive pas trouver le code pour réaliser cette opération. Est ce que quelqu'un peut m'aider le code déjà ecrit ce trouve juste en dessous. Merci beaucoup.
'gestionnaire d'erreur des directions identiques
On Error GoTo identiquedirection
For i = 1 To 3
If tblcoordonnee(i, 3) = tblcoordonnee(-3 / 2 * i ^ 2 + 11 / 2 * i - 2, 3) Then
Me.txtdirection(i).BackColor = &HFF& 'mise en surbrillance des valeurs identiques Me.txtdirection(-3 / 2 * i ^ 2 + 11 / 2 * i - 2).BackColor = &HFF&
End If
Next i
identiquedirection:
'quel est le code pour l'arrêter et modifier les valeurs?
Bonjour,
Pour sortir d'une fonction, routine, boucle ou d'un programme, il existe
quelques instructions appropriées :
Sortie d'une boucle for-next : exit for
Sortie d'une boucle do-loop : exit do
Sortie d'une fonction : exit function
Sortie d'une routine : exit sub
Sortie d'un programme : end
Dans le cas présent, vous avez mis en place un gestionnaire d'erreur (on
error ...)
Donc, d'un point de vue pratique, voici un exemple de code :
function Division(byval n as integer,byval m as integer) as double
on error goto monerreur
Division=n/m
'
' --- On arrive à la fin de la fonction. Il n'y a pas eu d'erreur donc on
peut sortir...
'
exit function ' On sort de la fonction sans erreur...
'
' --- Si on arrive à ce niveau du programme, c'est qu'il y a eu une
erreur...
'
monerreur:
if m=0 then
msgbox "Division par zéro...",vbcritical,"Erreur"
else
msgbox "Une erreur est survenue avec m=" & m & ", n=" & n & " Détail : "
& err & ", " & error,vbcritical,"Erreur"
end if
end function
Maintenant, dans votre programme, vous avez défini une boucle et vous
souhaitez sortir du programme afin d'en corriger les paramètres en cas
d'anomalie :
if tblcoordonnee(i, 3) = tblcoordonnee(-3 / 2 * i ^ 2 + 11 / 2 * i - 2, 3)
Then
Me.txtdirection(i).BackColor = &HFF& 'mise en surbrillance des
valeurs identiques
Me.txtdirection(-3 / 2 * i ^ 2 + 11 / 2 * i - 2).BackColor = &HFF&
MsgBox "direction identique !!!", vbOKCancel 'message d'erreur
me.txtdirection(i).setFocus ' On positionne le curseur dans la
première zone pour corriger la valeur
exit sub ' On sort du programme pour donner la main à
l'utilisateur
end if
Frédéric.
"Franck" <jacksch@evhr.net> a écrit dans le message de
news:1c1a201c45219$3f97ceb0$a101280a@phx.gbl...
Hello,
J'ai un problème avec une gestion d'erreur. Il trouve 2
valeurs identiques et ensuite j'aimerai que le programme
ce stop pour que l'on puisse modifier les valeurs et le
relancer. Mais je n'arrive pas trouver le code pour
réaliser cette opération.
Est ce que quelqu'un peut m'aider le code déjà ecrit ce
trouve juste en dessous. Merci beaucoup.
'gestionnaire d'erreur des directions identiques
On Error GoTo identiquedirection
For i = 1 To 3
If tblcoordonnee(i, 3) = tblcoordonnee(-3 / 2 * i ^ 2
+ 11 / 2 * i - 2, 3) Then
Pour sortir d'une fonction, routine, boucle ou d'un programme, il existe quelques instructions appropriées :
Sortie d'une boucle for-next : exit for Sortie d'une boucle do-loop : exit do Sortie d'une fonction : exit function Sortie d'une routine : exit sub Sortie d'un programme : end
Dans le cas présent, vous avez mis en place un gestionnaire d'erreur (on error ...)
Donc, d'un point de vue pratique, voici un exemple de code :
function Division(byval n as integer,byval m as integer) as double on error goto monerreur
Division=n/m ' ' --- On arrive à la fin de la fonction. Il n'y a pas eu d'erreur donc on peut sortir... ' exit function ' On sort de la fonction sans erreur...
' ' --- Si on arrive à ce niveau du programme, c'est qu'il y a eu une erreur... ' monerreur: if m=0 then msgbox "Division par zéro...",vbcritical,"Erreur" else msgbox "Une erreur est survenue avec m=" & m & ", n=" & n & " Détail : " & err & ", " & error,vbcritical,"Erreur" end if
end function
Maintenant, dans votre programme, vous avez défini une boucle et vous souhaitez sortir du programme afin d'en corriger les paramètres en cas d'anomalie :
if tblcoordonnee(i, 3) = tblcoordonnee(-3 / 2 * i ^ 2 + 11 / 2 * i - 2, 3) Then
Me.txtdirection(i).BackColor = &HFF& 'mise en surbrillance des valeurs identiques Me.txtdirection(-3 / 2 * i ^ 2 + 11 / 2 * i - 2).BackColor = &HFF& MsgBox "direction identique !!!", vbOKCancel 'message d'erreur me.txtdirection(i).setFocus ' On positionne le curseur dans la première zone pour corriger la valeur exit sub ' On sort du programme pour donner la main à l'utilisateur end if
Frédéric.
"Franck" a écrit dans le message de news:1c1a201c45219$3f97ceb0$ Hello,
J'ai un problème avec une gestion d'erreur. Il trouve 2 valeurs identiques et ensuite j'aimerai que le programme ce stop pour que l'on puisse modifier les valeurs et le relancer. Mais je n'arrive pas trouver le code pour réaliser cette opération. Est ce que quelqu'un peut m'aider le code déjà ecrit ce trouve juste en dessous. Merci beaucoup.
'gestionnaire d'erreur des directions identiques
On Error GoTo identiquedirection
For i = 1 To 3
If tblcoordonnee(i, 3) = tblcoordonnee(-3 / 2 * i ^ 2 + 11 / 2 * i - 2, 3) Then
Sortie d'un programme : décharger les feuilles, les objets, ... SURTOUT PAS END!
Voir cete fiche de la faq: http://faq.vb.free.fr/index.php?question
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Fred" a écrit dans le message de news:cb15pr$su9$
Sortie d'un programme : end
Fred
Bonjour,
Oui, bien sûr, pas de end directement mais end est une fonction VB qui termine un programme. Tout comme il faut fermer tout handle ouvert, libérer toute mémoire allouée, etc...
Par contre, je confirme bien que ça termine un programme correctement si les règles sont respectées. (La FAQ fournie vous donne quelques règles à suivre mais n'est pas exhaustive) De plus, tout le monde ne code pas forcément des programmes qu'avec des objets, des fenêtres, ... Il existe encore de nombreux programmes qui s'exploitent en ligne de commande et où cette instruction est fort pratique.
Merci François pour vos précisions.
Frédéric. "François Picalausa" a écrit dans le message de news:
Hello,
> Sortie d'un programme : end Sortie d'un programme : décharger les feuilles, les objets, ... SURTOUT PAS END!
Voir cete fiche de la faq: http://faq.vb.free.fr/index.php?question
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Fred" a écrit dans le message de news:cb15pr$su9$ > Sortie d'un programme : end
Bonjour,
Oui, bien sûr, pas de end directement mais end est une fonction VB qui
termine un programme. Tout comme il faut fermer tout handle ouvert, libérer
toute mémoire allouée, etc...
Par contre, je confirme bien que ça termine un programme correctement si les
règles sont respectées. (La FAQ fournie vous donne quelques règles à suivre
mais n'est pas exhaustive) De plus, tout le monde ne code pas forcément des
programmes qu'avec des objets, des fenêtres, ... Il existe encore de
nombreux programmes qui s'exploitent en ligne de commande et où cette
instruction est fort pratique.
Merci François pour vos précisions.
Frédéric.
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:eKhSmLfVEHA.2840@TK2MSFTNGP11.phx.gbl...
Hello,
> Sortie d'un programme : end
Sortie d'un programme : décharger les feuilles, les objets, ...
SURTOUT PAS END!
Voir cete fiche de la faq:
http://faq.vb.free.fr/index.php?question
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Fred" <frederic.puteaux@wanadoo.fr> a écrit dans le message de
news:cb15pr$su9$1@news-reader2.wanadoo.fr
> Sortie d'un programme : end
Oui, bien sûr, pas de end directement mais end est une fonction VB qui termine un programme. Tout comme il faut fermer tout handle ouvert, libérer toute mémoire allouée, etc...
Par contre, je confirme bien que ça termine un programme correctement si les règles sont respectées. (La FAQ fournie vous donne quelques règles à suivre mais n'est pas exhaustive) De plus, tout le monde ne code pas forcément des programmes qu'avec des objets, des fenêtres, ... Il existe encore de nombreux programmes qui s'exploitent en ligne de commande et où cette instruction est fort pratique.
Merci François pour vos précisions.
Frédéric. "François Picalausa" a écrit dans le message de news:
Hello,
> Sortie d'un programme : end Sortie d'un programme : décharger les feuilles, les objets, ... SURTOUT PAS END!
Voir cete fiche de la faq: http://faq.vb.free.fr/index.php?question
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Fred" a écrit dans le message de news:cb15pr$su9$ > Sortie d'un programme : end
François Picalausa
Hello,
end est une fonction VB qui termine un programme.
End est une instruction qui ferme tout sans crier gare et qui peut causer de sérieuses pertes de mémoires!
De plus, tout le monde ne code pas forcément des programmes qu'avec des objets, des fenêtres, ... Il existe encore de nombreux programmes qui s'exploitent en ligne de commande et où cette instruction est fort pratique.
Un programme en ligne de commande, à moins de faire du qbasic où cette instruction était celle à utiliser, se termine lorsque que le sub main (par exemple) se termine. Sinon, c'est quand les objets sont détruits. End n'est pas pratique, End est meurtrier!
<quote src="documentation de vb"> Note The End statement stops code execution abruptly, without invoking the Unload, QueryUnload, or Terminate event, or any other Visual Basic code. </quote>
Donc, si on avait un handle dans un module de classe, handle pas désalloué! Si on utilise des composants ActiveX, qui utilisent des handles en interne, idem...
<quote src="documentation de vb"> The End statement provides a way to force your program to halt. For normal termination of a Visual Basic program, you should unload all forms. Your program closes as soon as there are no other programs holding references to objects created from your public class modules and no code executing. </quote>
End n'as qu'un seul avantage: occuper sauvagement de la RAM!
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Fred" a écrit dans le message de news:cb8ngv$5l9$
Hello,
end est une fonction VB qui
termine un programme.
End est une instruction qui ferme tout sans crier gare et qui peut causer de
sérieuses pertes de mémoires!
De plus, tout le monde ne
code pas forcément des programmes qu'avec des objets, des fenêtres,
... Il existe encore de nombreux programmes qui s'exploitent en ligne
de commande et où cette instruction est fort pratique.
Un programme en ligne de commande, à moins de faire du qbasic où cette
instruction était celle à utiliser, se termine lorsque que le sub main (par
exemple) se termine. Sinon, c'est quand les objets sont détruits.
End n'est pas pratique, End est meurtrier!
<quote src="documentation de vb">
Note The End statement stops code execution abruptly, without invoking the
Unload, QueryUnload, or Terminate event, or any other Visual Basic code.
</quote>
Donc, si on avait un handle dans un module de classe, handle pas désalloué!
Si on utilise des composants ActiveX, qui utilisent des handles en interne,
idem...
<quote src="documentation de vb">
The End statement provides a way to force your program to halt. For normal
termination of a Visual Basic program, you should unload all forms. Your
program closes as soon as there are no other programs holding references to
objects created from your public class modules and no code executing.
</quote>
End n'as qu'un seul avantage: occuper sauvagement de la RAM!
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Fred" <frederic.puteaux@wanadoo.fr> a écrit dans le message de
news:cb8ngv$5l9$1@news-reader5.wanadoo.fr
End est une instruction qui ferme tout sans crier gare et qui peut causer de sérieuses pertes de mémoires!
De plus, tout le monde ne code pas forcément des programmes qu'avec des objets, des fenêtres, ... Il existe encore de nombreux programmes qui s'exploitent en ligne de commande et où cette instruction est fort pratique.
Un programme en ligne de commande, à moins de faire du qbasic où cette instruction était celle à utiliser, se termine lorsque que le sub main (par exemple) se termine. Sinon, c'est quand les objets sont détruits. End n'est pas pratique, End est meurtrier!
<quote src="documentation de vb"> Note The End statement stops code execution abruptly, without invoking the Unload, QueryUnload, or Terminate event, or any other Visual Basic code. </quote>
Donc, si on avait un handle dans un module de classe, handle pas désalloué! Si on utilise des composants ActiveX, qui utilisent des handles en interne, idem...
<quote src="documentation de vb"> The End statement provides a way to force your program to halt. For normal termination of a Visual Basic program, you should unload all forms. Your program closes as soon as there are no other programs holding references to objects created from your public class modules and no code executing. </quote>
End n'as qu'un seul avantage: occuper sauvagement de la RAM!
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Fred" a écrit dans le message de news:cb8ngv$5l9$