Itération qui ne s’arrête pas
Résolu
ID_Fabio
Messages postés
3
Statut
Membre
-
ID_Fabio Messages postés 3 Statut Membre -
ID_Fabio Messages postés 3 Statut Membre -
Bonjour à toutes et à tous,
Je fais mes premier pas dans le monde du VBA.
J'ai un petit problème sur les commandes que écrites, mon itération ne marche pas pourriez vous m'aider ?
Je vous décrit ce que je veux faire :
Dans ma feuille (accueil) j'ai défini un paramètre variable (au choix de l'utilisateur du fichier) , cette variable est ma valeur souhaiter pour mes calculs.
Dans ma feuille "outil de calcul" se trouve une valeur issue d'un calcul antérieur.
Mon but est de multiplier la valeur dans "Outil de calcul" par un coefficient jusqu’à atteindre ma valeur souhaité ( la variable de la feuille "Accueil")
Si cette condition n'est pas atteinte , le calcul continue.
Sub Boucles() Dim Capa As Integer Dim Pas As Double Dim x As Double Dim li As Integer Dim li1 As Integer Dim col As Integer Dim col1 As Integer Dim DoDM As Integer Pas = 0.01 li = 66 li1 = 61 col = 3 col1 = 3 DoDM = Sheets("Accueil").Range("g41") 'Capa = Sheets("Outil de calcul").Range("C61").Value For x = 0.5 To 1 Step 0.01 'Pas If (Sheets("Outil de calcul").Range("d65") <> DoDM)and Sheets("Outil de calcul").Range("d60") <> DoDM) Then ' Condition sur la valeur de DoD moyen souhaité par rapport à la Capa de base Sheets("Outil de calcul").Select Sheets("Outil de calcul").Range("C66").Value = Cells(li1, col1) * (x) ' Multiplie la cellule C61 (capa bat centralisée par le pas Else End If Next Sheets("Outil de calcul").Select Range("C62").Select ThisWorkbook.RefreshAll ThisWorkbook.RefreshAll ThisWorkbook.RefreshAll Sheets("Outil de calcul").Select End Sub
Mon problème est :
- Mon itération de valeur ne s'arrête pas malgré le Else et le End If
- Ma cellule D65 et D60 dépendent directement de la valeur de la cellule C66 et C61 de la feuille "Outil de calcul"
Ma condition est telle que : tant que D65 et D60 sont inf à G41 de la feuille "Accueil"
Je fais mon itération .
En faissant cette itération je fais varier ma valeur de C66 et donc par continuité ma valeur de D65.
Je veux que mon itération s'arrête lorsque D65 = G41 de la feuille "Acceuil"
Pourriez vous m'éclairer s'il vous plaît ?
Merci d'avance
A voir également:
- Itération qui ne s’arrête pas
- Huawei mobile service s'arrête systématiquement - Forum Xiaomi
- Quickstep android s'arrête systématiquement ✓ - Forum Téléphones & tablettes Android
- Paramètre s'arrête systématiquement samsung - Forum Samsung
- Ventilateur carte graphique tourne puis s'arrete - Forum Refroidissement
- Message s'arrête systématiquement xiaomi - Forum Xiaomi
4 réponses
Bonjour,
Juste un if/else ne suffit pas....
Une fois la condition atteinte.. tu dois sortir de la boucle à l'aide d'un
Juste un if/else ne suffit pas....
Une fois la condition atteinte.. tu dois sortir de la boucle à l'aide d'un
Exit For
Merci pour ta réponse,
Oui je l'ai rajouté entre temps :
Cependant, mon itération continue toujours même après l'ajout.
Je pense qu'il me faut une condition en plus vu que l'itération continue de tourner , en disant que :
quand D65 = G41 le calcul s'arrête , sauf que je ne sais pas comment m'y prendre .
Oui je l'ai rajouté entre temps :
Else
Exit For
End If
Cependant, mon itération continue toujours même après l'ajout.
Je pense qu'il me faut une condition en plus vu que l'itération continue de tourner , en disant que :
quand D65 = G41 le calcul s'arrête , sauf que je ne sais pas comment m'y prendre .
Bonjour,
1. Il y a pas mal de code inutile.
2. La différence de syntaxe n'aide pas à la compréhension. ex.
3. Je pense toutefois avoir à peu près compris :
- avec le jeu des calculs, je pense que tes pourcentages en D65 ne tombent pas juste (ex. 73,47%)
- donc je pense qu'il faut plutôt utiliser une boucle While et utiliser des inégalités ("<" ou ">" plutôt que différent "<>")
A+
1. Il y a pas mal de code inutile.
2. La différence de syntaxe n'aide pas à la compréhension. ex.
Sheets("Outil de calcul").Range("C66").Value = Cells(li1, col1) * (x) ' Multiplie la cellule C61 (capa bat centralisée par le pas
3. Je pense toutefois avoir à peu près compris :
- avec le jeu des calculs, je pense que tes pourcentages en D65 ne tombent pas juste (ex. 73,47%)
- donc je pense qu'il faut plutôt utiliser une boucle While et utiliser des inégalités ("<" ou ">" plutôt que différent "<>")
A+
Merci pour ta réponse Zoul67,
J'ai trouvé la réponse !
le problème vient de la déclaration de la variable DoDM : ici un Integer alors qu'il est en fait un Double.
Ce qui fait que le calcul mouline sans s’arrêter puisque pour lui les seuls résultats qui marche sont soit 1 soit 0. Ce qui est faux.
En modifiant Integer par Double ça résout le problème
J'ai trouvé la réponse !
le problème vient de la déclaration de la variable DoDM : ici un Integer alors qu'il est en fait un Double.
Ce qui fait que le calcul mouline sans s’arrêter puisque pour lui les seuls résultats qui marche sont soit 1 soit 0. Ce qui est faux.
En modifiant Integer par Double ça résout le problème