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

REDIMENSION des lignes et PROTECTION des feuilles

15 réponses
Avatar
Sunburn
Bonjour,
j'ai une macro qui me redimensionne la hauteur des lignes de
certaines cellules, de façon automatique, et je voudrais verouiller toutes
mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cellules
non verouillées.
Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
aux (****) quand je saisi du texte dans les cellules qui se redimensionnent
automatiquement.

Merci si vous pouvez m'aider..
Yann.

voilà ma macro pour la hauteur automatique des lignes
---------------
'hauteur des lignes automatique
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As Single
If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
For I = 1 To Target.MergeArea.Columns.Count
LARGEUR = LARGEUR + Target.ColumnWidth
Next I
Application.EnableEvents = False
With ActiveSheet.UsedRange
Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address).Offset(1)
AncLarg = c.ColumnWidth
c.ColumnWidth = LARGEUR '(*****************)
c.WrapText = True
c.Value = Target.Value
Target.EntireRow.RowHeight = c.Height
Var = c.Address
c.Clear
c.ColumnWidth = AncLarg
End With
Recalcul
Application.EnableEvents = True
End Sub
------------
et ma macro de verouillage :
-----------
' Protection automatique de toutes les feuilles d'un classeur
Sub PROTEGERFEUILLES()
Dim Nombre As Integer
Nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For I = 1 To Nombre
Worksheets(I).Protect , DrawingObjects:=True
ActiveSheet.EnableSelection = xlUnlockedCells
AllowFormattingRows = True
AllowFormattingColumns = True 'rajouté, mais ça sert à rien
Next I
End Sub
---------------

10 réponses

1 2
Avatar
lSteph
dim largeur
ou
dim largeur as variant

columnwidth est une propriété dont le type est en variant

@+

On 14 oct, 10:27, Sunburn wrote:
Bonjour,
j'ai une macro qui me redimensionne la hauteur des lignes de
certaines cellules, de façon automatique, et je voudrais verouiller tou tes
mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cel lules
non verouillées.
Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
aux (****) quand je saisi du texte dans les cellules qui se redimensionne nt
automatiquement.

Merci si vous pouvez m'aider..
Yann.

voilà ma macro pour la hauteur automatique des lignes
---------------
'hauteur des lignes automatique
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Rang e)
    Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As Single
    If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
    For I = 1 To Target.MergeArea.Columns.Count
        LARGEUR = LARGEUR + Target.ColumnWidth
    Next I
    Application.EnableEvents = False
    With ActiveSheet.UsedRange
    Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address).Offs et(1)
    AncLarg = c.ColumnWidth
    c.ColumnWidth = LARGEUR  '(*****************)
    c.WrapText = True
    c.Value = Target.Value
    Target.EntireRow.RowHeight = c.Height
    Var = c.Address
    c.Clear
    c.ColumnWidth = AncLarg
    End With
    Recalcul
    Application.EnableEvents = True
End Sub
------------
et ma macro de verouillage :
-----------
' Protection automatique de toutes les feuilles d'un classeur
Sub PROTEGERFEUILLES()
Dim Nombre As Integer
Nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For I = 1 To Nombre
Worksheets(I).Protect , DrawingObjects:=True
ActiveSheet.EnableSelection = xlUnlockedCells
AllowFormattingRows = True
AllowFormattingColumns = True 'rajouté, mais ça sert à rien
Next I
End Sub
---------------


Avatar
Sunburn
Bonjour,
merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai un peu de
mal.
Merci, Yann

"lSteph" a écrit :

dim largeur
ou
dim largeur as variant

columnwidth est une propriété dont le type est en variant

@+

On 14 oct, 10:27, Sunburn wrote:
> Bonjour,
> j'ai une macro qui me redimensionne la hauteur des lignes de
> certaines cellules, de façon automatique, et je voudrais verouiller toutes
> mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cellules
> non verouillées.
> Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
> aux (****) quand je saisi du texte dans les cellules qui se redimensionnent
> automatiquement.
>
> Merci si vous pouvez m'aider..
> Yann.
>
> voilà ma macro pour la hauteur automatique des lignes
> ---------------
> 'hauteur des lignes automatique
> Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
> Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As Single
> If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
> For I = 1 To Target.MergeArea.Columns.Count
> LARGEUR = LARGEUR + Target.ColumnWidth
> Next I
> Application.EnableEvents = False
> With ActiveSheet.UsedRange
> Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address).Offset(1)
> AncLarg = c.ColumnWidth
> c.ColumnWidth = LARGEUR '(*****************)
> c.WrapText = True
> c.Value = Target.Value
> Target.EntireRow.RowHeight = c.Height
> Var = c.Address
> c.Clear
> c.ColumnWidth = AncLarg
> End With
> Recalcul
> Application.EnableEvents = True
> End Sub
> ------------
> et ma macro de verouillage :
> -----------
> ' Protection automatique de toutes les feuilles d'un classeur
> Sub PROTEGERFEUILLES()
> Dim Nombre As Integer
> Nombre = ActiveWorkbook.Sheets.Count
> Application.ScreenUpdating = False
> For I = 1 To Nombre
> Worksheets(I).Protect , DrawingObjects:=True
> ActiveSheet.EnableSelection = xlUnlockedCells
> AllowFormattingRows = True
> AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> Next I
> End Sub
> ---------------




Avatar
lSteph
dans la ligne ou tu as Dim LARGEUR As Double
enlève le As Double

On 14 oct, 11:16, Sunburn wrote:
Bonjour,
merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai u n peu de
mal.
Merci, Yann

"lSteph" a écrit :

> dim largeur
> ou
> dim largeur as variant

> columnwidth est une propriété dont le type  est en variant

> @+

> On 14 oct, 10:27, Sunburn wrote:
> > Bonjour,
> > j'ai une macro qui me redimensionne la hauteur des lignes de
> > certaines cellules, de façon automatique, et je voudrais verouiller toutes
> > mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cellules
> > non verouillées.
> > Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
> > aux (****) quand je saisi du texte dans les cellules qui se redimensi onnent
> > automatiquement.

> > Merci si vous pouvez m'aider..
> > Yann.

> > voilà ma macro pour la hauteur automatique des lignes
> > ---------------
> > 'hauteur des lignes automatique
> > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
> >     Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As Single
> >     If Target.WrapText = False Or Target.Count > 1 Then Exit Su b
> >     For I = 1 To Target.MergeArea.Columns.Count
> >         LARGEUR = LARGEUR + Target.ColumnWidth
> >     Next I
> >     Application.EnableEvents = False
> >     With ActiveSheet.UsedRange
> >     Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address). Offset(1)
> >     AncLarg = c.ColumnWidth
> >     c.ColumnWidth = LARGEUR  '(*****************)
> >     c.WrapText = True
> >     c.Value = Target.Value
> >     Target.EntireRow.RowHeight = c.Height
> >     Var = c.Address
> >     c.Clear
> >     c.ColumnWidth = AncLarg
> >     End With
> >     Recalcul
> >     Application.EnableEvents = True
> > End Sub
> > ------------
> > et ma macro de verouillage :
> > -----------
> > ' Protection automatique de toutes les feuilles d'un classeur
> > Sub PROTEGERFEUILLES()
> > Dim Nombre As Integer
> > Nombre = ActiveWorkbook.Sheets.Count
> > Application.ScreenUpdating = False
> > For I = 1 To Nombre
> > Worksheets(I).Protect , DrawingObjects:=True
> > ActiveSheet.EnableSelection = xlUnlockedCells
> > AllowFormattingRows = True
> > AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> > Next I
> > End Sub
> > ---------------


Avatar
lSteph
..et tu risques d'avoir le même pb avec HAUTEUR
Attention Width et ColumnWidth n'ont pas la même unité (caractères,
points) ni le même type(long,variant)
de même si height et rowheight ont la même unité point, il n'ont pas
le même type.

Au fait tu sais qu'il y a une aide dans VBE et même que tu peux
sélectionner une instruction et appuyer sur F1 pour lire ce qui s'y
rapporte

@+
Avatar
lSteph
..oupsss Ca doit venir d'autre chose car
en fait malgré l'erreur qui apparait sur le type j'ai testé
l'emploi de as long ne semble pas provoquer d'erreur
et être géré correctement au moins dans ceci:

Sub relarg()
Dim largeur As Long
largeur = [a1].ColumnWidth
Columns(1).ColumnWidth = largeur + 4
End Sub

'...à suivre

--
lSteph
(tout confus :((

On 14 oct, 11:58, lSteph wrote:
dans la ligne ou tu as Dim LARGEUR As Double
enlève le As Double

On 14 oct, 11:16, Sunburn wrote:

> Bonjour,
> merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai un peu de
> mal.
> Merci, Yann

> "lSteph" a écrit :

> > dim largeur
> > ou
> > dim largeur as variant

> > columnwidth est une propriété dont le type  est en variant

> > @+

> > On 14 oct, 10:27, Sunburn wrote:
> > > Bonjour,
> > > j'ai une macro qui me redimensionne la hauteur des lignes de
> > > certaines cellules, de façon automatique, et je voudrais verouill er toutes
> > > mes feuilles, de façon que l'utilisateur ne puisse accéder qu'a ux cellules
> > > non verouillées.
> > > Donc j'ai ces divers macros (hauteur des lignes + verouillage), mai s ça bug
> > > aux (****) quand je saisi du texte dans les cellules qui se redimen sionnent
> > > automatiquement.

> > > Merci si vous pouvez m'aider..
> > > Yann.

> > > voilà ma macro pour la hauteur automatique des lignes
> > > ---------------
> > > 'hauteur des lignes automatique
> > > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target A s Range)
> > >     Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLa rg As Single
> > >     If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
> > >     For I = 1 To Target.MergeArea.Columns.Count
> > >         LARGEUR = LARGEUR + Target.ColumnWidth
> > >     Next I
> > >     Application.EnableEvents = False
> > >     With ActiveSheet.UsedRange
> > >     Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address ).Offset(1)
> > >     AncLarg = c.ColumnWidth
> > >     c.ColumnWidth = LARGEUR  '(*****************)
> > >     c.WrapText = True
> > >     c.Value = Target.Value
> > >     Target.EntireRow.RowHeight = c.Height
> > >     Var = c.Address
> > >     c.Clear
> > >     c.ColumnWidth = AncLarg
> > >     End With
> > >     Recalcul
> > >     Application.EnableEvents = True
> > > End Sub
> > > ------------
> > > et ma macro de verouillage :
> > > -----------
> > > ' Protection automatique de toutes les feuilles d'un classeur
> > > Sub PROTEGERFEUILLES()
> > > Dim Nombre As Integer
> > > Nombre = ActiveWorkbook.Sheets.Count
> > > Application.ScreenUpdating = False
> > > For I = 1 To Nombre
> > > Worksheets(I).Protect , DrawingObjects:=True
> > > ActiveSheet.EnableSelection = xlUnlockedCells
> > > AllowFormattingRows = True
> > > AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> > > Next I
> > > End Sub
> > > ---------------


Avatar
lSteph
...d'ailleurs ceci aussi marche qd même (même si je vois pas à quoi c a
peut servir)

Option Explicit
Public var As String
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As
Range)
Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As
Single, i As Long
If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
For i = 1 To Target.MergeArea.Columns.Count
LARGEUR = LARGEUR + Target.ColumnWidth
Next i
Application.EnableEvents = False
With ActiveSheet.UsedRange
Set c =
Range(.Cells(.Rows.Count, .Columns.Count).Address).Offset(1)
AncLarg = c.ColumnWidth
c.ColumnWidth = LARGEUR '(*****************)
MsgBox LARGEUR
c.WrapText = True
c.Value = Target.Value
Target.EntireRow.RowHeight = c.RowHeight
var = c.Address
c.Clear
c.ColumnWidth = AncLarg
End With
Calculate
Application.EnableEvents = True
End Sub


On 14 oct, 14:41, lSteph wrote:
..oupsss   Ca doit venir d'autre chose car
en fait malgré l'erreur qui apparait sur le type  j'ai testé
l'emploi de as long ne semble pas provoquer d'erreur
et être géré correctement au moins dans ceci:

Sub relarg()
Dim largeur As Long
largeur = [a1].ColumnWidth
Columns(1).ColumnWidth = largeur + 4
End Sub

'...à suivre

--
lSteph
(tout confus :((

On 14 oct, 11:58, lSteph wrote:

> dans la ligne ou tu as Dim LARGEUR As Double
> enlève le As Double

> On 14 oct, 11:16, Sunburn wrote:

> > Bonjour,
> > merci, mais je modifie quoi et où en fait ? car là comme ça, j' ai un peu de
> > mal.
> > Merci, Yann

> > "lSteph" a écrit :

> > > dim largeur
> > > ou
> > > dim largeur as variant

> > > columnwidth est une propriété dont le type  est en variant

> > > @+

> > > On 14 oct, 10:27, Sunburn wrote :
> > > > Bonjour,
> > > > j'ai une macro qui me redimensionne la hauteur des lignes de
> > > > certaines cellules, de façon automatique, et je voudrais veroui ller toutes
> > > > mes feuilles, de façon que l'utilisateur ne puisse accéder qu 'aux cellules
> > > > non verouillées.
> > > > Donc j'ai ces divers macros (hauteur des lignes + verouillage), m ais ça bug
> > > > aux (****) quand je saisi du texte dans les cellules qui se redim ensionnent
> > > > automatiquement.

> > > > Merci si vous pouvez m'aider..
> > > > Yann.

> > > > voilà ma macro pour la hauteur automatique des lignes
> > > > ---------------
> > > > 'hauteur des lignes automatique
> > > > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
> > > >     Dim c As Range, LARGEUR As Double, HAUTEUR As Single, Anc Larg As Single
> > > >     If Target.WrapText = False Or Target.Count > 1 Then Exi t Sub
> > > >     For I = 1 To Target.MergeArea.Columns.Count
> > > >         LARGEUR = LARGEUR + Target.ColumnWidth
> > > >     Next I
> > > >     Application.EnableEvents = False
> > > >     With ActiveSheet.UsedRange
> > > >     Set c = Range(.Cells(.Rows.Count, .Columns.Count).Addre ss).Offset(1)
> > > >     AncLarg = c.ColumnWidth
> > > >     c.ColumnWidth = LARGEUR  '(*****************)
> > > >     c.WrapText = True
> > > >     c.Value = Target.Value
> > > >     Target.EntireRow.RowHeight = c.Height
> > > >     Var = c.Address
> > > >     c.Clear
> > > >     c.ColumnWidth = AncLarg
> > > >     End With
> > > >     Recalcul
> > > >     Application.EnableEvents = True
> > > > End Sub
> > > > ------------
> > > > et ma macro de verouillage :
> > > > -----------
> > > > ' Protection automatique de toutes les feuilles d'un classeur
> > > > Sub PROTEGERFEUILLES()
> > > > Dim Nombre As Integer
> > > > Nombre = ActiveWorkbook.Sheets.Count
> > > > Application.ScreenUpdating = False
> > > > For I = 1 To Nombre
> > > > Worksheets(I).Protect , DrawingObjects:=True
> > > > ActiveSheet.EnableSelection = xlUnlockedCells
> > > > AllowFormattingRows = True
> > > > AllowFormattingColumns = True 'rajouté, mais ça sert à ri en
> > > > Next I
> > > > End Sub
> > > > ---------------


Avatar
Sunburn
Oui, ça bug toujours chez moi....
C'est compliqué cette histoire... mais ne soit pas confus .. :-))
Yann

"lSteph" a écrit :

...oupsss Ca doit venir d'autre chose car
en fait malgré l'erreur qui apparait sur le type j'ai testé
l'emploi de as long ne semble pas provoquer d'erreur
et être géré correctement au moins dans ceci:

Sub relarg()
Dim largeur As Long
largeur = [a1].ColumnWidth
Columns(1).ColumnWidth = largeur + 4
End Sub

'...à suivre

--
lSteph
(tout confus :((

On 14 oct, 11:58, lSteph wrote:
> dans la ligne ou tu as Dim LARGEUR As Double
> enlève le As Double
>
> On 14 oct, 11:16, Sunburn wrote:
>
> > Bonjour,
> > merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai un peu de
> > mal.
> > Merci, Yann
>
> > "lSteph" a écrit :
>
> > > dim largeur
> > > ou
> > > dim largeur as variant
>
> > > columnwidth est une propriété dont le type est en variant
>
> > > @+
>
> > > On 14 oct, 10:27, Sunburn wrote:
> > > > Bonjour,
> > > > j'ai une macro qui me redimensionne la hauteur des lignes de
> > > > certaines cellules, de façon automatique, et je voudrais verouiller toutes
> > > > mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cellules
> > > > non verouillées.
> > > > Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
> > > > aux (****) quand je saisi du texte dans les cellules qui se redimensionnent
> > > > automatiquement.
>
> > > > Merci si vous pouvez m'aider..
> > > > Yann.
>
> > > > voilà ma macro pour la hauteur automatique des lignes
> > > > ---------------
> > > > 'hauteur des lignes automatique
> > > > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
> > > > Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As Single
> > > > If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
> > > > For I = 1 To Target.MergeArea.Columns.Count
> > > > LARGEUR = LARGEUR + Target.ColumnWidth
> > > > Next I
> > > > Application.EnableEvents = False
> > > > With ActiveSheet.UsedRange
> > > > Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address).Offset(1)
> > > > AncLarg = c.ColumnWidth
> > > > c.ColumnWidth = LARGEUR '(*****************)
> > > > c.WrapText = True
> > > > c.Value = Target.Value
> > > > Target.EntireRow.RowHeight = c.Height
> > > > Var = c.Address
> > > > c.Clear
> > > > c.ColumnWidth = AncLarg
> > > > End With
> > > > Recalcul
> > > > Application.EnableEvents = True
> > > > End Sub
> > > > ------------
> > > > et ma macro de verouillage :
> > > > -----------
> > > > ' Protection automatique de toutes les feuilles d'un classeur
> > > > Sub PROTEGERFEUILLES()
> > > > Dim Nombre As Integer
> > > > Nombre = ActiveWorkbook.Sheets.Count
> > > > Application.ScreenUpdating = False
> > > > For I = 1 To Nombre
> > > > Worksheets(I).Protect , DrawingObjects:=True
> > > > ActiveSheet.EnableSelection = xlUnlockedCells
> > > > AllowFormattingRows = True
> > > > AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> > > > Next I
> > > > End Sub
> > > > ---------------




Avatar
lSteph
Quel est le message erreur exact


On 14 oct, 15:01, Sunburn wrote:
Oui, ça bug toujours chez moi....
C'est compliqué cette histoire... mais ne soit pas confus .. :-))
Yann

"lSteph" a écrit :

> ...oupsss   Ca doit venir d'autre chose car
> en fait malgré l'erreur qui apparait sur le type  j'ai testé
> l'emploi de as long ne semble pas provoquer d'erreur
> et être géré correctement au moins dans ceci:

> Sub relarg()
> Dim largeur As Long
> largeur = [a1].ColumnWidth
> Columns(1).ColumnWidth = largeur + 4
> End Sub

> '...à suivre

> --
> lSteph
> (tout confus :((

> On 14 oct, 11:58, lSteph wrote:
> > dans la ligne ou tu as Dim LARGEUR As Double
> > enlève le As Double

> > On 14 oct, 11:16, Sunburn wrote:

> > > Bonjour,
> > > merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai un peu de
> > > mal.
> > > Merci, Yann

> > > "lSteph" a écrit :

> > > > dim largeur
> > > > ou
> > > > dim largeur as variant

> > > > columnwidth est une propriété dont le type  est en variant

> > > > @+

> > > > On 14 oct, 10:27, Sunburn wro te:
> > > > > Bonjour,
> > > > > j'ai une macro qui me redimensionne la hauteur des lignes de
> > > > > certaines cellules, de façon automatique, et je voudrais vero uiller toutes
> > > > > mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cellules
> > > > > non verouillées.
> > > > > Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
> > > > > aux (****) quand je saisi du texte dans les cellules qui se red imensionnent
> > > > > automatiquement.

> > > > > Merci si vous pouvez m'aider..
> > > > > Yann.

> > > > > voilà ma macro pour la hauteur automatique des lignes
> > > > > ---------------
> > > > > 'hauteur des lignes automatique
> > > > > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Targ et As Range)
> > > > >     Dim c As Range, LARGEUR As Double, HAUTEUR As Single, A ncLarg As Single
> > > > >     If Target.WrapText = False Or Target.Count > 1 Then E xit Sub
> > > > >     For I = 1 To Target.MergeArea.Columns.Count
> > > > >         LARGEUR = LARGEUR + Target.ColumnWidth
> > > > >     Next I
> > > > >     Application.EnableEvents = False
> > > > >     With ActiveSheet.UsedRange
> > > > >     Set c = Range(.Cells(.Rows.Count, .Columns.Count).Add ress).Offset(1)
> > > > >     AncLarg = c.ColumnWidth
> > > > >     c.ColumnWidth = LARGEUR  '(*****************)
> > > > >     c.WrapText = True
> > > > >     c.Value = Target.Value
> > > > >     Target.EntireRow.RowHeight = c.Height
> > > > >     Var = c.Address
> > > > >     c.Clear
> > > > >     c.ColumnWidth = AncLarg
> > > > >     End With
> > > > >     Recalcul
> > > > >     Application.EnableEvents = True
> > > > > End Sub
> > > > > ------------
> > > > > et ma macro de verouillage :
> > > > > -----------
> > > > > ' Protection automatique de toutes les feuilles d'un classeur
> > > > > Sub PROTEGERFEUILLES()
> > > > > Dim Nombre As Integer
> > > > > Nombre = ActiveWorkbook.Sheets.Count
> > > > > Application.ScreenUpdating = False
> > > > > For I = 1 To Nombre
> > > > > Worksheets(I).Protect , DrawingObjects:=True
> > > > > ActiveSheet.EnableSelection = xlUnlockedCells
> > > > > AllowFormattingRows = True
> > > > > AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> > > > > Next I
> > > > > End Sub
> > > > > ---------------


Avatar
Sunburn
en enlevant uniquement le "as double", il me met une erreur : "erreur
d'éxecution 1004 : impossible de définir la propriété columnwidth de la
classe range"


"lSteph" a écrit :

Quel est le message erreur exact


On 14 oct, 15:01, Sunburn wrote:
> Oui, ça bug toujours chez moi....
> C'est compliqué cette histoire... mais ne soit pas confus .. :-))
> Yann
>
> "lSteph" a écrit :
>
> > ...oupsss Ca doit venir d'autre chose car
> > en fait malgré l'erreur qui apparait sur le type j'ai testé
> > l'emploi de as long ne semble pas provoquer d'erreur
> > et être géré correctement au moins dans ceci:
>
> > Sub relarg()
> > Dim largeur As Long
> > largeur = [a1].ColumnWidth
> > Columns(1).ColumnWidth = largeur + 4
> > End Sub
>
> > '...à suivre
>
> > --
> > lSteph
> > (tout confus :((
>
> > On 14 oct, 11:58, lSteph wrote:
> > > dans la ligne ou tu as Dim LARGEUR As Double
> > > enlève le As Double
>
> > > On 14 oct, 11:16, Sunburn wrote:
>
> > > > Bonjour,
> > > > merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai un peu de
> > > > mal.
> > > > Merci, Yann
>
> > > > "lSteph" a écrit :
>
> > > > > dim largeur
> > > > > ou
> > > > > dim largeur as variant
>
> > > > > columnwidth est une propriété dont le type est en variant
>
> > > > > @+
>
> > > > > On 14 oct, 10:27, Sunburn wrote:
> > > > > > Bonjour,
> > > > > > j'ai une macro qui me redimensionne la hauteur des lignes de
> > > > > > certaines cellules, de façon automatique, et je voudrais verouiller toutes
> > > > > > mes feuilles, de façon que l'utilisateur ne puisse accéder qu'aux cellules
> > > > > > non verouillées.
> > > > > > Donc j'ai ces divers macros (hauteur des lignes + verouillage), mais ça bug
> > > > > > aux (****) quand je saisi du texte dans les cellules qui se redimensionnent
> > > > > > automatiquement.
>
> > > > > > Merci si vous pouvez m'aider..
> > > > > > Yann.
>
> > > > > > voilà ma macro pour la hauteur automatique des lignes
> > > > > > ---------------
> > > > > > 'hauteur des lignes automatique
> > > > > > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
> > > > > > Dim c As Range, LARGEUR As Double, HAUTEUR As Single, AncLarg As Single
> > > > > > If Target.WrapText = False Or Target.Count > 1 Then Exit Sub
> > > > > > For I = 1 To Target.MergeArea.Columns.Count
> > > > > > LARGEUR = LARGEUR + Target.ColumnWidth
> > > > > > Next I
> > > > > > Application.EnableEvents = False
> > > > > > With ActiveSheet.UsedRange
> > > > > > Set c = Range(.Cells(.Rows.Count, .Columns.Count).Address).Offset(1)
> > > > > > AncLarg = c.ColumnWidth
> > > > > > c.ColumnWidth = LARGEUR '(*****************)
> > > > > > c.WrapText = True
> > > > > > c.Value = Target.Value
> > > > > > Target.EntireRow.RowHeight = c.Height
> > > > > > Var = c.Address
> > > > > > c.Clear
> > > > > > c.ColumnWidth = AncLarg
> > > > > > End With
> > > > > > Recalcul
> > > > > > Application.EnableEvents = True
> > > > > > End Sub
> > > > > > ------------
> > > > > > et ma macro de verouillage :
> > > > > > -----------
> > > > > > ' Protection automatique de toutes les feuilles d'un classeur
> > > > > > Sub PROTEGERFEUILLES()
> > > > > > Dim Nombre As Integer
> > > > > > Nombre = ActiveWorkbook.Sheets.Count
> > > > > > Application.ScreenUpdating = False
> > > > > > For I = 1 To Nombre
> > > > > > Worksheets(I).Protect , DrawingObjects:=True
> > > > > > ActiveSheet.EnableSelection = xlUnlockedCells
> > > > > > AllowFormattingRows = True
> > > > > > AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> > > > > > Next I
> > > > > > End Sub
> > > > > > ---------------




Avatar
lSteph
...et sans enlever le as double


On 14 oct, 15:26, Sunburn wrote:
en enlevant uniquement le "as double", il  me met une erreur : "erreur
d'éxecution 1004 : impossible de définir la propriété columnwidth de la
classe range"

"lSteph" a écrit :

> Quel est le message erreur exact

> On 14 oct, 15:01, Sunburn wrote:
> > Oui, ça bug toujours chez moi....
> > C'est compliqué cette histoire... mais ne soit pas confus .. :-))
> > Yann

> > "lSteph" a écrit :

> > > ...oupsss   Ca doit venir d'autre chose car
> > > en fait malgré l'erreur qui apparait sur le type  j'ai testé
> > > l'emploi de as long ne semble pas provoquer d'erreur
> > > et être géré correctement au moins dans ceci:

> > > Sub relarg()
> > > Dim largeur As Long
> > > largeur = [a1].ColumnWidth
> > > Columns(1).ColumnWidth = largeur + 4
> > > End Sub

> > > '...à suivre

> > > --
> > > lSteph
> > > (tout confus :((

> > > On 14 oct, 11:58, lSteph wrote:
> > > > dans la ligne ou tu as Dim LARGEUR As Double
> > > > enlève le As Double

> > > > On 14 oct, 11:16, Sunburn wro te:

> > > > > Bonjour,
> > > > > merci, mais je modifie quoi et où en fait ? car là comme ça, j'ai un peu de
> > > > > mal.
> > > > > Merci, Yann

> > > > > "lSteph" a écrit :

> > > > > > dim largeur
> > > > > > ou
> > > > > > dim largeur as variant

> > > > > > columnwidth est une propriété dont le type  est en vari ant

> > > > > > @+

> > > > > > On 14 oct, 10:27, Sunburn wrote:
> > > > > > > Bonjour,
> > > > > > > j'ai une macro qui me redimensionne la hauteur des lignes d e
> > > > > > > certaines cellules, de façon automatique, et je voudrais verouiller toutes
> > > > > > > mes feuilles, de façon que l'utilisateur ne puisse accé der qu'aux cellules
> > > > > > > non verouillées.
> > > > > > > Donc j'ai ces divers macros (hauteur des lignes + verouilla ge), mais ça bug
> > > > > > > aux (****) quand je saisi du texte dans les cellules qui se redimensionnent
> > > > > > > automatiquement.

> > > > > > > Merci si vous pouvez m'aider..
> > > > > > > Yann.

> > > > > > > voilà ma macro pour la hauteur automatique des lignes
> > > > > > > ---------------
> > > > > > > 'hauteur des lignes automatique
> > > > > > > Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
> > > > > > >     Dim c As Range, LARGEUR As Double, HAUTEUR As Singl e, AncLarg As Single
> > > > > > >     If Target.WrapText = False Or Target.Count > 1 Th en Exit Sub
> > > > > > >     For I = 1 To Target.MergeArea.Columns.Count
> > > > > > >         LARGEUR = LARGEUR + Target.ColumnWidth
> > > > > > >     Next I
> > > > > > >     Application.EnableEvents = False
> > > > > > >     With ActiveSheet.UsedRange
> > > > > > >     Set c = Range(.Cells(.Rows.Count, .Columns.Count) .Address).Offset(1)
> > > > > > >     AncLarg = c.ColumnWidth
> > > > > > >     c.ColumnWidth = LARGEUR  '(*****************)
> > > > > > >     c.WrapText = True
> > > > > > >     c.Value = Target.Value
> > > > > > >     Target.EntireRow.RowHeight = c.Height
> > > > > > >     Var = c.Address
> > > > > > >     c.Clear
> > > > > > >     c.ColumnWidth = AncLarg
> > > > > > >     End With
> > > > > > >     Recalcul
> > > > > > >     Application.EnableEvents = True
> > > > > > > End Sub
> > > > > > > ------------
> > > > > > > et ma macro de verouillage :
> > > > > > > -----------
> > > > > > > ' Protection automatique de toutes les feuilles d'un classe ur
> > > > > > > Sub PROTEGERFEUILLES()
> > > > > > > Dim Nombre As Integer
> > > > > > > Nombre = ActiveWorkbook.Sheets.Count
> > > > > > > Application.ScreenUpdating = False
> > > > > > > For I = 1 To Nombre
> > > > > > > Worksheets(I).Protect , DrawingObjects:=True
> > > > > > > ActiveSheet.EnableSelection = xlUnlockedCells
> > > > > > > AllowFormattingRows = True
> > > > > > > AllowFormattingColumns = True 'rajouté, mais ça sert à rien
> > > > > > > Next I
> > > > > > > End Sub
> > > > > > > ---------------


1 2