M
MystSith
Guest
Salut,
Je désire créer une fonction qui permettra de faire le tri d'éléments d'une colonne mais en ayant comme contrainte un nombre maximal (à tout ces éléments pris en compte). De plus, ces cellules trièes (leur valeur) devront être affichées sur des lignes inférieures à la cellule où la fonction est appelée.
J'ai écrit la fonction mais comme j'utilise pas souvent VB... il me semble que j'ai fait n'importe quoi, le cacul de la fonction me donnant une erreur "#VALEUR!"
Voici ce que j'ai fait:
*********************************************
Function SOMA(plage As Range, cible As Integer)
Dim i As Integer
Dim lignes As Integer
Dim ciblereste As Integer
ciblereste = (cible * -1) 'pour avoir la valeur absolue
lignes = Range(plage).Rows 'Nombre de ligne de la plage
Do
If Range(plage(i, 0)) <= (cible * -1) Then
ActiveCell.Offset(i, 0).Value = Range(plage(i, 0)).Value
Else: ActiveCell.Offset(i, 0).Value = ciblereste
End If
ciblereste = ciblereste - Range(plage(i, 0)).Value
i = i + 1
Loop Until ciblereste = 0
End Function
***********************************************
Merci d'avance à celui qui pourra m'aider
Je désire créer une fonction qui permettra de faire le tri d'éléments d'une colonne mais en ayant comme contrainte un nombre maximal (à tout ces éléments pris en compte). De plus, ces cellules trièes (leur valeur) devront être affichées sur des lignes inférieures à la cellule où la fonction est appelée.
J'ai écrit la fonction mais comme j'utilise pas souvent VB... il me semble que j'ai fait n'importe quoi, le cacul de la fonction me donnant une erreur "#VALEUR!"
Voici ce que j'ai fait:
*********************************************
Function SOMA(plage As Range, cible As Integer)
Dim i As Integer
Dim lignes As Integer
Dim ciblereste As Integer
ciblereste = (cible * -1) 'pour avoir la valeur absolue
lignes = Range(plage).Rows 'Nombre de ligne de la plage
Do
If Range(plage(i, 0)) <= (cible * -1) Then
ActiveCell.Offset(i, 0).Value = Range(plage(i, 0)).Value
Else: ActiveCell.Offset(i, 0).Value = ciblereste
End If
ciblereste = ciblereste - Range(plage(i, 0)).Value
i = i + 1
Loop Until ciblereste = 0
End Function
***********************************************
Merci d'avance à celui qui pourra m'aider