appel fonction dans une boucle

  • Initiateur de la discussion Initiateur de la discussion remady
  • 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 !

R

remady

Guest
Bonjour tout le monde,

Je souhaite faire appel à des fonctions se trouvant dans une autre feuille dans une boucle. Ses fonctions portent le même nom ( fonction1, fonction2, fonction3...)
je sais que ca doit etre simple, et j'ai beau cherché mais je n'arrive pas à trouver la bonne syntaxe pour introduire l'indice i dans l'appel de ma fonction de la facon suivante :

sub()

for i=1 to 8
call Feuil3.fonction&i
next

end sub

Merci d'avance de votre aide
 
Re : appel fonction dans une boucle

Re,

En fait j'ai intentionnellement déclarer les macros indépendamment dans la mesure ou j'ai besoin de les appeler séparément dans d'autre cas, ce qui m'était impossible si elles étaient tous contenus dans la même macro dans une boucle, enfin peut être que je me trompe, je ne suis encore que débutant.
En tout cas Pierrot, je te remercie pour ta proposition, elle résout parfaitement mon problème.
 
Re : appel fonction dans une boucle

Re, habitude

Voici en pièce jointe un fichier qui contient les macros que j'ai créé, et comment je les utilise, par contre je n'ai fais que copier les codes, pour des raison de confidentialités, je ne peux mettre les données sur lesquelles sont effectuées les calculs, désolé.

En espérant que tu puisses m'aider juste avec ça. Merci encore une fois
 

Pièces jointes

  • ex.xls
    ex.xls
    33.5 KB · Affichages: 55
  • ex.xls
    ex.xls
    33.5 KB · Affichages: 62
  • ex.xls
    ex.xls
    33.5 KB · Affichages: 59
Re : appel fonction dans une boucle

Tu as 7 fonctions qui font la même chose

Tu peux donc remplacer tes 7 fonctions par 1 seule avec 1 paramètre

Code:
Sub LesMoteurs(moteur)
Dim j As Long, i As Long
Dim P(4) As Long, MoyennePannes As Long, MoyenneIncidents As Long, MoyenneCouts As Long
For j = D(moteur - 1) To F(moteur - 1)
P(0) = P(0) + IIf(Cells(3, j).Value = "", 0, Cells(moteur + 1, j).Value)
P(1) = P(1) + Cells(moteur + 8, j).Value * Cells(moteur + 1, j).Value
P(2) = P(2) + (Cells(moteur + 15, j).Value * Cells(moteur + 1, j).Value)
P(3) = P(3) + (Cells(moteur + 22, j).Value * Cells(moteur + 1, j).Value)
If P(0) = 0 Then

MoyennePannes = 0
MoyenneIncidents = 0
MoyenneCouts = 0

Else

MoyennePannes = P(1) / P(0)
MoyenneIncidents = P(2) / P(0)
MoyenneCouts = P(3) / P(0)

End If

Feuil4.Cells(moteur + 1, 4).Value = MoyennePannes
Feuil4.Cells(moteur + 1, 5).Value = MoyenneIncidents
Feuil4.Cells(moteur + 1, 6).Value = MoyenneCouts

Next j

End Sub

Que tu mets dans un Module

Et tu appel ta fonction en lui passant le numéro du moteur

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
For i = 1 To 7
If Not Intersect(Target, Range("B" & i & ":C" & i + 1)) Is Nothing Then
    LesMoteurs i  'ICI appel de fonction avec paramètre i
End If
On Error Resume Next
Next i
End Sub
 
Re : appel fonction dans une boucle

Re,

Merci beaucoup habitude, ta proposition m'aide beaucoup et fonctionne d'ailleurs très bien, il y a seulement un pti truc : lorsque je change les valeurs pour relancer le calcul, par exemple quand je lance lesmoteurs 3, je constate que lesmoteurs 4 s'exécute aussi, et donc en règle general j'ai une itération de plus dans mon appel de fonction !! Est-ce que t'as une idée d'ou ca peut venir ??

Merci encore une fois
 
- 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

Réponses
9
Affichages
884
Retour