1 pièce(s) jointe(s)
fonction modifier plage de cellule
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!
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é
Code:
1 2 3 4 5 6
| Private Sub CommandButton1_Click()
modifier_plage(("A10"), ("E10")) 'c'est à dire le range A10:E10
modifier_plage(("G10"), ("N10"))
modifier_plage(("S10"), ("V10"))
modifier_plage(("A5"), ("E5"))
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 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 |
Pour plus d'explication vous trouverez en pièce jointe mon fichier excel
Je vous remercie d'avance pour votre aide