Aide VBA programmation

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

  • Votes
  • Date
  • Date décroissante
  1. ce serait bien de poster ton code VBA oui car je n'arrive pas représenter ce que tu veux faire visuellement
    1. 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 ;-)
    2. 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é
    3. tu n'as pas déclaré non plus npanneau
    4. 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
    5. 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