Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

signe négatif inversé

  • Initiateur de la discussion Initiateur de la discussion Tino
  • 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 !

T

Tino

Guest
Bonjour à tous,
J'ai actuellement un fichier excel sur lequel les nombres négatif ont le format suivant 100- 😱
J'ai réussi à faire en sorte que ce format soit compris en tant que nombre négatif en faisant

Format cellule personnalisée 0;0-;0

Puis en affectant une macro

Sub Macro()
* * For Each c In Selection
* * * * c.Value = c.Value * 1
* * Next c
End Sub

Seulement je préfèrerai basculer le signe - de la droite vers la gauche plutôt que d'utiliser la technique ci-dessus.

Si quelqu'un a une idée je le remercie d'avance.😉
Dans tous les cas merci.
 
Re : signe négatif inversé

Bonjour Tino

Tu dis sur 1 fichier Excel, ca veux dire que pour les autres tu as un format classique ? Si c'est pas le cas la solution doit être dans les paramètres régionaux.

Bonne soirée
@+
 
Re : signe négatif inversé

En fait à la base j'ai un énorme fichier pdf que je transforme en fichier excel.
Cependant dans le fichier pdf source les chiffres négatifs sont codifiés en tant que 100- et non -100.
Donc lorsque je passe sur excel ce dernier ne le comprends pas comme étant un nombre, encore moins un négatif.
Ma problématique est de retraduire le 100- en -100 afin de ne pas perturber tout mon système automatisé en aval.
Merci
 
Re : signe négatif inversé

Salut Tino, et tout les autres,

Tu peux lancer ce bout de code après l'avoir copié dans un module:
NB: Il s'applique à la sélection !

Code:
'=======================================================
'Procédure qui passe le signe '-' devant un nombre s'il
'est positionné derrière : 123- devient -123 !
'=======================================================
Sub sSignRightToLeft()
Dim i As Long
Dim j As Long
Dim nbColonnes As Long
Dim MyArray As Variant
Dim MyRange As Range

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

Set MyRange = Selection
With MyRange
    nbColonnes = .Columns.Count
    MyArray = .Value
End With
    For i = 1 To nbColonnes
        For j = 1 To UBound(MyArray, i)
            Select Case VarType(MyArray(j, i))
                Case vbString
                    If Right(MyArray(j, i), 1) = "-" Then
                        On Error Resume Next
                        MyArray(j, i) = CDbl(-Left(MyArray(j, i), Len(MyArray(j, i)) - 1))
                    End If
                Case vbEmpty
                    MyArray(j, i) = 0
                Case Else
                    MyArray(j, i) = CDbl(Trim(MyArray(j, i)))
            End Select
        Next
    Next
MyRange.Value = MyArray
With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With
End Sub

Bon courage,
 
Re : signe négatif inversé

Merci beacoup,
Je dois dire que là ça dépasse mes compétences 😱
Le seul hic est que lorsque je lance la macro, j'ai un bug au niveau de la ligne
For j = 1 To UBound(MyArray, i)
Et là c'est un language que je ne comprends plus donc je ne sais pas si c'est moi qui ai fait une bêtise ou pas 😀
Donc si quelqu'un peut m'éclairer... encore une fois !!!
Merci
 
Re : signe négatif inversé

bonjour Tino

salut Jam

en un peu plus concis (mais à tester)

Code:
Option Explicit
Sub change()
Dim cel As Range
For Each cel In Selection
If Right(cel, 1) = "-" Then cel.Value = Val("-" & Left(cel, Len(cel) - 1))
Next cel
End Sub

oups collision !!

salut Tibo
 
Re : signe négatif inversé

re

petite modification pour le cas ou il y aurait des decimales

Code:
Option Explicit
Sub change()
Dim cel As Range
For Each cel In Selection
cel = Replace(cel, ",", ".")
If Right(cel, 1) = "-" Then cel.Value = Val("-" & Left(cel, Len(cel) - 1))
Next cel
End Sub
 
Re : signe négatif inversé

Salut PierreJean, Tino, Tibo,

Bravo pour le Option Explicit et la déclaration de variable 😉 ...et surtout pour la concision.
Juste pour expliquer la longueur de la macro développée sous XL97 (oui, y'a longtemps...10 ans déjà):
L'idée était d'aller très vite sur des tableaux très long (plusieurs dizaines de milliers de lignes) à une époque où la puissance des machine (Pentium I ou II) n'était pas celle d'aujourd'hui. D'où le traitement dans un tableau en mémoire.
Je ne l'ai pas remise au goût du jour mais je n'ai jamais été déçu par elle 🙁

Tino, si tu pouvais poster un bout de ton tableau j'aimerai bien voir d'où provient l'erreur.

Bon courage.
 
Re : signe négatif inversé

Bonjour à tous,
Pour revenir sur la première macro j'ai tout simplement ouvert un fichier vierge.
J'ai entré une valeur quelconque avec le signe négatif à droite ex: 100-.
J'ai lancé la macro.
Cette dernière ne peut se dérouler jusqu'à son terme et s'arrête sur: For j = 1 To UBound(MyArray, i)
La valeur n'est donc pas modifiée en -100.

Mais pas de pbs les autres macros se déroulent normalement.

Merci encore pour cette aide😉
 
Re : signe négatif inversé

Salut Tino,

Question: Est-ce que tu sélectionnes bien la cellule AVANT de lancer la macro ?

J'ai testé ma macro sous plusieurs versions d'Excel sans rencontrer ce pbm je suis donc un peu surpris de son dysfonctionnement. J'ai bien une erreur mais uniquement dans le cas où UNE seule donnée est présente.

A+
 
Dernière édition:
Re : signe négatif inversé

Bonjour Jam,
Effectivement je viens aussi d'essayer.
Si il n'y a qu'une seule valeur avec signe inversé (selectionnée) la macro ne se déroule pas jusqu'au bout.
Si il y a plusieurs valeurs avec un signe inversé (non selectionnées) la macro ne se déroule pas jusqu'au bout.
Si il y a plusieurs valeurs avec un signe inversé (selectionnées) la macro se déroule jusqu'au bout.

Donc tout fonctionne parfaitement.
Merci pour tout 😉
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
791
F
  • Question Question
Réponses
11
Affichages
1 K
Réponses
12
Affichages
1 K
D
Réponses
2
Affichages
947
D
S
Réponses
13
Affichages
2 K
Stedemart
S
  • Question Question
Microsoft 365 Code VBA - Erreur
Réponses
1
Affichages
769
D
Réponses
1
Affichages
1 K
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…