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

Signaler
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
-
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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]
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013

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!
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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
++
Messages postés
20
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
19 juillet 2013

je pense que j'ai encore beaucoup à apprendre : )

merci pr l'info