[déplacé VB.NET -> VBA] replacer un signe moins [Résolu]

Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
- - Dernière réponse : cs_hazzel
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
- 16 mars 2010 à 11:00
Bonjour à tous!

J'explique mon pb :
Je realise des extractions de donnée, mais le souci c'est que le signe - de l'extraction se situe à droite (ex : 15000-)

Se que je souhaite faire est de replacer tous les signes - mais à gauche afin d'avoir une cohérence dans les formules.

Voici se que je viens de faire:

Sub signe()

For Each cell In Selection
If Right(cell.Value, 1) = "-" Then
cell.Value = Left(cell.Value, Len(cell.Value) - 1)
ActiveCell.FormulaR1C1 = cell.Value * -1

End If
Next cell

End Sub


Le résultat est que le signe disparait, mais n'est pas déplacé (sauf si je selection 1 seule cellule : cela fonctionne) Or j'ai a peu pret 4500 cellules et toutes ne sont pas forcement négative :x


Merci si vous pouviez me donner un petit coup de main ; )
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
3
Merci
salut,

et que donne :
cell.Value = "-" & Left(cell.Value, Len(cstr(cell.Value))-1)
??

ou jouer peut-être sur .TEXT plutôt que .VALUE? (s'il y a)

NB : VB.NET ? NON!! VBA!! corrigé
++
[hr]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
0
Merci
Merci beaucoup c'est parfait, ca marche!! : ))

Et désolé pour VB.net je n'avais pas fait attention ^^

en tout cas encore merci :
cell.Value = "-" & Left(cell.Value, Len(cstr(cell.Value))-1)

passe très bien!
Commenter la réponse de cs_hazzel
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
pense à valider ma précédente réponse dans ce cas

ps : petite explication
la valeur est un numérique, LEN sera donc faux car il tiendra compte de la taille de la valeur, et non de la chaine qui le compose, c'est pourquoi on passe par CSTR

ex :
Dim iVal As Integer: iVal = 123
MsgBox Len(iVal) '=> renvoie 2
MsgBox Len(CStr(iVal)) '=> renvoie 3


bonne continuation
++
Commenter la réponse de PCPT
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
0
Merci
je pense que j'ai encore beaucoup à apprendre : )

merci pr l'info
Commenter la réponse de cs_hazzel