Voile je suis entrain de faire une feuille excel. Suivant le contenu
des premi=E8res celulles de ma ligne, je vais vider certaines celulles,
y changer la couleut et les bloquer pour que l'on ne puisse pas les
modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target.Column =3D 2 Or Target.Column =3D 3 Or Target.Column =3D 4 Th=
en
If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >=3D 2
Then
If (Cells(Target.Row, 2).Value <> "DIF") And
(Cells(Target.Row, 3).Value =3D "E") Then
With Range("G" & Target.Row & ":G" & Target.Row)
.Locked =3D False
.Interior.ColorIndex =3D 15
.ClearContents
.Locked =3D True
End With
End If
End If
End If
ActiveSheet.Protect
ActiveSheet.EnableSelection =3D xlUnlockedCells
End Sub
Si j'enl=E8ve tout syst=E8me de protection, ma macro fonctionne
parfaitement. Par contre si je prot=E8ge ma feuille, il me bloque
toujours juste apr=E8s le ClearContents. Si j'enl=E8ve le ClearContents
tout fonctionne hormis que le contenu de ma cellule est toujours l=E0.
Voile je suis entrain de faire une feuille excel. Suivant le contenu des premières celulles de ma ligne, je vais vider certaines celulles, y changer la couleut et les bloquer pour que l'on ne puisse pas les modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then If (Cells(Target.Row, 2).Value <> "DIF") And (Cells(Target.Row, 3).Value = "E") Then With Range("G" & Target.Row & ":G" & Target.Row) .Locked = False .Interior.ColorIndex = 15 .ClearContents .Locked = True End With End If End If End If ActiveSheet.Protect ActiveSheet.EnableSelection = xlUnlockedCells End Sub
Si j'enlève tout système de protection, ma macro fonctionne parfaitement. Par contre si je protège ma feuille, il me bloque toujours juste après le ClearContents. Si j'enlève le ClearContents tout fonctionne hormis que le contenu de ma cellule est toujours là.
Si quelqu'un peut m'aider.
Merci d'avance.
Bonjour Arno,
Si tu vides tu changes donc puisque c'est un Worksheet_change
désactiver les évennements et les réactiver ensuite
...
"Arno" <boulets@gmail.com> a écrit dans le message de news:
1123599811.625524.247940@g14g2000cwa.googlegroups.com...
Salut à tous,
Voile je suis entrain de faire une feuille excel. Suivant le contenu
des premières celulles de ma ligne, je vais vider certaines celulles,
y changer la couleut et les bloquer pour que l'on ne puisse pas les
modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then
If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2
Then
If (Cells(Target.Row, 2).Value <> "DIF") And
(Cells(Target.Row, 3).Value = "E") Then
With Range("G" & Target.Row & ":G" & Target.Row)
.Locked = False
.Interior.ColorIndex = 15
.ClearContents
.Locked = True
End With
End If
End If
End If
ActiveSheet.Protect
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
Si j'enlève tout système de protection, ma macro fonctionne
parfaitement. Par contre si je protège ma feuille, il me bloque
toujours juste après le ClearContents. Si j'enlève le ClearContents
tout fonctionne hormis que le contenu de ma cellule est toujours là.
Voile je suis entrain de faire une feuille excel. Suivant le contenu des premières celulles de ma ligne, je vais vider certaines celulles, y changer la couleut et les bloquer pour que l'on ne puisse pas les modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then If (Cells(Target.Row, 2).Value <> "DIF") And (Cells(Target.Row, 3).Value = "E") Then With Range("G" & Target.Row & ":G" & Target.Row) .Locked = False .Interior.ColorIndex = 15 .ClearContents .Locked = True End With End If End If End If ActiveSheet.Protect ActiveSheet.EnableSelection = xlUnlockedCells End Sub
Si j'enlève tout système de protection, ma macro fonctionne parfaitement. Par contre si je protège ma feuille, il me bloque toujours juste après le ClearContents. Si j'enlève le ClearContents tout fonctionne hormis que le contenu de ma cellule est toujours là.
Si quelqu'un peut m'aider.
Merci d'avance.
LSteph
Bonjour, ... même si le conseil reste valable cela ne vient pas exclusivement de là puisque la cellule modifiée G n'est pas dans la cible . En revanche, le unprotect et protect restent actifs indépendament de la cible puisque tu as placé l'instruction avant, une solution serait ActiveSheet.Protect userinterfaceonly:=True de ne protèger que l'interface utilisateur mais pas des macros :
'** Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then If (Cells(Target.Row, 2).Value <> "DIF") And _ (Cells(Target.Row, 3).Value = "E") Then ActiveSheet.Protect userinterfaceonly:=True Application.EnableEvents = False With Range("G" & Target.Row & ":G" & Target.Row) .Locked = False .Interior.ColorIndex = 15 .ClearContents .Select .Locked = True End With Application.EnableEvents = True End If End If End If
ActiveSheet.EnableSelection = xlUnlockedCells End Sub
"Arno" a écrit dans le message de news:
Salut à tous,
Voile je suis entrain de faire une feuille excel. Suivant le contenu des premières celulles de ma ligne, je vais vider certaines celulles, y changer la couleut et les bloquer pour que l'on ne puisse pas les modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then If (Cells(Target.Row, 2).Value <> "DIF") And (Cells(Target.Row, 3).Value = "E") Then With Range("G" & Target.Row & ":G" & Target.Row) .Locked = False .Interior.ColorIndex = 15 .ClearContents .Locked = True End With End If End If End If ActiveSheet.Protect ActiveSheet.EnableSelection = xlUnlockedCells End Sub
Si j'enlève tout système de protection, ma macro fonctionne parfaitement. Par contre si je protège ma feuille, il me bloque toujours juste après le ClearContents. Si j'enlève le ClearContents tout fonctionne hormis que le contenu de ma cellule est toujours là.
Si quelqu'un peut m'aider.
Merci d'avance.
Bonjour,
...
même si le conseil reste valable cela ne vient pas exclusivement
de là puisque la cellule modifiée G n'est pas dans la cible .
En revanche, le unprotect et protect restent actifs indépendament
de la cible puisque tu as placé l'instruction avant, une solution serait
ActiveSheet.Protect userinterfaceonly:=True
de ne protèger que l'interface utilisateur mais pas des macros :
'**
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then
If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then
If (Cells(Target.Row, 2).Value <> "DIF") And _
(Cells(Target.Row, 3).Value = "E") Then
ActiveSheet.Protect userinterfaceonly:=True
Application.EnableEvents = False
With Range("G" & Target.Row & ":G" & Target.Row)
.Locked = False
.Interior.ColorIndex = 15
.ClearContents
.Select
.Locked = True
End With
Application.EnableEvents = True
End If
End If
End If
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
"Arno" <boulets@gmail.com> a écrit dans le message de news:
1123599811.625524.247940@g14g2000cwa.googlegroups.com...
Salut à tous,
Voile je suis entrain de faire une feuille excel. Suivant le contenu
des premières celulles de ma ligne, je vais vider certaines celulles,
y changer la couleut et les bloquer pour que l'on ne puisse pas les
modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then
If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2
Then
If (Cells(Target.Row, 2).Value <> "DIF") And
(Cells(Target.Row, 3).Value = "E") Then
With Range("G" & Target.Row & ":G" & Target.Row)
.Locked = False
.Interior.ColorIndex = 15
.ClearContents
.Locked = True
End With
End If
End If
End If
ActiveSheet.Protect
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
Si j'enlève tout système de protection, ma macro fonctionne
parfaitement. Par contre si je protège ma feuille, il me bloque
toujours juste après le ClearContents. Si j'enlève le ClearContents
tout fonctionne hormis que le contenu de ma cellule est toujours là.
Bonjour, ... même si le conseil reste valable cela ne vient pas exclusivement de là puisque la cellule modifiée G n'est pas dans la cible . En revanche, le unprotect et protect restent actifs indépendament de la cible puisque tu as placé l'instruction avant, une solution serait ActiveSheet.Protect userinterfaceonly:=True de ne protèger que l'interface utilisateur mais pas des macros :
'** Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then If (Cells(Target.Row, 2).Value <> "DIF") And _ (Cells(Target.Row, 3).Value = "E") Then ActiveSheet.Protect userinterfaceonly:=True Application.EnableEvents = False With Range("G" & Target.Row & ":G" & Target.Row) .Locked = False .Interior.ColorIndex = 15 .ClearContents .Select .Locked = True End With Application.EnableEvents = True End If End If End If
ActiveSheet.EnableSelection = xlUnlockedCells End Sub
"Arno" a écrit dans le message de news:
Salut à tous,
Voile je suis entrain de faire une feuille excel. Suivant le contenu des premières celulles de ma ligne, je vais vider certaines celulles, y changer la couleut et les bloquer pour que l'on ne puisse pas les modifier.
J'utilise la macro VBA suivante :
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Then If (Cells(Target.Row, 1).Value <> "TOTAL") And Target.Row >= 2 Then If (Cells(Target.Row, 2).Value <> "DIF") And (Cells(Target.Row, 3).Value = "E") Then With Range("G" & Target.Row & ":G" & Target.Row) .Locked = False .Interior.ColorIndex = 15 .ClearContents .Locked = True End With End If End If End If ActiveSheet.Protect ActiveSheet.EnableSelection = xlUnlockedCells End Sub
Si j'enlève tout système de protection, ma macro fonctionne parfaitement. Par contre si je protège ma feuille, il me bloque toujours juste après le ClearContents. Si j'enlève le ClearContents tout fonctionne hormis que le contenu de ma cellule est toujours là.
Si quelqu'un peut m'aider.
Merci d'avance.
Arno
Merci à vous deux, je vais aller tester cella de ce pas ;)
Merci à vous deux, je vais aller tester cella de ce pas ;)