REDIMENSION des lignes et PROTECTION des feuilles

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
lSteph
Le #17522401
dim largeur
ou
dim largeur as variant

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

@+

On 14 oct, 10:27, Sunburn
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
---------------


Sunburn
Le #17522561
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 > 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
> ---------------




lSteph
Le #17523071
dans la ligne ou tu as Dim LARGEUR As Double
enlève le As Double

On 14 oct, 11:16, Sunburn
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 > > 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
> > ---------------


lSteph
Le #17523231
..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

@+
lSteph
Le #17524811
..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
dans la ligne ou tu as Dim LARGEUR As Double
enlève le As Double

On 14 oct, 11:16, 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 > > > 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
> > > ---------------


lSteph
Le #17524981
...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
..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
> dans la ligne ou tu as Dim LARGEUR As Double
> enlève le As Double

> On 14 oct, 11:16, 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 > > > > 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
> > > > ---------------


Sunburn
Le #17524971
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 > dans la ligne ou tu as Dim LARGEUR As Double
> enlève le As Double
>
> On 14 oct, 11:16, 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 > > > > 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
> > > > ---------------




lSteph
Le #17524951
Quel est le message erreur exact


On 14 oct, 15:01, 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 > > dans la ligne ou tu as Dim LARGEUR As Double
> > enlève le As Double

> > On 14 oct, 11:16, 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 > > > > > 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
> > > > > ---------------


Sunburn
Le #17525251
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 > 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 > > > dans la ligne ou tu as Dim LARGEUR As Double
> > > enlève le As Double
>
> > > On 14 oct, 11:16, 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 > > > > > > 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
> > > > > > ---------------




lSteph
Le #17525481
...et sans enlever le as double


On 14 oct, 15:26, 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 > > 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 > > > > dans la ligne ou tu as Dim LARGEUR As Double
> > > > enlève le As Double

> > > > On 14 oct, 11:16, 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 vari ant

> > > > > > @+

> > > > > > On 14 oct, 10:27, Sunburn > > > > > > > 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
> > > > > > > ---------------


Publicité
Poster une réponse
Anonyme