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.
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
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:=False,
columnAbsolute:=False))
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
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
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
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
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
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
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
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
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
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
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
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
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