Caractère "-" dans une cellule

  • Initiateur de la discussion Initiateur de la discussion Eric 45
  • Date de début Date de début

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 !

Eric 45

XLDnaute Occasionnel
Bonsoir à tous


Dans une cellule, j'aimerai, lorsque je tape le caractère "-" (et seulement celui-ci), obtenir le "-" et non une (future!) formule si l'on change de cellule avec la souris. Si l'on fait "enter", je n'ai pas de problème.
Je ne peux pas taper d'apostrophe avant le "-".


Merci d'avance pour votre aide
Eric
 
Re : Caractère "-" dans une cellule

RE

Merci Victor21 pour ce charmant conseil
Dans Wikipédia :
une flèche : au figuré et de manière familière, une personne astucieuse, réfléchissant rapidement et efficacement, par analogie avec la rapidité et la précision du projectile (exemple : « Ce type est une vraie flèche »)

et je ne pense pas en être une
mais chacun ses termes, et désolé si j'ai pu choquer certain.

Cordialement
Eric

PS : Patrick, j'ai opté pour ta 3ème solution
 
Re : Caractère "-" dans une cellule

Re,

Une solution avec ces macros dans ThisWorkbook :

Code:
Private Sub Workbook_Activate()
Application.OnKey "-", "ThisWorkbook.Touche"
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey "-"
End Sub

Sub Touche()
SendKeys "'-"
End Sub
Mais si vos collègues n'aiment pas les apostrophes ils ne trouveront pas ça génial.

Fichier (2), le télécharger sur le bureau pour tester.

A+
 

Pièces jointes

Re : Caractère "-" dans une cellule

Re,

Pour supprimer les apostrophes on peut pousser le vice en ajoutant :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Set Source = Intersect(Source, Sh.UsedRange)
If Source Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Source In Source
  If Source.Formula Like "-*" Then Source = Source.Formula
Next
Application.EnableEvents = True
End Sub
Fichier (3), à télécharger pour tester.

A+
 

Pièces jointes

Dernière édition:
Re : Caractère "-" dans une cellule

Re

Moi j'avais trouvé ceci.
Dans Workbook :
Code:
Option Explicit

Private Sub Workbook_Activate()
Application.OnKey Key:="{-}", procedure:="touche"
Application.OnKey Key:="{109}", procedure:="touche"
End Sub


Private Sub Workbook_Deactivate()
Application.OnKey Key:="{-}"
Application.OnKey Key:="{109}"
End Sub
et dans un module :
Code:
Sub touche()
ActiveCell = "-"
End Sub
Le 109 étant pour la touche "-" du pavé numérique (il y a des coquins....🙂)
Merci job75
Eric
 
Re : Caractère "-" dans une cellule

Re,

Eh bien bravo Eric, vous êtes une flèche 🙂

Votre code évite en effet de passer en mode édition avec la touche -.

Et en plus vous avez pensé au pavé numérique, re-bravo !

Un bémol cependant : pour entrer (ailleurs) un nombre négatif, il faut un double-clic sur la cellule pour se mettre en mode édition.

A+
 
Re : Caractère "-" dans une cellule

Re

Il est vrai que je n'avais pas ce cas dans mon projet, donc je ne l'avais pas envisagé. On oublie parfois une manipulation.
Pour le cas d'une plage ("D7:F15") avec le caractère "-", et pour éviter le double-click c'est un peu plus compliqué, mais je pense que l'on peut le traiter comme ceci :

dans Workbook (cela ne doit pas être nécessaire, à vérifier) :
Code:
Private Sub Workbook_Deactivate()
Application.OnKey Key:="{-}"
Application.OnKey Key:="{109}"
End Sub
dans un module :
Code:
Option Explicit
Public pass As Boolean

Sub touche()
If pass = True Then
    ActiveCell = "-"
End If
End Sub

Sub lance()
Application.OnKey Key:="{-}", procedure:="touche"
Application.OnKey Key:="{109}", procedure:="touche"
End Sub
dans la feuille :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If pass = True Then touche
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim maplage As Range
Set maplage = Application.Intersect(Target, Range("D7:F15"))   'la plage incriminée
If Not maplage Is Nothing Then
    pass = True
    lance
    Exit Sub
End If
Application.OnKey Key:="{109}"
Application.OnKey Key:="{-}"
End Sub
C'est améliorable, je n'en doute pas.
Chez moi cela fonctionne, mais un test supplémentaire conforterait ce code.

Merci job75
Bonne soirée à tous
Eric
 
Re : Caractère "-" dans une cellule

Re Eric,

Avec ma méthode (qui conserve le mode édition), une autre solution.

Je remplace l'apostrophe par l'espace insécable CAR(160).

Avantage : on ne le voit (pratiquement) pas.

Et je n'oublie pas cette fois le pavé numérique 🙂

Fichier (4).

A+
 

Pièces jointes

Re : Caractère "-" dans une cellule

Bonjour Eric, le fil, le forum,

Maintenant passons à votre méthode (sans édition).

Le plus simple est de faire une édition sélective avec cette macro :

Code:
Sub Touche()
On Error Resume Next 'si autre feuille que Feuil1 (CodeName)
If Intersect(ActiveCell, Feuil1.[D4:D11]) Is Nothing Then
  SendKeys "{F2}-" 'mode édition
Else
  ActiveCell = "-"
End If
End Sub
Fichier joint (à télécharger pour tester).

Je pense que c'est bien la meilleure solution, encore bravo.

A+
 

Pièces jointes

- 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

Réponses
4
Affichages
521
Retour