Fonction f(x) dans boucle If et For
Bonjour,
Je suis confronté à un nouveau problème, j'aimerais que dans une boucle If qui est dans une boucle For les boucles fassent tourner une fonction du genre f(x) = ax + b. Bon vu comme ça ça parrait pas super clair, je vais expliquer avec le code.
Sub calcul_tp_plv_fond()
Call nb_ligne_resultat
'Renvoie un nombre de ligne
Call nb_ligne_nomc
'Idem
Dim somme_qqt_plv_fond As Long
'Résultat final de ma fonction, soit le f(x) final
Dim val_a As Long
Dim val_b As Long
With Sheets("calculs")
For i = 1 To (ligne_nomc - 1)
val_a = Range("A" & (i + 1))
'val_a est la valeur à comparer dans cette partie de ma macro
With Sheets("resultat")
For j = 1 To ligne_resultat
val_b = .Range("T" & (j + 1))
'val_b sera le "b" de ma fonction
If val_a = Range("A" & (j + 1)) Then
'Et c'est ici que j'aimerai introduire ma fonction qui serait :
'f(j) = f(j - 1) + val_b
'Et que pour la dernière valeur de f(j), lui attribuer le nom somme_qqt_plv_fond
End If
Next
End With
Next
End With
MsgBox somme_qqt_plv_fond
End SubJusqu'au If, cette partie de macro est viable, mais ensuite je suis perdu.
En gros pour chaque j, j'aimerais que ma fonction prenne la valeur de l'addition entre val_b et la valeur de la fonction en (j - 1).
Voilà, je ne sais pas si c'est clair, si ça ne l'est pas, n'hésitez pas à demander plus de précisions.
Alors j'ai trouvé une alternative à mon problème, je n'ai pas introduit de fonction au final, j'ai instauré 4 valeurs (a, b, c et d) et j'ai joué un peu dans tous les sens avec ces valeurs afin d'obtenir un résultat.
Sub calcul_debits_yr()
Call nb_ligne_resultat
Call nb_ligne_nomc
Dim a, b, c, d As Long
Dim code_inter As Long
Dim code_fin As Long
With Sheets("calculs")
Range("D2:D" & ligne_nomc).ClearContents
'Somme quantité
For i = 1 To (ligne_nomc - 1)
a = 0
b = 0
c = 0
d = 0
e = 0
val_a = Range("A" & (i + 1))
With Sheets("resultat")
For j = 1 To ligne_resultat
c = .Range("A" & (i + 1)).Value
If c = .Range("A" & (j + 1)) Then
d = .Range("W" & (j + 1)).Value
b = a + d
a = b
End If
Next
End With
Range("D" & (i + 1)) = b
Next