Microsoft 365 Position curseur quand double clic dans ma cellule

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
J'espère que vous allez bien :)

Toujours dans ma recherche de gains de temps et d'éviter les erreurs,
Je bute sur un codage que je n'arrive pas à faire malgré mes tentatives et recherches.

Quand on double clic dans une cellule, le curseur se positionne automatiquement là où on clique dans la cellule et souvent au milieu du texte existant..
Je voudrais, quand je double clic dans ma cellule : que le curseur se positionne après le texte
ce qui éviterait d'écrire par erreur dans le texte existant.

Auriez-vous la solution ?

Je joins une petit fichier test
Avec mes remerciements,
Je vous souhaite une belle journée,
Amicalement,
lionel,
 

Pièces jointes

  • curseur_position.xlsm
    13.1 KB · Affichages: 49
Solution
bien vu job75
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("s7:s20000")) Is Nothing Then
        Application.EnableEvents = False
        With Target
            .Value = Trim(Target.Value) & IIf(Right(Trim(Target.Value), 1) = "-", " ", " - ")
           If .Value = " - " Then .Value = ""
            Application.SendKeys ("{Down " & Len(.Value) & "}")
            Application.SendKeys "" 'visiblement a pour effet d'annuler la touche precedente donc pas d'association de touche
            'qui ammene la plupart du temps a transformer les touches 4,6,2,8 en fleche et annule les autre du pavé
        End With
    End If
    Application.EnableEvents = True...

jmfmarques

XLDnaute Accro
A arthour973 : l'image que tu montres en ton message 97 donne très fortement à penser qu'il ne s'agit pas essentiellement de placer le caret in fine, mais de rendre impossible qu'un utilisateur ne modifie toute la partie "antérieure" à la nouvelle modification.
Si tel est le cas, ce ne sera certes pas le fait de placer ici ou là le curseur lors du double-clic qui empêcherait l'utilisateur de se "promener" ensuite en "amont" et d'y apporter des modifications.
C'est dans CET esprit que je te demandais plus haut (beaucoup plus haut) de quoi il retournait exactement ... Cette réponse n'est toujours pas là .
 

patricktoulon

XLDnaute Barbatruc
bien vu job75
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("s7:s20000")) Is Nothing Then
        Application.EnableEvents = False
        With Target
            .Value = Trim(Target.Value) & IIf(Right(Trim(Target.Value), 1) = "-", " ", " - ")
           If .Value = " - " Then .Value = ""
            Application.SendKeys ("{Down " & Len(.Value) & "}")
            Application.SendKeys "" 'visiblement a pour effet d'annuler la touche precedente donc pas d'association de touche
            'qui ammene la plupart du temps a transformer les touches 4,6,2,8 en fleche et annule les autre du pavé
        End With
    End If
    Application.EnableEvents = True
End Sub

et avec la version de job75
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("s7:s20000")) Is Nothing Then
        Cancel = True
        Application.EnableEvents = False
        Target.Value = Trim(Target.Value) & IIf(Right(Trim(Target.Value), 1) = "-", " ", " - ")
        If Target.Value = " - " Then Target.Value = ""
        Application.EnableEvents = True
        CreateObject("wscript.shell").SendKeys "{F2}"    'évite la désactivation du pavé numérique
    End If

End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
A arthour973 : l'image que tu montres en ton message 97 donne très fortement à penser qu'il ne s'agit pas essentiellement de placer le caret in fine, mais de rendre impossible qu'un utilisateur ne modifie toute la partie "antérieure" à la nouvelle modification.
Si tel est le cas, ce ne sera certes pas le fait de placer ici ou là le curseur lors du double-clic qui empêcherait l'utilisateur de se "promener" ensuite en "amont" et d'y apporter des modifications.
C'est dans CET esprit que je te demandais plus haut (beaucoup plus haut) de quoi il retournait exactement ... Cette réponse n'est toujours pas là .
Bonjour jmfmarques :)
Je n'ai pas donné de réponse car je ne sais pas quoi répondre.
L'objectif du code est que le curseur soit actif dans la cellule sélectionnée de la colonne S qui doit rester active, puisque curseur actif en dernière position.
lionet,
 

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 422
Membres
102 886
dernier inscrit
eurlece