Fonction ou procédure du type f(x,y,z)=L:comme donnée1,M:comme donnée2
excusez moi je voudrais savoir comment je puisse déclarer une fonction ou une procédure qui fait ressortir plusieurs résultats de variables de ce genre la
Sub calcul_débords_constant()
j = 3
While Cells(j, 2) <> 0
y = (Abs(Cells(j, 2) - Cells(j, 3)))
If (y Mod (5) >= 3) Then
x = (y \ (5)) * 5 + 5
Else
x = (y \ (5)) * 5
End If
a = 60
Do Until (Cells(j, 6) * 1000 / (a * (a + x)) <= Sigma_calcul)
a = a + 5
Loop
If (Cells(j, 2) < Cells(j, 3)) Then
Cells(j, 8) = a
Cells(j, 9) = a + x
Else
Cells(j, 8) = a + x
Cells(j, 9) = a
End If
j = j + 1
d1 = Application.WorksheetFunction.Min(Cells(j, 8), Cells(j, 9)) - Application.WorksheetFunction.Min(Cells(j, 2), Cells(j, 3))
d2 = Application.WorksheetFunction.Max(Cells(j, 8), Cells(j, 9)) - Application.WorksheetFunction.Max(Cells(j, 2), Cells(j, 3))
d = Application.WorksheetFunction.Max(d1 / 4, d2 / 4)
h1 = d + Cells(11, 19)
h = 0
Do Until (h >= h1)
h = h + 5
Loop
Cells(j, 10) = Application.WorksheetFunction.Max(h, 20)
j = j + 1
Wend
End Subaprés je voudrais récupérer à chaque fois les valeurs de h,a,x
Bonsoir,
Là tu fais une procédure de type Sub, qui fait ce que tu lui fais faire, qui peut donc affecter des résultats de calculs ou autres à des variables.
Si ces variables sont de niveau module ces valeurs seront conservées en fin de procédure tant que tu ne les modifies pas par une autre procédure ou la même...
Et tu peux réutiliser tes variables ou récupérer leur valeur à partir d'autres procédures. Tu peux également affecter les valeurs à des cellules pour les afficher.
Une procédure de type Function peut faire la même chose qu'une Sub mais a de plus vocation à renvoyer un résultat.
Ce résultat est renvoyé sous la forme, généralement en fin de fonction :
NomFonction = RésultatIl peut y avoir plusieurs renvois selon conditions dans le code de la Function, et le résultat peut également être un tableau. Dans ce cas tu peux par exemple, calculer tes résultats dans des variables et les faire renvoyer par la fonction en tableau :
NomFonction = Array(var1, var2, var3, var4, ...)Une fonction s'utilise le plus souvent à gauche d'un signe = :
MonRésultat = NomFonction()Les arguments à passer à la fonction seront mis dans les parenthèses le cas échéant. Elle peut être également dans une expression utilisant le résultat qu'elle renvoie :
If NomFonction() = z ThenMais utilisée avec une syntaxe d'appel de Sub, elle fonctionera comme une Sub, sans renvoyer de résultat :
NomFonctionOn peut aussi l'utiliser en feuille de calcul de la même façon que les fonctions Excel (à condition de ne pas lui faire accomplir d'action interdites pour les fonctions de feuille de calcul). On l'appelle alors fonction personnalisée...
Il est bon dans ce cas de placer en début de code exécutable de la procédure Application.Volatile ou Application.Volatile False, selon que l'on souhaite qu'elle soit ou non recalculée lors des recalculs (cette mention n'a d'effet qu'en feuille de calcul).
Lui faire renvoyer plusieurs résultats (sous forme de tableau) dans une utilisation de feuille de calcul, exige alors une utilisation matricielle : sélection du nombre de cellules voulues pour les résultats, insertion fonction, validation par Ctrl+Maj+Entrée.
Noter que un tableau à une dimension (tel que celui produit par Array) renverra un résultat en ligne, pour obtenir un résultat en colonne il faudra le transposer.
Tu devrais avoir assez d'éléments pour poursuivre selon ce que tu veux faire.
Cordialement.