ajustement hauteur de ligne avec certaines cellules protégées
4 réponses
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
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
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
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
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
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 !
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 <frederic.sigonneau@ouanadou.fr> wrote in message news:<ubPn3JbaEHA.2944@TK2MSFTNGP11.phx.gbl>...
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 !
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 !
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 !
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 <frederic.sigonneau@ouanadou.fr> wrote in message news:<ubPn3JbaEHA.2944@TK2MSFTNGP11.phx.gbl>...
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 !
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 !
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]
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 <frederic.sigonneau@ouanadou.fr> wrote in message news:<ubPn3JbaEHA.2944@TK2MSFTNGP11.phx.gbl>...
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]
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]