Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajustement hauteur de ligne avec certaines cellules protégées

4 réponses
Avatar
niqo
Bonjour,

J'ai trouvé la macro ci-dessous pour ajuster la hauteur des lignes sur
des cellules fusionnées. Cependant je voudrais l'utiliser sur une
feuille dont seules quelques cellules sont non verrouillées.
L'ajustement se fait correctement mais une fois la cellule quitté, je
ne peux plus me postionner dessus (j'ai décoché au préalable l'option
"selectionner les cellules vérrouillées" lorsque j'ai protégé ma
feuille). Il se passe que les cellules qui sont inclus dans la fusion
passe en format "vérrouillé" (je ne peux donc plus y accéder).
exemple : A1, A2, et A3 sont fusionnés - la feuille est protégée et
seules les cellules non vérrouillées sont accessibles.
lorsque j'exécute la macro, après changement de cellule, A2 et A3 sont
verrouillés donc je ne peux plus accéder à l'ensemble fusionné "A1 A2
et A3".

C'est un peu long comme question mais j'ai essaye d'etre précis.

Merci pour votre aide, Niqo

Sub AutoFitMergedCellRowHeight()
'Jim Rech, mpep

Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single

If ActiveCell.MergeCells Then
With ActiveCell.MergeArea
.WrapText = True 'enclenche le renvoi à la ligne automatique
(modif fs)
If .Rows.Count = 1 Then 'And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = ActiveCell.ColumnWidth
For Each CurrCell In Selection
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
Next
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If

End Sub

4 réponses

Avatar
Frédéric Sigonneau
Bonjour,

Juste une idée, non testée : ajoute avant le premier End If cette instruction
.Lockedúlse

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

J'ai trouvé la macro ci-dessous pour ajuster la hauteur des lignes sur
des cellules fusionnées. Cependant je voudrais l'utiliser sur une
feuille dont seules quelques cellules sont non verrouillées.
L'ajustement se fait correctement mais une fois la cellule quitté, je
ne peux plus me postionner dessus (j'ai décoché au préalable l'option
"selectionner les cellules vérrouillées" lorsque j'ai protégé ma
feuille). Il se passe que les cellules qui sont inclus dans la fusion
passe en format "vérrouillé" (je ne peux donc plus y accéder).
exemple : A1, A2, et A3 sont fusionnés - la feuille est protégée et
seules les cellules non vérrouillées sont accessibles.
lorsque j'exécute la macro, après changement de cellule, A2 et A3 sont
verrouillés donc je ne peux plus accéder à l'ensemble fusionné "A1 A2
et A3".

C'est un peu long comme question mais j'ai essaye d'etre précis.

Merci pour votre aide, Niqo

Sub AutoFitMergedCellRowHeight()
'Jim Rech, mpep

Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single

If ActiveCell.MergeCells Then
With ActiveCell.MergeArea
.WrapText = True 'enclenche le renvoi à la ligne automatique
(modif fs)
If .Rows.Count = 1 Then 'And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = ActiveCell.ColumnWidth
For Each CurrCell In Selection
MergedCellRgWidth = CurrCell.ColumnWidth + _
MergedCellRgWidth
Next
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If

End Sub


Avatar
niqo
Bonjour Frédéric,

j'ai essayé ton idée mais cela ne fonctionne pas. Le message d'erreur
étant le suivant :
"Impossible de définir la propriété Locked de la classe Range."

Merci de ton aide. Si jamais tu as une autre proposition, je suis
preneur.

Niqo

Frédéric Sigonneau wrote in message news:...
Bonjour,

Juste une idée, non testée : ajoute avant le premier End If cette instruction
.Lockedúlse

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Avatar
Frédéric Sigonneau
Bonjour,

Ce message d'erreur peut signifier que ta feuille est protégée. Si c'est le cas,
essaye de déprotéger avant la modif puis reprotéger après.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour Frédéric,

j'ai essayé ton idée mais cela ne fonctionne pas. Le message d'erreur
étant le suivant :
"Impossible de définir la propriété Locked de la classe Range."

Merci de ton aide. Si jamais tu as une autre proposition, je suis
preneur.

Niqo

Frédéric Sigonneau wrote in message news:...

Bonjour,

Juste une idée, non testée : ajoute avant le premier End If cette instruction
.Lockedúlse

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !




Avatar
niqo11
Re-bonjour Frédéric,

Après plusieurs tests il me semble que cette instruction ne puisse
être utilisée lorsque la feuille est protégée. En effet lorsque je
veux consulter le format de la cellule, l'onglet protection n'apparait
plus.

Ma protection n'est pas essentielle dans mon cas (mot de passe = ""),
elle me sert juste à ne pas écrire pas erreur dans les cellules
choisis.

J'ai ajouté ActiveSheet.Unprotect (au début) et ActiveSheet.protect (à
la fin) et ça passe. J'ai remarqué qu'il fallait que l'option
"déplacer la sélection après validation, sens : haut" soit valdié
pour que cela fonctionne mais je ne sais pas pourquoi.

Merci pour ta remarque qui m'a fait aboutir. ;-) Niqo



Frédéric Sigonneau wrote in message news:...
Bonjour,

Juste une idée, non testée : ajoute avant le premier End If cette instruction
.Lockedúlse

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]