Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/04/2007, 14h34   #1
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
Par défaut pourquoi on error goto ne fonctionne qu'une seule fois ?

bonjour tt le monde. je ne comprend pas pourquoi on error goto fonctionne une fois mais pas deux dans ce bout de code
Code :
1
2
3
4
5
6
7
8
Sub erreur()
ligne2:
On Error GoTo ligne1
Feuil2.Show
MsgBox "on ne dois jamais me voir"
ligne1:
GoTo ligne2
End Sub
userform1 n'existe pas. donc en théorie, je devrais me mettre en boucle
mais en fait, la premiere fois qu'il doit montrer usf1, la gestion d'erreur fonctionne, on ne vois pas le msgbox, et il va a ligne1, mais a la deuxieme, il s'arrete sur l'erreur. " erreur 424, objet requis
j'ai besoin de cette forme plutot que on error resume next parce que justement, je voudrais qu'il y ait d'autres ligne de code apres usf1.show (qui n'est qu'un exemple) au cas ou cette commande fonctionnerais sans erreur.
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2007, 15h23   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 857
Points : 16 857
Envoyer un message via Skype™ à bbil
tu peu remplacer .. ton Goto Ligne2 par :

bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2007, 15h46   #3
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
salut bbil
non, ça ça marche pas, j'ai une erreur 420 " reprise sans erreur "
et si j'écris
On Error Resume ligne1
là c'est une erreur de compil " attendu next"
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2007, 15h53   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 857
Points : 16 857
Envoyer un message via Skype™ à bbil
tiens voilà cela fonctionne même si la méthode n'est pas "terrible"...

Code :
1
2
3
4
5
6
7
8
9
10
 
Sub erreur()
ligne2:
On Error GoTo ligne1
UserForm1.Show
MsgBox "on ne dois jamais me voir"
Exit Sub
ligne1:
 If MsgBox("Erreur on continu ", vbYesNo) = vbYes Then Resume ligne2
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2007, 16h45   #5
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
non, désolé ça ne marche pas
voici le code exact
Code :
1
2
3
4
5
6
7
8
9
10
Sub déprotege()
For i = 1 To 3
On Error GoTo ligne1
Worksheets("stock" & i).Unprotect Password:="motdepasse"
MsgBox "mot de passe valide"
range ("a1") = "youpi")
ligne1:
MsgBox " mot de passe invalide"
Next i
End Sub
le but est de continuer la macro (youpi)si le mot de passe est valide.
en l'occurence "motdepasse" est faux, donc je dois aller a ligne1, puis passer a i = 2 et c'est a ce momment là que la gestion d'erreur ne fonctionne pas une deuxieme fois. j'ai lu l'aide et il semble qu'il y ait une histoire de desactivation du gestionnaire d'erreur que je ne comprend pas.
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2007, 16h55   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 857
Points : 16 857
Envoyer un message via Skype™ à bbil
ben je vois pas l'instruction resume..?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2007, 17h16   #7
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

Je n'ai pas bien compris le fonctionnement de ta macro mais tu peux tester:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Deprotege()
Dim i As Integer
 
On Error Resume Next
 
For i = 1 To 3
    Worksheets("stock" & i).Unprotect Password:="motdepasse"
 
    If Err.Number = 0 Then
        MsgBox "mot de passe valide"
        Worksheets("stock" & i).Range("A1") = "youpi"
        Else
        MsgBox " mot de passe invalide"
    End If
 
    Err.Clear
Next i
End Sub


http://silkyroad.developpez.com/VBA/GestionErreurs/


bon après midi
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/04/2007, 17h39   #8
Membre Expert
 
Inscription : novembre 2006
Messages : 1 465
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : novembre 2006
Messages : 1 465
Points : 1 411
Points : 1 411
bien, merci a tout les deux
la solution de silkyroad fonctionne, mais c'est space, je comprend pas vraiment, pourquoi il faut faire ça. j'ai essayé en utilisant seulement err.clear ou err.number = 0, mais rien a faire, au deuxieme passage, ça bloque.
bon dimanche
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h23.


 
 
 
 
Partenaires

Hébergement Web