Aide VBA programmation

Fermé
anthonypilloy Messages postés 7 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 12 mars 2013 - 6 mars 2013 à 16:40
anthonypilloy Messages postés 7 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 12 mars 2013 - 12 mars 2013 à 12:02
Bonjour,

Je réalise un programme qui à partir d'une valeur maximal de différences entre 2 nombres exécute certaines commandes.

Je m'explique : j'ai des colonnes de G à L et j'effectue la différence entre la ligne 67 et 68 de chaque colonne sur la ligne 69 ensuite je prend la valeur maximal de cette ligne de différence et j'en ressort par une "rechercheH" la valeur de la colonne G=7;H=8; etc.

De cette valeur assignée à la colonne je définis la valeur de ma variable i qui effectue les opérations dans mon code

Le problème est qu'au cours de c'est manipulation, la valeur de i change et mon programme s'arrête alors qu'il devrait continuer.

Autrement dit je commence le calcul avec i=8 (par exemple) mais pendant les opérations i passe à 7 mais ne continue pas.

Existe t-il un moyen de lui faire continuer jusqu'à ce que toute les valeurs possibles de i respectent mes conditions???

Si besoin je peux poster mon code VBA en réponse.

MERCI D'AVANCE



1 réponse

totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
6 mars 2013 à 18:26
ce serait bien de poster ton code VBA oui car je n'arrive pas représenter ce que tu veux faire visuellement
0
anthonypilloy Messages postés 7 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 12 mars 2013
7 mars 2013 à 08:24
Sub airenecessaire()
Dim Ainitiale, Aobjectif, n, Splafond, i As Double

If Feuil1.Cells(5, 3).Value = 1 Then 'Si on travaille en octave
i = Feuil1.Cells(78, 7).Value
Feuil1.Cells(43, 6).Value = 0 'Initialise la valeur de la surface d'absorbant à 0
Ainitiale = Feuil1.Cells(64, i).Value 'Calcul la valeur de l'aire d'absorption équivalente de l'absorbant
Aobjectif = (0.16 * Feuil1.Cells(13, 7).Value) / Feuil1.Cells(66, i).Value 'Calcul l'AAE objectif à atteindre
npanneau = 0
Splafond = Feuil1.Cells(27, 6).Value 'Calcul de la surface de plafond

While (Ainitiale < Aobjectif) And (Splafond > 1)
Ainitiale = Ainitiale - Feuil1.Cells(27, i).Value + Feuil1.Cells(43, i).Value
n = n + 1
Splafond = Splafond - 1
If Splafond < 1 Then
MsgBox "ERREUR :PAS ASSEZ DE SURFACE PLAFOND POUR ATTEINDRE L'OBJECTIF"
End If
Wend
Feuil1.Cells(43, 6) = n
Else
i = Feuil1.Cells(78, 7).Value
Feuil1.Cells(43, 6).Value = 0
Ainitiale = Feuil1.Cells(64, i).Value
Aobjectif = (0.16 * Feuil1.Cells(13, 7).Value) / Feuil1.Cells(66, i).Value
npanneau = 0
Splafond = Feuil1.Cells(27, 6).Value

While (Ainitiale < Aobjectif) And (Splafond > 1)
Ainitiale = Ainitiale - Feuil1.Cells(27, i).Value + Feuil1.Cells(43, i).Value
n = n + 1
Splafond = Splafond - 1
If Splafond < 1 Then
MsgBox "ERREUR :PAS ASSEZ DE SURFACE PLAFOND POUR ATTEINDRE L'OBJECTIF"
End If
Wend
Feuil1.Cells(43, 6) = n
End If

End Sub


Voilà si tu as de plus ample question n'hésite pas merci à toi d'essayer de m'aider ;-)
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
Modifié par totodunet le 7/03/2013 à 14:39
ton i ne varie pas au fil du programme
il est toujours égal à i = Feuil1.Cells(78, 7).Value, tu peux la mettre au-dessus de if et supprimer son doublon ça ne vas rien changer et tu vas gagner une ligne
ensuite je ne sais pas ce qu'est ton n, tu ne l'as pas initialisé
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
7 mars 2013 à 14:40
tu n'as pas déclaré non plus npanneau
0
anthonypilloy Messages postés 7 Date d'inscription mercredi 6 mars 2013 Statut Membre Dernière intervention 12 mars 2013
8 mars 2013 à 08:55
n et npanneau sont la même variable mais j'ai remodifié et mon programme tournait de toute manière ;-) donc c'est la même variable

en fait la condition "if" n'a rien à voir pour l'instant je ne travaille que pour la condition vérifiée.
Et pendant la boucle while ma valeur dans la cellule (78,7) change car dans chaque colonne les différences évoluent différemment et donc il est possible que la valeur 78,7 passe de 7 à 10 par exemple mais que quand il vaut 10 le calcul ne soit pas fini.

J'espère que je suis assez clair c'est pas super évident a expliquer
0
totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 199
8 mars 2013 à 23:52
ok je vois le soucis alors^^
oui la cellule(78,7) change mais pas i
il faut que tu remettes i = Feuil1.Cells(78, 7).Value dans ta boucle while
dis -moi si c'est ça
0