Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 2019
-
2 juin 2006 à 15:40
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
8 juin 2006 à 00:19
Juste une petite question pour parfaire mes connaissance en
gestion d'erreur.
Donc pour gérer une erreur en VB il faut faire :
on error goto Truc 'Début de procédure
Exécution 'Instruction de la procédure
exit sub (ou function suivant le cas) 'Fin des instructions
donc quitte sans exécuter la gestion d'erreur (vue que il n'y à pas hu
d'erreur)
Truc: 'Balise de début de gestion
Gestion d'erreur 'Gestion de l'erreur
1)
Mais que se passe t'il si dans l'exécution une autre procédure/fonctio? Si j'ai
bien compris si cette procédure/fonction n'a pas de gestion d'erreur et quelle
rencontre une erreur alors c'est la gestion Truc (celle de la procédure appelante)
qui sera exécuter. Si par contre elle à une gestion d'erreur alors c'est cette
gestion d'erreur qui sera exécuter. Mais ensuite que se passe-t-il à la sortie
de ma procédure/fonction? La gestion truc se lance ou je contigu mon exécution
normalement?
2)
Dans une même procédure/fonction est t'il envisageable de faire plusieurs
gestion différente? Je m'explique. Je lance par exemple Excel puis avec j'ouvre
un document.
on error goto OuvertureExcelImpossible
Set MyXl = CreateObject("Excel.Application")
on error goto OuvertureFichierImpossible
MyXl.application.open ("Machin.xls")
exit sub
OuvertureExcelImpossible:
msgbox "Impossible d'ouvrir Excel"
exit sub
OuvertureFichierImpossible:
msgbox "Impossible d'ouvrir le fichier excel"
3)
Dans une exécution je met en place une gestion d'erreur je lance une procédure
(sans gestion d’erreur) qui ouvre Excel et je rencontre une erreur. Dans ce cas
je veux pouvoir fermer Excel dans ma gestion d'erreur. Comment je fais? Car si
je fais ce qui suit ca ne marche pas!
GestionErreur:
on error resum next 'Cas c'est pour ignorer les erreur
Set MyXl = GetObject(, "Excel.Application") 'Qui génère
une erreur si excel n'est pas ouvert
MyXl.application.exit
Dans ce cas une erreur apparait (si excel n'est pas ouvert) comme si je n'avais
pas de gestion (alors que j'ai mit l'instruction ignore les erreurs!)
Command je fais???
4)
Dans une procédure je met en place une gestion d'erreur et dans une fonction appeler
(par ma procédure de départ) l'instruction "on error goto 0"
apparait. Que ce passe t'il? Ma gestion est annuler ou cette instruction n'est
valide que pour cette fonction?
Bon je pense qu'avec cas je devrais être au point. Merci
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 2 juin 2006 à 17:44
3)
on error resum next 'Cas c'est pour ignorer les erreur
Set MyXl = GetObject(, "Excel.Application")
MyXl.application.exit
C'est bizarre. Ca fait deux erreur consécutives, mais je pense pas que
ça devrait poser problème... Par contre, l'algo n'est pas franchement
logique je trouve.
Moi, j'aurais fait ça :
on error goto suite
Set MyXl = GetObject(, "Excel.Application")
MyXl.application.exit
suite:
4) Le gesetionnaire d'erreur fonctionne très probablement comme les
gestionnaire d'exception des autres langages... Donc a priori, l'erreur
ne serait traitée que par le dernier On Error ... rencontré durant
l'execution (Celui de la routien la plus "basse").
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 3 juin 2006 à 02:09
Salut Polack !
Pour compléter le 2/, tu peux gérer plusieurs erreurs. A toi de malmener ton prog et de mettre des MsgBox pour connaitre les numeros d'erreurs, pour les gérer comme ceci :
On error GoTo GestionErreur
...Instructions...
Exit Sub
GestionErreur:
If Err.Number = 2 Then
Call Procédure1
ElseIf Err.Number = 7 Then
Call Procédure2
Else
MsgBox "Une erreur s'est produite !"
End If
Là j'ai pas d'exemple concrêt sur moi mais j'ai un prog ou je n'ai pas bloqué (va savoir pourquoi !!) la saisie de "texte" dans des texbox où tu mets l'heure et vu que j'ai des ânes qui me saisissent les infos, à coup sûr j'ai eu au lieu de l'horaire, des trucs style "heure inconnue" ou mon préféré : "je ne connais pas l'heure d'arivée") mais le truc c'est que mes données sont de type 'Integer' donc => malaise avec les string...
J'ai pas gérer le type car on m'avait filé le N° de l'erreur (et y'avait un autre problème en +) donc j'ai fais sur le principe que je t'ai donné.
Voilà, beaucoup de charabia pour pas grand chose mais ça faisait un moment qu'on t'avait pas vu, donc je me suis laché sur le clavier.
Allez, bon WE Polack !
@++
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règ
Vous n’avez pas trouvé la réponse que vous recherchez ?
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 5 juin 2006 à 10:30
Salut Mortalino. Merci de ta réponce. lol tes utilisateurs. Test la valeur des textbox au momand de la sortie (Private Sub CommandButton4_Exit(ByVal Cancel As MSForms.ReturnBoolean)) comme cas plus de "je ne connais pas l'heure d'arivée"
Bon j'ai les réponces à toutes mes question. Merci à tous Je suis bon pour la gestion d'erreur. Merci encors
Pour quand même répondre à [auteurdetail.aspx?ID=464943 rt15] je pense affectivement que ton code est mieu que le mien
'---------------------------------
on error goto suite
Set MyXl = GetObject(, "Excel.Application")
MyXl.application.exit
suite:
'---------------------------------
Merci
Bonne semaine à tous (même si une journée
pas payer, vous saviez que votre brut d'aujourd'hui part au impôt. Mais saviez
vous que votre patron est exonérer de charge patronal, donc votre patron
débourse 100% de votre brut au lieu de ~ 180% de votre brut, soit le brut pour
vous, et, 80% du brut en impôt. Cas profite vraiment au retraite???)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 8 juin 2006 à 00:19
Moi je m'en fiche, je suis travailleur "non posté", c'est à dire que j'ai le droit de récupérer cette journée (en rtt) et je suis quand même payé sur la base du férié.
@++
--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !