Microsoft 365 VBA Déplacement de la cellule active dans une ligne sélectionnée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

danielco

XLDnaute Accro
Bonjour,

J'utilise cette macro pour mettre en surbrillance la ligne de la cellule active :

VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set Adr = ActiveCell
  Application.EnableEvents = False
  Rows(ActiveCell.Row).Select
  Adr.Activate
  Application.EnableEvents = True
End Sub

Quand je me sers de la flèche droite pour déplacer la cellule active, lorsque celle-ci arrive au bord de la fenêtre, elle revient au milieu de l'écran et y reste, même en appuyant sur la flèche droite. Ce sont alors les colonnes qui se décalent vers la gauche. Est-il possible d'éviter ce comportement ?

merci d'avance.

Daniel

PS. J'ai indiqué MS365 mais la macro est destinée à un utilisateur ayant une version antérieure.
 
Solution
En revanche gros souci avec ce genre de code, il est impossible de sélectionner plusieurs cellules
Ce n'est vraiment pas un gros souci :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Selection.CountLarge > 1 Then Exit Sub
  Set Adr = ActiveCell
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Rows(ActiveCell.Row).Select
  Adr.Activate
  Application.EnableEvents = True
End Sub
Bonjour danielco,

Pour éviter le cadrage intempestif :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set Adr = ActiveCell
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Rows(ActiveCell.Row).Select
  Adr.Activate
  Application.EnableEvents = True
End Sub
A+
 
En revanche gros souci avec ce genre de code, il est impossible de sélectionner plusieurs cellules
Ce n'est vraiment pas un gros souci :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Selection.CountLarge > 1 Then Exit Sub
  Set Adr = ActiveCell
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Rows(ActiveCell.Row).Select
  Adr.Activate
  Application.EnableEvents = True
End Sub
 
Bonjour danielco,

Pas ce problème de mon côté, mais bon je suis en O365 🤭

En revanche gros souci avec ce genre de code, il est impossible de sélectionner plusieurs cellules

A+
Donc :

VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  Application.ScreenUpdating = False
  Set Adr = Selection
  Application.EnableEvents = False
  Selection.EntireRow.Select
  Adr.Activate
  Application.EnableEvents = True
End Sub

Daniel
 
Apparemment mon post #4 n'a pas été vu.

La macro peut d'ailleurs se simplifier :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Selection.CountLarge > 1 Then Exit Sub
  Set Adr = ActiveCell
  Application.ScreenUpdating = False
  ActiveCell.EntireRow.Select
  Adr.Activate
End Sub
 
@job75
Ce n'est vraiment pas un gros souci :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Selection.CountLarge > 1 Then Exit Sub
  Set Adr = ActiveCell
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Rows(ActiveCell.Row).Select
  Adr.Activate
  Application.EnableEvents = True
End Sub
Je sais 😂 dans le contexte du code initial, ça l'était 🤭
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour