Garion27
Messages postés9Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 4 mars 2009
-
25 févr. 2009 à 10:44
Garion27
Messages postés9Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 4 mars 2009
-
26 févr. 2009 à 22:38
Bonjour à tous,
J'utilise une macro qui permet de vérrouiller les données automatiquement dès que l'on renregistre. Elle fonctionne très bien mais lorsque il y a une fusion dans le documents, il y a une erreur :
Erreur d'éxécution ' ': Impossible de définir la propiété Locked de la classe Range.
La macro est la suivante :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For Each c In Sheets("Feuil1").Range("A1:J1000")
If c <> "" Then
ActiveSheet.Unprotect Password:=""
c.Locked = True
ActiveSheet.Protect Password:="", DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End If
Next c
Garion27
Messages postés9Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 4 mars 2009 25 févr. 2009 à 16:38
Je suis touours bloqué et j'ai chercher sur d'autre sujet et apparamment c'est bien la fusion qui fait tout buguer. Je ne sais pas comment faire pour régler ce problême : peut-être nommé la cellule fusionné pour qu'elle soit pris en compte dans la macro thisworkbook. Mais bon je viens de débuté dans le vba et je ne maitrise pas trop cette progammation.
r1r2
Messages postés22Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention31 mars 2010 26 févr. 2009 à 10:22
Bonjour,
L'erreur vient peut-etre de la presence de cellules fusionnees.
Voici un exemple de code qui a des chances de fonctionner si c'est bien la cause de ton probleme :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveSheet.Unprotect Password:=""
For Each c In Sheets("Feuil1").Range("A1:J1000")
If c <> "" Then
If c.MergeCells Then
c.MergeArea.Locked = True
Else
c.Locked = True
End If
End If
Next
ActiveSheet.Protect Password:="", DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End Sub
Au passage, est-ce la feuille active ou "Feuil1" que tu veux traiter? Si c'est un autre onglet qui est actif que "Feuil1" lors de la sauvegarde, tu risques d'avoir des problemes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Garion27
Messages postés9Date d'inscriptionmercredi 25 février 2009StatutMembreDernière intervention 4 mars 2009 26 févr. 2009 à 22:38
Merci beaucoup r1r2, sa fonctionne très bien. Pour répondre à ta question, pour l'instant c'est la Feuil1 uniquement qui est gérer par la macro Mais j'avoue que je sais pas comment la mettre pour toutes les feuilles. Sinon est-ce que tu sais si dans la partie ou ont autorise les modifications des cellules vérrouillé, si c'est possible de rajouter la possibilité de fusionner les cellules d'à coter si elle est ou sont vide.