Boucle en Macro (je cale)

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

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!
 
Dernière édition:
Re : Boucle en Macro (je cale)

re....

je sens que tu vas me haïr, pascal, mais j'aurais encore besoin de tes lumières...
bon, y'a aucun problème quand je veux ajouter des colonnes... mais si je suis amené à ajouter des lignes, je vais devoir modifier la macro à chaque ajout de ligne, tel que c'est maintenant...
aurais-tu un moyen de faire en sorte que ça s'applique à TOUTES les lignes qui contiennent déjà des informations? (c'est à dire pour chaque ligne où Soprano, Arte, forte et Piano sont renseignés, et que ça reste vide pour les lignes où c'est pas rempli)

je te remercie sincèrement d'avance, en espérant que je n'abuse pas trop...
 
Re : Boucle en Macro (je cale)

re

bin en fait, y'a pas de problème! j'avais testé en ajoutant une ligne à la fin, ça marchait pas, mais si j'insère une ligne au milieu du tableau, ou si je coupe-colle la dernière ligne et que je l'insère ailleurs dans le tableau, ça marche! donc... on oublie le problème 😀
 
- 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

Discussions similaires

Réponses
7
Affichages
454
Réponses
3
Affichages
922
Réponses
4
Affichages
732
Réponses
4
Affichages
675
Retour