VBA message erreur inconnu ! - Logiciels - Windows & Software
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...
Marsh Posté le 05-01-2009 à 10:04:01
Idoine a écrit : Normal. |
Ca marche encore mieux (travail "à distance" en quelque sorte) car plus rapide et sans te promener à droite à gauche... [/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
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.
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
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... |
Qqun ?
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...
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+