yakutake83
XLDnaute Occasionnel
[Résolu] Boucle en Macro (je cale)
Bonjour.
Je travaille sous Excel 2003 et j'ai un petit problème : je cherche à faire un gros calcul, et je ne trouve pas la formule qui va me servir pour le faire!
Je vous donne la formalisation mathématique, en espérant que quelqu'un pourra m'aider!
J'ai plusieurs valeurs connues (appelées ici Soprano, Arte, Forte, Piano) se trouvant dans un tableau;
et une inconnue X
Je veux faire la chose suivante:
Si Soprano > Arte
____ Pour X allant de 1 à Forte-1 faire
________ Si Soprano < Arte + (12*X/Forte) alors Piano = Piano + Piano*(Forte-X)/X puis sortir de la boucle "Pour"
________ Sinon X = X+1
____ Fin Pour
Sinon
____ Pour X allant de -(Forte-1) à 0 faire
________ Si Soprano < Arte - (12*X/Forte) alors Piano = Piano - Piano*X/(Forte+X) puis sortir de la boucle "Pour"
________ Sinon X = X+1
___ Fin Pour
Fin
Voici ce que j'ai fait sous VBA, j'aimerais savoir si c'est correct, et dans le cas contraire, ce que je dois rectifier!
Public Sub Compar()
Dim Soprano As Byte
Set Soprano = CByte(Worksheets("Sheet1").Range("A2"))
Dim Arte As Byte
Set Arte = CByte(Worksheets("Sheet1").Range("H2"))
Dim Forte As Byte
Set Forte = CByte(Worksheets("Sheet1").Range("AL2"))
Dim Piano As Variant
Set Piano = CDec(Worksheets("Sheet1").Range("AY2"))
If (Soprano > Arte) Then
____Meth1
Else
____Meth2
End If
End Sub
Public Sub Meth1()
Dim x As Byte
For x = 0 To Forte
____If (Soprano < Arte + 12 * x / Forte) Then
____Piano = Piano + Piano * (Forte - x) / x
____Exit For
____End If
Next
End Sub
Public Sub Meth2()
Dim x As Byte
For x = -ForteTo 0
____If (Soprano < Arte - 12 * x / Forte) Then
____Piano = Piano - Piano * x / (Forte + x)
____Exit For
____End If
Next
End Sub
Merci beaucoup pour votre aide!
Edit : j'ai ajouté les "Fin Pour" comme demandé par Toine!
Bonjour.
Je travaille sous Excel 2003 et j'ai un petit problème : je cherche à faire un gros calcul, et je ne trouve pas la formule qui va me servir pour le faire!
Je vous donne la formalisation mathématique, en espérant que quelqu'un pourra m'aider!
J'ai plusieurs valeurs connues (appelées ici Soprano, Arte, Forte, Piano) se trouvant dans un tableau;
et une inconnue X
Je veux faire la chose suivante:
Si Soprano > Arte
____ Pour X allant de 1 à Forte-1 faire
________ Si Soprano < Arte + (12*X/Forte) alors Piano = Piano + Piano*(Forte-X)/X puis sortir de la boucle "Pour"
________ Sinon X = X+1
____ Fin Pour
Sinon
____ Pour X allant de -(Forte-1) à 0 faire
________ Si Soprano < Arte - (12*X/Forte) alors Piano = Piano - Piano*X/(Forte+X) puis sortir de la boucle "Pour"
________ Sinon X = X+1
___ Fin Pour
Fin
Voici ce que j'ai fait sous VBA, j'aimerais savoir si c'est correct, et dans le cas contraire, ce que je dois rectifier!
Public Sub Compar()
Dim Soprano As Byte
Set Soprano = CByte(Worksheets("Sheet1").Range("A2"))
Dim Arte As Byte
Set Arte = CByte(Worksheets("Sheet1").Range("H2"))
Dim Forte As Byte
Set Forte = CByte(Worksheets("Sheet1").Range("AL2"))
Dim Piano As Variant
Set Piano = CDec(Worksheets("Sheet1").Range("AY2"))
If (Soprano > Arte) Then
____Meth1
Else
____Meth2
End If
End Sub
Public Sub Meth1()
Dim x As Byte
For x = 0 To Forte
____If (Soprano < Arte + 12 * x / Forte) Then
____Piano = Piano + Piano * (Forte - x) / x
____Exit For
____End If
Next
End Sub
Public Sub Meth2()
Dim x As Byte
For x = -ForteTo 0
____If (Soprano < Arte - 12 * x / Forte) Then
____Piano = Piano - Piano * x / (Forte + x)
____Exit For
____End If
Next
End Sub
Merci beaucoup pour votre aide!
Edit : j'ai ajouté les "Fin Pour" comme demandé par Toine!
Dernière édition: