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...

patricktoulon

XLDnaute Barbatruc
Respect Mr @job75
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Value = Trim(Target.Value) & IIf(Right(Trim(Target.Value), 1) = "-", " ", " - ")
CreateObject("wscript.shell").SendKeys "{F2}" 'évite la désactivation du pavé numérique
End Sub
 

patricktoulon

XLDnaute Barbatruc
ben jacques si tu étais plus explicite et te mettais a la hauteur des autres tu serais plus et mieux reconnu combien de fois te l' 'ai-je dis ici et dans l'autre monde ;) que "tu es le seul a parler ton language"
et oui wscript.shell est bien bloqué sans le cancel j'avais testé

d'autre part j'ai remarqué un truc que vous n'avez pas remarqué sinon ca serait réglé ici et ailleurs partout ou cette question tarabuste

savez vous comment empêcher le numlock de se désengager avec application.sendkeys;)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour Gérard,
Ton code "court" fonctionne aussi :)
Je l'ai mis dans mon "usine à gaz" qui n'a pas encore explosée comme suit :
VB:
If Not Application.Intersect(Target, Range("s7:s20000")) Is Nothing Then
    Application.EnableEvents = False
    Cancel = True
    CreateObject("wscript.shell").SendKeys "{F2}" 'évite la désactivation du pavé numérique
    Target.Value = Trim(Target.Value) & IIf(Right(Trim(Target.Value), 1) = "-", " ", " - ")
    Application.EnableEvents = True
    Exit Sub
    End If

ça fonctionne bien, le curseur est bien ds col S à droite de OUI - mais il ouvre la fenêtre à gauche ou il y a NB comme pour choisir une formule : photo en pièce jointe :)
est-il possible d'éviter cette ouverture ?
lionel :)
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    300.8 KB · Affichages: 17

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,
Comme l'a signalé Patrick,
Il fallait comme ça :
VB:
 If Not Application.Intersect(Target, Range("s7:s20000")) Is Nothing Then
    Application.EnableEvents = False
    Cancel = True
    Target.Value = Trim(Target.Value) & IIf(Right(Trim(Target.Value), 1) = "-", " ", " - ")
    CreateObject("wscript.shell").SendKeys "{F2}" 'évite la désactivation du pavé numérique
    Application.EnableEvents = True
    Exit Sub
    End If
et là, c'est nickel de chez nickel
Youpy c'est super :)

lol : Ha ben ! non même problème ! :mad:
lionel,
 

patricktoulon

XLDnaute Barbatruc
et oui wscript.schell est externe et pointe donc sur la fenêtre active qui n'est pas la grille

tu veux bien essayer cela 10 fois 20 fois et au bout tester ton pavé numérique
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) = "-", " ", " - ")
            Application.SendKeys ("{Down " & Len(.Value) & "}")
            Application.SendKeys ""'surprise surprise!!!
        End With
    End If
    Application.EnableEvents = True
End Sub
chez moi j'ai testé le pavé n'est plus désengagé
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16