Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Choix de fichier, suite

0 views
Skip to first unread message

troll@enfer.fr LE TROLL

unread,
Dec 16, 2008, 5:32:52 AM12/16/08
to
Mais non !!!

Ça :

On Error Resume Next
Workbooks.Open Filename:="\\zaza\zz.xls"
If Err.Number <> 0 Then Workbooks.Open Filename:="c:\zaza\zz.xls"
isabelle
--------------

La seconde ligne va être exécutée, mais à cause de la première ligne,
s'il y a une erreur, on ne le saura jamais. Alors, certes, la troisième
ligne va s'exécuter, mais avec l'erreur s'il y en a une, donc ça ne va pas
renvoyer d'erreur, mais ça ne marchera pas davantage pour autant, suffit pas
de se mettre la tête dans le sable pour dire que, puisqu'on ne voit rien, il
n'y a rien (politique de l'autruche :o)
Et la troisième ligne, si <> 0, mais ce ne sera pas <> de 0 puisqu'on dit en
1ere ligne (valable pour la procédure) qu'on ignore si <> 0, ça interdit au
gestionnaire d'erreur de s'armer, j'en ai fait le test, voici :

Sub Command1_Click()
Dim p As Long
Dim ligne As String
ChDrive App.Path
ChDir App.Path
p = FreeFile
On Error Resume Next
Open "un.txt" For Input As p
If Err <> 0 Then Open "un.txt" For Input As p
reset
end
End Sub


Dans ce présent cas (testé), le fichier n'existe pas, donc erreur et
impossibilité de l'ouvrir, non trouvé... toutefois, si on met dans la
procédure en début on error resume next, et bien, il n'y aura jamais
d'erreur, mais ça ne marchera pas mieux pour autant puisque le fichier
n'existe pas, sauf (pire), on ne saura même pas pourquoi ça ne marche pas
!!!
Si on inhibe une erreur, comme c'est pour la procédure, elle ne se produira
plus jamais avec la même cause (preuve, mon bout de code), d'après toi if
err <> 0 marchera... ben non ! Car resume next, dit au gestionnaire de ne
pas broncher, donc de rester à 0, donc 2 ligne plus bas il sera à 0...

La bonne structure il me semble, est :

--------
sub
on error goto erreur
ouverture du fichier
utilisation
fermeture fichier
exit sub
erreur:
fermeture fichier
gestion en fonction de l'erreur
end sub
--------

On n'utilise qu'exceptionnellement "On error resume next", uniquement
dans un cas où on sait pourquoi il peut y avoir une erreur, et de ne pas en
tenir compte car c'est normal, bien que... une erreur normale non traitée
mais sautée, ce n'est en soi par très normal...


Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------


"isabelle" <i@v> a écrit dans le message de news:
OddexiVX...@TK2MSFTNGP03.phx.gbl...
|
|
| LE TROLL a écrit :
| > C'est pas que je veuille t'ennuyer Isabelle, mais tu écris :
| >
| > | On Error Resume Next
| > | Workbooks.Open Filename:="\\zaza\zz.xls"
| > | If Err.Number <> 0 Then Workbooks.Open Filename:="c:\zaza\zz.xls"
| >
| > L'erreur se produisant sur l'Open va être inhibée par ton "On error
resume
| > next", qui en fait dit au programme de ne pas tenir compte des erreurs
de la
| > procédure... Donc je suis lin d'être certain qu'ensuite tu aies une
erreur
| > différente de 0, qu'en penses-tu ?
| >
|
| s'il y a une erreur Err.Number sera automatiquement différente de 0
| si tu mets la commande Err.Clear Err.Number sera =0
|
| isabelle

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------


0 new messages