Sens du déplacement de la sélection après validation

Bonjour à tous,

Dans les options avancées d'Excel,

il est possible de choisir le sens du déplacement de la sélection après validation d'une cellule (bas, droite, haut, gauche)

Mais cette modification s'applique à tous les classeurs et feuilles, ce que je ne souhaite pas.

Ce que je souhaite,

Dans une zone d'une feuille "Bd" par exemple, qui comporte 4 colonnes :

Date, Libellé, Recette, Dépense

Après la saisie dans Date, en "A5", la cellule sélectionnée devient "B5"

Après la saisie dans Libellé, en "B5", la cellule sélectionnée devient "C5"

Après la saisie dans Recette, en "C5"

si C5 est vide , la cellule sélectionnée devient "D5"

si C5 n'est pas vide , la cellule sélectionnée devient "A6"

Après la saisie dans Libellé, en "D5", la cellule sélectionnée devient "A6"

Je pense que ce doit être possible en VBA, mais je ne sais pas comment faire !

Merci par avance pour votre aide

Pierre

Bonjour Pierre,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
    Case 1: Cells(Target.Row, Target.Column + 1).Activate
    Case 2: Cells(Target.Row, Target.Column + 1).Activate
    Case 3:
            If Target.Value = "" Then
                Cells(Target.Row, Target.Column + 1).Activate
            Else
                Cells(Target.Row + 1, 1).Activate
            End If
    Case 4: Cells(Target.Row + 1, 1).Activate
End Select
Application.EnableEvents = True
End Sub

Merci pour ta prompte réponse.

En fait, j'ai 5 colonnes

J'ai modifié le code comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
    Case 1: Cells(Target.Row, Target.Column + 1).Activate    'Date
    Case 2: Cells(Target.Row, Target.Column + 1).Activate    'Libellé
    Case 3:
            If Target.Value = "" Then
                Cells(Target.Row, Target.Column + 1).Activate    'Recette
            Else
                Cells(Target.Row + 1, 1).Activate        'Dépense
            End If
    Case 4: Cells(Target.Row + 1, 1).Activate        'Note
End Select
Application.EnableEvents = True
End Sub

Tout va bien jusqu'à la 5ème colonne "E5"

à la 5ème colonne, c'est la cellule en dessous qui est sélectionnée "E6",

et je pense parce que les cellules à droite sont verrouillées

alors que je souhaite aller à la première cellule de la ligne en dessous, c'est à dire en "A6"

A plus

Pierre

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
    Case 1: Cells(Target.Row, Target.Column + 1).Activate
    Case 2: Cells(Target.Row, Target.Column + 1).Activate
    Case 3:
            If Target.Value = "" Then
                Cells(Target.Row, Target.Column + 1).Activate
            Else
                Cells(Target.Row + 1, 1).Activate
            End If
    Case 4: Cells(Target.Row, Target.Column + 1).Activate    
    Case 5: Cells(Target.Row + 1, 1).Activate
End Select
Application.EnableEvents = True
End Sub

Oui, merci beaucoup

ça marche très bien

bonne soirée

Pierre

Bonjour,

Emporté par mon enthousiasme, j'ai conclu un peu vite que mon problème était résolu

En fait, ça marche bien lorsqu'un contenu est saisi dans la cellule,

mais sans contenu, le comportement après validation est de sélectionner la cellule en bas

ce qui ne convient pas.

Il y a t'il un remède au problème ?

Pierre

re,

une possibilité est de mettre le code suivant sur la page code de ThisWorkbook

Private Sub Workbook_Open()
Application.MoveAfterReturn = False
End Sub

Private Sub Workbook_Activate()
Application.MoveAfterReturn = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
    .MoveAfterReturn = True
    .MoveAfterReturnDirection = xlDown  ' adapter le sens xlDown, xlToLeft, xlToRight, xlUp
End With
End Sub

Private Sub Workbook_Deactivate()
With Application
    .MoveAfterReturn = True
    .MoveAfterReturnDirection =   ' adapter le sens xlDown, xlToLeft, xlToRight, xlUp
End With
End Sub

Bonjour à tous,

plus simplement tu peux valider avec Tab ou flèche droite.

Il n'y a que le retour à la ligne qui ne se fera pas.

eric

Merci pour la réponse,

ça marche très bien

Le retour à la ligne se fait, car sur la droite toutes les cellules sont verrouillées

Bonne soirée

Pierre

Sinon tu as la possibilité de forcer le retour à la ligne en sélectionnant la plage de saisie avant de la démarrer.

Rechercher des sujets similaires à "sens deplacement selection validation"