OVH Cloud OVH Cloud

ActiveCell.Offset(x,x)

3 réponses
Avatar
Patrick BASTARD
Bonjour, Toutes et Tous.

Besoin d'un p'tit coup d'pouce pour partir en vacances serein.
Le but :
Si saisie, par exemple, en E2 (feuille protégée, et cellules E:E non
protégée), alors
Déprotection de la feuille,
Inscription de la date en A2 (cellules AA protégées)
Protection de la cellule saisie en E2,
Reprotection de la feuille.
Je précise que E2:H2 sont fusionnées.
J'ai trituré ce code dans tous les sens, sans succès.
========================================================
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e:e")) Is Nothing Then
'on déprotège la feuille
ActiveSheet.Protect DrawingObjects:=False, Contents:=False,
Scenarios:=False
'Si la cellule sélectionnée de la colonne E est vide
If ActiveCell = "" Then
'On efface ce qu'il y a sur la même ligne dans la colonne A
ActiveCell.Offset(0, -4) = ""
'Sinon
Else
'On écrit "maintenant" dans la même ligne, colonne A
ActiveCell.Offset(0, -4) = Now
'on protège la cellule E
ActiveCell.Offset(0, 4).Locked = True
End If
'Et on reprotège la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
=======================================================
Plus qu'une solution, j'aimerais savoir ce qui coince...

Et, par la même occasion, savoir si activecell.offset(x,x) modifie la
cellule active.

Un grand merci d'avance,
;-)

--
Bien amicordialement,
P. Bastard

3 réponses

Avatar
LSteph
Re,
pas cherché le code mais la réponse à ta question:
.offset c'est par rapport à l'objet désigné et ne change pas activecell
tant qu'on a pas refait de .select
ici pas la peine de revenir ActiveCell.Offset(0, 4)
Activecell.Locked=true devrait fare l'affaire

Sinon l'option userinterfaceonly de la commnde protect
'On écrit "maintenant" dans la même ligne, colonne A
ActiveCell.Offset(0, -4) = Now
'on protège la cellule E
ActiveCell.Offset(0, 4).Locked = True


lSteph


"Patrick BASTARD" a écrit dans le
message de news: ez3$
Bonjour, Toutes et Tous.

Besoin d'un p'tit coup d'pouce pour partir en vacances serein.
Le but :
Si saisie, par exemple, en E2 (feuille protégée, et cellules E:E non
protégée), alors
Déprotection de la feuille,
Inscription de la date en A2 (cellules AA protégées)
Protection de la cellule saisie en E2,
Reprotection de la feuille.
Je précise que E2:H2 sont fusionnées.
J'ai trituré ce code dans tous les sens, sans succès.
======================================================= > Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e:e")) Is Nothing Then
'on déprotège la feuille
ActiveSheet.Protect DrawingObjects:úlse, Contents:úlse,
Scenarios:úlse
'Si la cellule sélectionnée de la colonne E est vide
If ActiveCell = "" Then
'On efface ce qu'il y a sur la même ligne dans la colonne A
ActiveCell.Offset(0, -4) = ""
'Sinon
Else
'On écrit "maintenant" dans la même ligne, colonne A
ActiveCell.Offset(0, -4) = Now
'on protège la cellule E
ActiveCell.Offset(0, 4).Locked = True
End If
'Et on reprotège la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
====================================================== > Plus qu'une solution, j'aimerais savoir ce qui coince...

Et, par la même occasion, savoir si activecell.offset(x,x) modifie la
cellule active.

Un grand merci d'avance,
;-)

--
Bien amicordialement,
P. Bastard



Avatar
LSteph
Re,
j'allais ajouter ceci mais j'ai tricoté :

Sinon l'option userinterfaceonly
te permet de modifier par macro sans avoir à déprotèger reprotèger

lSteph

"Patrick BASTARD" a écrit dans le
message de news: ez3$
Bonjour, Toutes et Tous.

Besoin d'un p'tit coup d'pouce pour partir en vacances serein.
Le but :
Si saisie, par exemple, en E2 (feuille protégée, et cellules E:E non
protégée), alors
Déprotection de la feuille,
Inscription de la date en A2 (cellules AA protégées)
Protection de la cellule saisie en E2,
Reprotection de la feuille.
Je précise que E2:H2 sont fusionnées.
J'ai trituré ce code dans tous les sens, sans succès.
======================================================= > Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e:e")) Is Nothing Then
'on déprotège la feuille
ActiveSheet.Protect DrawingObjects:úlse, Contents:úlse,
Scenarios:úlse
'Si la cellule sélectionnée de la colonne E est vide
If ActiveCell = "" Then
'On efface ce qu'il y a sur la même ligne dans la colonne A
ActiveCell.Offset(0, -4) = ""
'Sinon
Else
'On écrit "maintenant" dans la même ligne, colonne A
ActiveCell.Offset(0, -4) = Now
'on protège la cellule E
ActiveCell.Offset(0, 4).Locked = True
End If
'Et on reprotège la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
====================================================== > Plus qu'une solution, j'aimerais savoir ce qui coince...

Et, par la même occasion, savoir si activecell.offset(x,x) modifie la
cellule active.

Un grand merci d'avance,
;-)

--
Bien amicordialement,
P. Bastard



Avatar
Patrick BASTARD
Bonjour, *LSteph*

Toujours sur la brèche ?
:-)
Un grand merci pour tes conseils.
J'y retourne, et reviens en cas de soucis.

Bien cordialement,

Patrick.



Re,
j'allais ajouter ceci mais j'ai tricoté :

Sinon l'option userinterfaceonly
te permet de modifier par macro sans avoir à déprotèger reprotèger

lSteph

"Patrick BASTARD" a écrit dans le
message de news: ez3$
Bonjour, Toutes et Tous.

Besoin d'un p'tit coup d'pouce pour partir en vacances serein.
Le but :
Si saisie, par exemple, en E2 (feuille protégée, et cellules E:E non
protégée), alors
Déprotection de la feuille,
Inscription de la date en A2 (cellules AA protégées)
Protection de la cellule saisie en E2,
Reprotection de la feuille.
Je précise que E2:H2 sont fusionnées.
J'ai trituré ce code dans tous les sens, sans succès.
======================================================= >> Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e:e")) Is Nothing Then
'on déprotège la feuille
ActiveSheet.Protect DrawingObjects:úlse, Contents:úlse,
Scenarios:úlse
'Si la cellule sélectionnée de la colonne E est vide
If ActiveCell = "" Then
'On efface ce qu'il y a sur la même ligne dans la colonne
A ActiveCell.Offset(0, -4) = ""
'Sinon
Else
'On écrit "maintenant" dans la même ligne, colonne A
ActiveCell.Offset(0, -4) = Now
'on protège la cellule E
ActiveCell.Offset(0, 4).Locked = True
End If
'Et on reprotège la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
====================================================== >> Plus qu'une solution, j'aimerais savoir ce qui coince...

Et, par la même occasion, savoir si activecell.offset(x,x) modifie la
cellule active.

Un grand merci d'avance,
;-)

--
Bien amicordialement,
P. Bastard