Bonjour,
alors mon problème sous vba est le suivant:
j'ai un traitement à faire sur un nombre de cellule: plus concretement: supposant qu'on a 5 cellule à coté l'un de l'autre, si on a une cellule negative et le reste des cellules positives alors on met la cellule negative à zero et on réparti la valeur negative sur les cellule positives
Exemple
5 10 -6 3 0 => 3 8 0 1 0
Ce n'était pas difficil je l'ai déja fait! le probleme que j'ai c'est de le mettre sous forme de fonction et de l'appliquer à tous les plages de cellules que je veux!
C'est à dire mettre un truc genre :
for i in ("A10:F10","H12:L12"....)
modifier_plage(i)
Je ne sais pas si ça existe sous vba mais je suis resté bloqué la dessus pendant 2 jours
voilà le code auquel je suis arrivé
Private Sub CommandButton1_Click()
modifier_plage(("A10"), ("E10"))
modifier_plage(("G10"), ("N10"))
modifier_plage(("S10"), ("V10"))
modifier_plage(("A5"), ("E5"))
End Sub
Public Function modifier_plage(ByRef Y As Range, ByRef Z As Range)
Dim Plage_calcul As Range
Set Plage_calcul = Range(Y.Address & ":" & Z.Address)
Dim Plage As Range, Cellule As Range
Dim Position As Integer
Dim valeurneg As Integer
Dim nbpos As Integer
nbpos = 0
valeurneg = 0
For Each Cellule In Plage_calcul
If Cellule.Value < 0 Then valeurneg = -Cellule.Value
' And Cellule.Value = 0
If Cellule.Value > 0 Then nbpos = nbpos + 1
Next Cellule
If valeurneg <> 0 Then
For Each Cellule In Plage
If Cellule.Value > 0 Then Cellule.Value = Cellule.Value - valeurneg / nbpos
If Cellule.Value < 0 Then Cellule.Value = 0
Next Cellule
End If
End Function
Je voudrais aussi savoir si c'est possible pour des worksheet différents
Je vous remercie d'avance pour votre aide
alors mon problème sous vba est le suivant:
j'ai un traitement à faire sur un nombre de cellule: plus concretement: supposant qu'on a 5 cellule à coté l'un de l'autre, si on a une cellule negative et le reste des cellules positives alors on met la cellule negative à zero et on réparti la valeur negative sur les cellule positives
Exemple
5 10 -6 3 0 => 3 8 0 1 0
Ce n'était pas difficil je l'ai déja fait! le probleme que j'ai c'est de le mettre sous forme de fonction et de l'appliquer à tous les plages de cellules que je veux!
C'est à dire mettre un truc genre :
for i in ("A10:F10","H12:L12"....)
modifier_plage(i)
Je ne sais pas si ça existe sous vba mais je suis resté bloqué la dessus pendant 2 jours
voilà le code auquel je suis arrivé
Private Sub CommandButton1_Click()
modifier_plage(("A10"), ("E10"))
modifier_plage(("G10"), ("N10"))
modifier_plage(("S10"), ("V10"))
modifier_plage(("A5"), ("E5"))
End Sub
Public Function modifier_plage(ByRef Y As Range, ByRef Z As Range)
Dim Plage_calcul As Range
Set Plage_calcul = Range(Y.Address & ":" & Z.Address)
Dim Plage As Range, Cellule As Range
Dim Position As Integer
Dim valeurneg As Integer
Dim nbpos As Integer
nbpos = 0
valeurneg = 0
For Each Cellule In Plage_calcul
If Cellule.Value < 0 Then valeurneg = -Cellule.Value
' And Cellule.Value = 0
If Cellule.Value > 0 Then nbpos = nbpos + 1
Next Cellule
If valeurneg <> 0 Then
For Each Cellule In Plage
If Cellule.Value > 0 Then Cellule.Value = Cellule.Value - valeurneg / nbpos
If Cellule.Value < 0 Then Cellule.Value = 0
Next Cellule
End If
End Function
Je voudrais aussi savoir si c'est possible pour des worksheet différents
Je vous remercie d'avance pour votre aide