VBA message erreur inconnu !

VBA message erreur inconnu ! - Logiciels - Windows & Software

Marsh Posté le 04-01-2009 à 16:29:56    

Bonjour,  
 
Je travaille sur Excel 2003 et j'ai un soucis qui vient d'apparaître avec VBA.  
Mon fichier comporte une trentaine de feuilles et j'ai une macro permettant de protéger et déprotéger toutes ces feuilles :
 
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 27/10/2008 par PAPOU
'
 
rrr = InputBox("donnez le mot de passe svp" )
For Each ss In Application.Sheets
ss.Select
 
     ActiveWindow.DisplayHeadings = False
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=rrr
    ActiveSheet.EnableSelection = xlNoSelection
   ' ActiveSheet.Protect
   
    Next
         
  Sheets("Accueil" ).Select
     
End Sub
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 27/10/2008 par GRYSPEERT, Julien
'
 
'
 
rrr = InputBox("donnez le mot de passe svp" )
ActiveSheet.Unprotect (rrr)
For Each ss In Application.Sheets
ss.Select
 
     ActiveWindow.DisplayHeadings = False
     ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False, Password:=rrr
    ActiveSheet.EnableSelection = xlNoSelection
   ' ActiveSheet.UnProtect
 
    Next
     
     Sheets("Accueil" ).Select
     
End Sub
 
 
Ces macros fonctionnaient très bien jusqu'au moment où j'ai décidé de redimensionner les polices des cellules de certaines feuilles avec les lignes suivantes  
 
Private Sub Worksheet_Activate()
Range("A1:R1" ).Select
ActiveWindow.Zoom = True
Range("a1" ).Select
ActiveWindow.DisplayVerticalScrollBar = True
 
Range("B24:I33,L24:P34,B65:F68,L64:P71,B107:M117,B164:M170,B211:Q216,B227:M232,B287:I294,B335:J337,B380:L386" ).Select
    With Selection.Font
        .Name = "Arial"
        .Size = 16
       
    End With
    With Selection
        .HorizontalAlignment = xlCenter
 
    End With
     
    Range("a1" ).Select
 
End Sub
 
 
Et maintenant, lorsque je souhaite protéger le classeur tout v abien mais quand je veux le déprotéger, j'ai l'erreur :
Erreur d'éxecution 1004 : Impossible de définir la propriété Name de la classe font.
Le débogage surligne la ligne : .Name="Arial"
 
J'ai cherché une solution sur le net mais pas de réponse! Auriez-vous une solution ?
 
Merci bueacoup et BONNE ANNEE !
A+  

Reply

Marsh Posté le 04-01-2009 à 16:29:56   

Reply

Marsh Posté le 04-01-2009 à 20:26:20    

Normal.  
Dans le Activate de la feuille tu essaies de changer quelque chose qui est verrouillé. Et tu actives systématiquement tes feuilles pour manipuler leur protection( donc en passant par le activate).
 
Petit conseil : évite de sélectionner/activer systématiquement les objets que tu veux manipuler.
 
Dans tes boucles For each, supprime le ss.select, et remplace Activesheet par ss
 
Ca marche encore mieux (travail "à distance" en quelque sorte) car plus rapide et sans te promener à droite à gauche... :D

Message cité 1 fois
Message édité par Idoine le 04-01-2009 à 20:27:46
Reply

Marsh Posté le 05-01-2009 à 10:04:01    

Idoine a écrit :

Normal.  
Dans le Activate de la feuille tu essaies de changer quelque chose qui est verrouillé. Et tu actives systématiquement tes feuilles pour manipuler leur protection( donc en passant par le activate).
 
Petit conseil : évite de sélectionner/activer systématiquement les objets que tu veux manipuler.
 
Dans tes boucles For each, supprime le ss.select, et remplace Activesheet par ss
 
Ca marche encore mieux (travail "à distance" en quelque sorte) car plus rapide et sans te promener à droite à gauche... :D


 
 
Ca marche encore mieux (travail "à distance" en quelque sorte) car plus rapide et sans te promener à droite à gauche... :D [/quotemsg]
 
Merci pour ta réponse Idoine. Il est certain que la protection/déprotection est bien plus rapide.  
Néanmoins, le problème persiste sous une autre forme. Quand le classeur est protégé avec ces nouvelles lignes :

 
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 27/10/2008 par PAPOU
'
 
rrr = InputBox("donnez le mot de passe svp" )
For Each ss In Application.Sheets
 
 
     ActiveWindow.DisplayHeadings = False
     ss.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=rrr
    ss.EnableSelection = xlNoSelection
   ' ss.Protect
   
    Next
         
  Sheets("Accueil" ).Select
     
End Sub
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 27/10/2008 par GRYSPEERT, Julien
'
 
'
 
rrr = InputBox("donnez le mot de passe svp" )
 
For Each ss In Application.Sheets
 
 
     ActiveWindow.DisplayHeadings = False
     ss.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False, Password:=rrr
    ss.EnableSelection = xlNoSelection
   ' ss.UnProtect
 
    Next
     
     Sheets("Accueil" ).Select
     
End Sub
 
Et le problème survient à nouveau "Erreur d'éxecution 1004 : Impossible de définir la propriété Name de la classe font" avec un débogage surlignant la ligne : .Name="Arial"  dans chacune de mes feuilles.
 
Private Sub Worksheet_Activate()  
Range("A1:R1" ).Select  
ActiveWindow.Zoom = True  
Range("a1" ).Select  
ActiveWindow.DisplayVerticalScrollBar = True  
 
Range("B24:I33,L24:P34,B65:F68,L64:P71,B107:M117,B164:M170,B211:Q216,B227:M232,B287:I294,B335:J337,B380:L386" ).Select  
    With Selection.Font  
        .Name = "Arial"  
        .Size = 16  
       
    End With  
    With Selection  
        .HorizontalAlignment = xlCenter  
 
    End With  
     
    Range("a1" ).Select  
 
End Sub

 
HELP, c'est assez urgent  
 
Merci encore

Reply

Marsh Posté le 05-01-2009 à 12:53:27    

Le plus simple c'est de mettre un Activesheet.Unprotect avant le 1er With, et un Activesheet.Protect après le 2ème End With.


Message édité par Idoine le 05-01-2009 à 12:54:11
Reply

Marsh Posté le 05-01-2009 à 15:15:02    

Merci mais le problème c'est que la protection, je la déclenche avec une macro associé à une image en page d'accueil et toutes les feuilles se protègent en même temps et non indépendamment les unes des autres...
 
Merci  
Ripou

Reply

Marsh Posté le 05-01-2009 à 21:15:31    

moinschergratuit a écrit :

Merci mais le problème c'est que la protection, je la déclenche avec une macro associé à une image en page d'accueil et toutes les feuilles se protègent en même temps et non indépendamment les unes des autres...
 
Merci  
Ripou


 
Qqun ?

Reply

Marsh Posté le 09-01-2009 à 04:04:55    

Ben justement, avec ma méthode tu désactives et actives ponctuellement la protection juste au moment où tu en as besoin (au changement de la police).
Maintenant la question va se poser de l'intérêt de changer ta police à chaque activation de la feuille...

Reply

Sujets relatifs:

Leave a Replay

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