supprimer le signe '-' des données copiées vers new onglet

crisud

XLDnaute Nouveau
Bonsoir

J'ai besoin de votre aide pour corriger une macro.

Je pars d'une balance comptable comportant des montants en positif et des montant en négatif, qui doivent être recopier dans des onglets de destination selon une table d'affectation.

Elle fonctionne correctement sauf qu'elle me renvoie des montant négatif, alors que pour un but de présentation je les voudrais en valeur absolue uniquement pour certain compte.

Convertir tous les négatifs en valeur absolue j'aurai fait value *-1
mais je voudrais uniquement pour certain compte, à l'origine celui qui a créé cette macro avait opté pour mettre un signe moins devant la plagedecompte.
hors cela marche bien lorsqu'il y a qu'un compte mais plus lorsque nous avons plusieurs compte.

Dans table de configuration j'ai
-477000 donc ici j'ai bien la valeur sans le signe
-408000/408999 une vrai plage de 408000 à 408999 mais excel me refuse ce signe devant 408000/408999



voici mon code
Code:
Private Sub Fill()
Dim r As Range
Dim NbLignesBalance As Long
Dim NbLignesConfig As Long
Dim ListePlageComptes As New objListePlageDeComptes
Dim PlageCompte As objPlageDeComptes
Dim value As Double
Dim SommeProd As Variant
 
 
  NbLignesBalance = frmBalance.[A1].CurrentRegion.Rows.Count
  NbLignesConfig = frmConfig.[A1].CurrentRegion.Rows.Count
  
  On Error Resume Next
  For Each r In frmConfig.Range("A2:A" & NbLignesConfig)
    ListePlageComptes.Clear
    ListePlageComptes.Init (r.Offset(0, 2).value)
    value = 0
    For Each PlageCompte In ListePlageComptes.Liste
      
      SommeProd = Evaluate(PlageCompte.Signe & "SUMPRODUCT((Balance!G2:G" & NbLignesBalance & ">=" & PlageCompte.Debut & ")*(Balance!G2:G" & NbLignesBalance & "<=" & PlageCompte.Fin & ")*Balance!E2:E" & NbLignesBalance & ")")
    
   '   SommeProd = Evaluate("SUMPRODUCT((Balance!G2:G" & NbLignesBalance & ">=" & PlageCompte.Debut & ")*(Balance!G2:G" & NbLignesBalance & "<=" & PlageCompte.Fin & ")*Balance!E2:E" & NbLignesBalance & ")")
      If IsNumeric(SommeProd) Then value = value + SommeProd
           
    Next PlageCompte
    ThisWorkbook.Worksheets(r.value).Range(r.Offset(0, 1).value) = value
    
  Next r
  On Error GoTo 0
End Sub



Merci de votre aide
Christian
 

GeoTrouvePas

XLDnaute Impliqué
Re : supprimer le signe '-' des données copiées vers new onglet

Bonjour crisud

-408000/408999 étant surement considérer comme une chaîne de caractères par Excel, il est normal qu'il bloque sur le fait de le multiplier par -1.

Pour supprimer ou remplacer un caractère dans une chaîne de caractères, le mieux est d'utiliser la fonction "Replace" comme ceci :

Code:
NombreSansSigne = Replace("-408000/408999", "-", "")
 

Pierrot93

XLDnaute Barbatruc
Re : supprimer le signe '-' des données copiées vers new onglet

Bonjour crisud, Geo

pour convertir un nombre en valeur absolue, regarde du coté de la fonction vba "ABS", un exemple ci-dessous :
Code:
Dim x As Double
x = -477000
x = Abs(x)

bonne journée
@+
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet