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
Merci de votre aide
Christian
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