Forcer la validation entré à rester dans la cellule active
Salut tout le monde , par défaut quand on appuie sur ENTRÉE la prochaine cellule sélectionnée est celle du dessous, y a t'il un code pour forcer à rester sur la la cellule qui vient d'être validée)
J'ai trouvé un code en mode événementielle mais malheureusement il y a 2 éventements (un change et un sélection change) et donc le 2eme code ne marche pas lorsque je valide avec ENTRÉE
le code :
Private Sub Worksheet_Change(ByVal Target As Range)
'reste sur la cellule active
If Not Application.Intersect(Target, Range("A1:A2:A3")) Is Nothing Then
Dim ligne As Integer
ligne = Target.Row
Cells([ligne], [1]).Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'indique la ligne de la cellule selectionnée
If Not Application.Intersect(Target, Range("A1:A2:A3")) Is Nothing Then
Dim ligne As integer
ligne = Target.Row
Range("C2").Value = ligne
End If
End Sub
Le classeur pour exemple :
Je ne sais pas comment imbriquer ces 2 codes et je me suis dit qu'il y a peut être un code qui permet tout simplement faire cette validation en restant sur la cellule active (excel est plein de surprise)
Je souhaite bien sur que ça se passe uniquement sur les cellules A1 et A2
Merci par avance !
edit : petite erreur dans mon classeur exemple (le code implique la cellule A3) mais ce n'est pas bien grave
JIDE
Bonsoir le forum,
Sans VBA ?
Bouton Office : Options Excel : Options avancées : décocher : "Déplacer la sélection après validation"
mbbp
Merci pour ta réponse mais je souhaite justement du vba car cela impliquera plusieurs classeurs sur plusieurs pc et utilisateurs et je ne veux que ça se passe uniquement sur une plage bien spécifique
Bonjour,
qq chose doit m'échapper...
il y a 2 éventements (un change et un sélection change) et donc le 2eme code ne marche pas lorsque je valide avec ENTRÉE
Si tu veux rester dans la même cellule pourquoi veux-tu un événement selection change puisque justement la sélection ne change pas ???
D'autant plus si c'est pour afficher le n° de ligne qui ne change pas non plus...
Explique ce que tu veux faire avec des mots parce que là...
Sinon la proposition de mbbp en vba :
Application.MoveAfterReturn = True
Application.MoveAfterReturn = False
eric
Eric ce que je voulais est le code pour pour que la validation "entrée" force à rester dans la cellule active
Ton code est exactement ce que je cherchais
Pour expliquer la suite est que voulais rentrer ce code dans une macro événementielle mais mon problème est que j'avais 2 codes :
le 1er code (SelectionChange) me permettait de voir la position de la cellule active
le 2eme code (change) pour justement que la cellule validée reste active
Ces 2 codes fonctionnent mais pas ensembles car tout 2 différents (SelectionChange et change)
Le tout dans une plage définit
Je sais pas si je suis clair mais j'ai estimé qu'il valait mieux que j'explique le contexte pour ma demande
Bref tu m'as donné la solution, ce qui donne pour mon code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.MoveAfterReturn = True
If Not Application.Intersect(Target, Range("A1:A2:A3")) Is Nothing Then
Application.MoveAfterReturn = False
Dim ligne As String
ligne = Target.Row
Range("C2").Value = ligne
End If
End Sub
Merci !!!