• Initiateur de la discussion Initiateur de la discussion MystSith
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 🙂
 
c'est pas une fonction qu'il faut c'est une macro exemple (a finir)

Sub SOMA()
cible = 30
i = 1
For Each element In Range("d5:d14")

If element <= cible Then
ActiveCell.Offset(i, 0) = element
End If
i = i + 1
Next
End Sub
 
C'est vrai que ma fonction ne renvoie pas de valeur mais je ne sais pas comment incorporer une macro (procédure Sub) à toutes une série de cellules... j'ai pas envie de l'attacher à un bouton où autre... une idée Svp?

La boucle "For Each In Next" est plus facile en effet mais je voulais essayer autre chose pour voir si on pouvait s'en passer...

Par contre pour la syntaxe de "Range(plage(i, 0)).Value" j'ai des doutes?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
481
Réponses
3
Affichages
569
Retour