OVH Cloud OVH Cloud

SpecialCells(xlCellTypeFormulas) ne fonctionne pas ?!

2 réponses
Avatar
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.

Wlad69

2 réponses

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

Avatar
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