OVH Cloud OVH Cloud

Input Range

6 réponses
Avatar
BEAUCHAND
Bonjour à tous,

Je travaille avec Excel 2000.
J'ai une feuille où des entrées sont faite par un usager dans des cellules
non-protégées. Il y a des cellules non-protégées et protégées en alternance.
Est-il possible lorsque l'usager appuie sur Enter après une entrée que le
curseur se déplace dans la prochaine cellule non-protégée seulement.
C'est-à-dire que le curseur ne se place jamais dans une cellule protégée.

Merci à l'avance!

6 réponses

Avatar
JB
Bonjour,

http://cjoint.com/?cchhfM3ITK

Scénario1:

La saisie se fait dans une colonne sur 2 (B,D,E,..). On passe à la
ligne suivante en colonne 8.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column Mod 2 = 0 Then
If Target.Column = 8 Then
Cells(Target.Row + 1, 2).Select
Else
Target.Offset(0, 2).Select
End If
End If
End Sub

Scénario2:

Le parcours est défini dans une cellule nommée Parcours:
B1*B19*D3*E6*E9*

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
p = InStr(Range("parcours"), Target.Address(RowAbsolute:úlse,
columnAbsolute:úlse))
If p > 0 Then
P1 = InStr(p, Range("parcours"), "*")
p2 = InStr(P1 + 1, Range("parcours"), "*")
If p2 > 0 Then
suivant = Mid(Range("parcours"), P1 + 1, p2 - P1 - 1)
Range(suivant).Select
End If
End If
End If
End Sub

Cordialement JB
Avatar
AV
Pour se déplacer (après saisie) dans une plage discontinue, dans un ordre
imposé et en excluant de la sélection les cellules verrouillées :

Exemple de déplacement (non "logique") : A1 > C1 > B3 > A4 > A2 > C6
Obligatoire : Sélection multiple (par la touche CTRL) et dans l'ordre
voulu, de la plage dans laquelle doit se faire le déplacement
Nommer la plage "plg" >> Déverrouiller les cellules >> Protéger la
feuille



Mettre ce code dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
Exit Sub
x = Intersect(Range("plg"), zz)
If x = Range("plg").Areas.Count Then
Range("plg").Areas(1).Select
Else: Range("plg").Areas(x + 1).Select
End If
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Exemple là :
http://cjoint.com/?cckkEim10N

AV


Avatar
JB
http://cjoint.com/?ccjXXqoDoj

On parcours les cellules non verrouillées:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
témoin = False
For Each c In Range("A1:F20")
If témoin = True And Not c.Locked Then
Range(c.Address).Select
Exit Sub
End If
If Not c.Locked And c.Address = Target.Address Then
témoin = True
End If
Next c
End If
End Sub

JB
Avatar
BEAUCHAND
Bonjour à tous,

Le scénario 3 de JB répond en grande partie à mes besoins.
Une seul problème, je voudrais que le curseur se déplace par colonne et non
par ligne.

Merci de vos réponses rapides.

"JB" wrote:


http://cjoint.com/?ccjXXqoDoj

On parcours les cellules non verrouillées:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
témoin = False
For Each c In Range("A1:F20")
If témoin = True And Not c.Locked Then
Range(c.Address).Select
Exit Sub
End If
If Not c.Locked And c.Address = Target.Address Then
témoin = True
End If
Next c
End If
End Sub

JB




Avatar
JB
Bonjour,

Voir PJ http://cjoint.com/?cdfnZuxX57

Le parcours des cellules deverrouillées se fait dans l'ordre des
colonnes.

Private Sub Workbook_Open()
Sheets("scenario4").EnableSelection = xlUnlockedCells
Sheets("scenario4").Protect Contents:=True
End Sub


Cordialement JB
Avatar
BEAUCHAND
Merci beaucoup JB, c'est exactement ce dont j'avais besoin.

Merci à tous pour les réponses.
"JB" wrote:

Bonjour,

Voir PJ http://cjoint.com/?cdfnZuxX57

Le parcours des cellules deverrouillées se fait dans l'ordre des
colonnes.

Private Sub Workbook_Open()
Sheets("scenario4").EnableSelection = xlUnlockedCells
Sheets("scenario4").Protect Contents:=True
End Sub


Cordialement JB