code

code - VB/VBA/VBS - Programmation

Marsh Posté le 04-11-2007 à 08:51:51    

Bonjour a tous  
 
J’ai un code qui déprotège une feuille
 
ActiveSheet.Unprotect
    Rows("1:56" ).Select
    Selection.EntireRow.Hidden = False
 
si je me trompe de code j’ai une fenêtre  
visual basic erreur 1004 qui apparaît
 
hors je voudrais une fenêtre  qui me dise que le code et erroné
 
puis ouvre la fenêtre mot de passe pour un second essai
 
MERCI d'avoir pris du temps pour lire se message
 
 
AIGLON74

Reply

Marsh Posté le 04-11-2007 à 08:51:51   

Reply

Marsh Posté le 04-11-2007 à 22:52:36    

Fais une recherche dans l'aide sur "On Error".


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 05-11-2007 à 09:25:23    

Tu peux également faire un test sur err.number, et faire une boucle par rapport à ça je pense

Reply

Marsh Posté le 06-11-2007 à 01:35:43    

Effectivement c'est un peu des 2 :
 
juste avant la ligne de code qui peut faire planter, tu marques :
 
on error goto GestErr
 
et tu marques :
 
GestErr:
 
if err.number=1004 then
 
juste avant la ligne qui amène au msgbox (je suppose) ou au userform qui demande la saisie d'un code.
 
Et après cette ligne :
 
else
  msgbox "Erreur non connue"
end if

Reply

Marsh Posté le 06-11-2007 à 12:20:28    

Ouep, après, c'est des différences de conception du code, ceci dit, si c'est pour faire un test sur le err.number, je serais plutôt d'avis de faire

 

On Error Resume Next
    'parcelle de code qui pose problème
    If Err.Number = 1004 Then
        'traitement de ton erreur 1004
    Else
        'traitement normal
    End If
    On Error GoTo 0

 

ou encore, si tu veux traiter tout type d'erreur, et pas que la 1004, le faire "à l'envers"

 

   On Error Resume Next
    'parcelle de code qui pose problème
    If Err.Number = 0 Then
        'traitement normal
    Else
        'traitement en cas d'erreur
    End If
    On Error GoTo 0

 

Ceci dit, la méthode de AprilThe5th est toute aussi correcte :)

 

edit :

 

Hum, après relecture de ton problème, je trouve que c'est clairement une boucle qu'il te faudrait

 

   Do
        On Error GoTo 0
        On Error Resume Next
        'affichage de la fenêtre
    Loop While Err.Number <> 0
    On Error GoTo 0


Message édité par devil_k le 06-11-2007 à 12:25:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed