Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
749 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  VBA message erreur inconnu !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA message erreur inconnu !

n°2830307
moinscherg​ratuit
Posté le 04-01-2009 à 16:29:56  profilanswer
 

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+  

mood
Publicité
Posté le 04-01-2009 à 16:29:56  profilanswer
 

n°2830359
Idoine
Posté le 04-01-2009 à 20:26:20  profilanswer
 

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
n°2830440
moinscherg​ratuit
Posté le 05-01-2009 à 10:04:01  profilanswer
 

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

n°2830468
Idoine
Posté le 05-01-2009 à 12:53:27  profilanswer
 

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
n°2830497
moinscherg​ratuit
Posté le 05-01-2009 à 15:15:02  profilanswer
 

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

n°2830605
moinscherg​ratuit
Posté le 05-01-2009 à 21:15:31  profilanswer
 

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 ?

n°2831381
Idoine
Posté le 09-01-2009 à 04:04:55  profilanswer
 

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...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  VBA message erreur inconnu !

 

Sujets relatifs
Erreur de Sauvegarde avec Cloneur ExpertPic du disque dur [AKA problème inconnu]
erreur de capacité disque xpPb de réseau & message d'erreur sur plusieurs PC
Erreur C++ en parcourant une image acronisVBA - Faire disparaître barre outils
formatage par erreurMessage d'erreur...
Plus de sujets relatifs à : VBA message erreur inconnu !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR