SpecialCells(xlCellTypeFormulas) ne fonctionne pas ?!
2 réponses
wlad69
Bonsoir,
J'utilise l'expression suivante pour s=E9lectionner toutes les cellules
contenant une formule
ActiveSheet.cells.SpecialCells(xlCellTypeFormulas).select
pour pouvoir ensuite les prot=E9ger.
Or ceci fonctionne sur environ 500 feuilles r=E9parties dans 90
classeurs, mais il y a une feuille pour laquelle cela ne fonctionne
pas.
Je vous ai mis un exemple http://www.cijoint.fr/cjlink.php?file=3Dcj200803/c=
ijX09LuIs.xls
avec une feuille pour laquelle =E7=E0 fonctionne (feuille 1) et pour
laquelle =E7=E0 ne fonctionne pas (feuille 2).
J'ai pass=E9 l'apr=E8s-midi et une partie de la soir=E9e sur ce probl=E8me..=
.
Je cale.
Merci de votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
eric.vermeulen.artas
On 18 mar, 23:45, wrote:
Bonsoir,
J'utilise l'expression suivante pour sélectionner toutes les cellules contenant une formule ActiveSheet.cells.SpecialCells(xlCellTypeFormulas).select pour pouvoir ensuite les protéger. Or ceci fonctionne sur environ 500 feuilles réparties dans 90 classeurs, mais il y a une feuille pour laquelle cela ne fonctionne pas. Je vous ai mis un exemplehttp://www.cijoint.fr/cjlink.php?file=cj200803/ cijX09LuIs.xls avec une feuille pour laquelle çà fonctionne (feuille 1) et pour laquelle çà ne fonctionne pas (feuille 2). J'ai passé l'après-midi et une partie de la soirée sur ce problème ... Je cale. Merci de votre aide.
Wlad69
Sur la feuille 2 j'ai essayé de réduire le nombre de ligne et de formules, j'ai alors testé avec ? activesheet.cells.SpecialCells(xlCellTypeFormulas).count bizarrement cela se met à ne plus fonctionner lorsque je dépasse les 10205 formules (soit environ 1540 lignes dans l'exemple en feuille 2). J'ai fait un essai avec une classeur vierge, et je n'ai pas rencontré cette limitation. j'ai mis plus de 60000 formules sur ma feuille et cela a fonctionné. Je n'y comprends rien...
On 18 mar, 23:45, wla...@gmail.com wrote:
Bonsoir,
J'utilise l'expression suivante pour sélectionner toutes les cellules
contenant une formule
ActiveSheet.cells.SpecialCells(xlCellTypeFormulas).select
pour pouvoir ensuite les protéger.
Or ceci fonctionne sur environ 500 feuilles réparties dans 90
classeurs, mais il y a une feuille pour laquelle cela ne fonctionne
pas.
Je vous ai mis un exemplehttp://www.cijoint.fr/cjlink.php?file=cj200803/ cijX09LuIs.xls
avec une feuille pour laquelle çà fonctionne (feuille 1) et pour
laquelle çà ne fonctionne pas (feuille 2).
J'ai passé l'après-midi et une partie de la soirée sur ce problème ...
Je cale.
Merci de votre aide.
Wlad69
Sur la feuille 2 j'ai essayé de réduire le nombre de ligne et de
formules, j'ai alors testé avec
? activesheet.cells.SpecialCells(xlCellTypeFormulas).count
bizarrement cela se met à ne plus fonctionner lorsque je dépasse les
10205 formules (soit environ 1540 lignes dans l'exemple en feuille 2).
J'ai fait un essai avec une classeur vierge, et je n'ai pas rencontré
cette limitation. j'ai mis plus de 60000 formules sur ma feuille et
cela a fonctionné.
Je n'y comprends rien...
J'utilise l'expression suivante pour sélectionner toutes les cellules contenant une formule ActiveSheet.cells.SpecialCells(xlCellTypeFormulas).select pour pouvoir ensuite les protéger. Or ceci fonctionne sur environ 500 feuilles réparties dans 90 classeurs, mais il y a une feuille pour laquelle cela ne fonctionne pas. Je vous ai mis un exemplehttp://www.cijoint.fr/cjlink.php?file=cj200803/ cijX09LuIs.xls avec une feuille pour laquelle çà fonctionne (feuille 1) et pour laquelle çà ne fonctionne pas (feuille 2). J'ai passé l'après-midi et une partie de la soirée sur ce problème ... Je cale. Merci de votre aide.
Wlad69
Sur la feuille 2 j'ai essayé de réduire le nombre de ligne et de formules, j'ai alors testé avec ? activesheet.cells.SpecialCells(xlCellTypeFormulas).count bizarrement cela se met à ne plus fonctionner lorsque je dépasse les 10205 formules (soit environ 1540 lignes dans l'exemple en feuille 2). J'ai fait un essai avec une classeur vierge, et je n'ai pas rencontré cette limitation. j'ai mis plus de 60000 formules sur ma feuille et cela a fonctionné. Je n'y comprends rien...
Wlad69
J'ai trouvé une solution de contournement, mais pas le pourquoi du comment. Pour contourné le problème j'utilise la macro suivante :
Sub Protege_Formules(Feuille As Worksheet) Dim i As Integer On Error Resume Next
With Feuille .Unprotect MOT_PASSE .Cells.Locked = False For i = 6 To 32 .Columns(i).SpecialCells(xlCellTypeFormulas).Locked = True Next i ' ligne qui ne fonctionne pas !? '.Cells.SpecialCells(xlCellTypeFormulas).Locked = True .EnableSelection = xlNoRestrictions .Protect MOT_PASSE End With
On Error GoTo 0
End Sub
MOT_PASSE est une constante globale Public Const MOT_PASSE As String = "tototiti"
Wlad69
J'ai trouvé une solution de contournement, mais pas le pourquoi du
comment.
Pour contourné le problème j'utilise la macro suivante :
Sub Protege_Formules(Feuille As Worksheet)
Dim i As Integer
On Error Resume Next
With Feuille
.Unprotect MOT_PASSE
.Cells.Locked = False
For i = 6 To 32
.Columns(i).SpecialCells(xlCellTypeFormulas).Locked = True
Next i
' ligne qui ne fonctionne pas !?
'.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
.EnableSelection = xlNoRestrictions
.Protect MOT_PASSE
End With
On Error GoTo 0
End Sub
MOT_PASSE est une constante globale
Public Const MOT_PASSE As String = "tototiti"
J'ai trouvé une solution de contournement, mais pas le pourquoi du comment. Pour contourné le problème j'utilise la macro suivante :
Sub Protege_Formules(Feuille As Worksheet) Dim i As Integer On Error Resume Next
With Feuille .Unprotect MOT_PASSE .Cells.Locked = False For i = 6 To 32 .Columns(i).SpecialCells(xlCellTypeFormulas).Locked = True Next i ' ligne qui ne fonctionne pas !? '.Cells.SpecialCells(xlCellTypeFormulas).Locked = True .EnableSelection = xlNoRestrictions .Protect MOT_PASSE End With
On Error GoTo 0
End Sub
MOT_PASSE est une constante globale Public Const MOT_PASSE As String = "tototiti"