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

Résolu
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013 - 15 mars 2010 à 12:28
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 ; )

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 mars 2010 à 14:24
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]
3
cs_hazzel Messages postés 20 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 19 juillet 2013
15 mars 2010 à 15:21
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!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 mars 2010 à 15:42
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
++
0
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
je pense que j'ai encore beaucoup à apprendre : )

merci pr l'info
0
Rejoignez-nous