IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème boucle do à i + 1


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut Problème boucle do à i + 1
    Bonjour,

    J'ai un problème avec ma boucle while.

    Pour i = 0 elle semble fonctionné parfaitement, et j'obtiens les valeurs que je souhaite, mais quand elle passe à i + 1, certains calculs ne sont plus valables.

    Notamment la ligne que j'ai souligné en rouge : à la place de faire la boucle if comme il faut et écrire dans D16 la valeur de D15, il réecrit la valeur de C15 dans la cellule D16, faussant les résultat de la boucle do

    Est ce que ça provient de ma syntax; de la structure ? je n'y comprends plus grand chose, et comme c'est pour le boulot je commence un peu à craquer
    Je vous joins le programme si besoin

    merci d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Do
             
            'Calcul de VVH
            
            Range("C14").Offset(0, i).Formula = (((Range("C5").Offset(0, i).Value * Math.Exp(exp0 - (exp1 + cNt * Nt + cSDBTO * SDBTO * S0 / 100) / (Temp + 273.15))) * H2HCnew ^ c3_H2HC * ppH2 ^ c1_ppH2) / Math.Log(SDBTO * S0 / 100 / 9)) ^ (1 / c2_VVH)
     
            'Calcul du débit moyen
            Range("C15").Offset(0, i).Formula = Range("C14").Offset(0, i).Value * 180.5 * 0.83
     
            'Calcul du débit max
            If Range("C15").Offset(0, i).Value > 300 Then
                Range("C16").Offset(0, i).Formula = 300
            Else
                Range("C16").Offset(0, i).Formula = Range("C15").Value        
    End If
     
            'Calcul H2/HC calculé
             If Range("C16").Offset(0, i).Value < 300 Then
                Range("C18").Offset(0, i).Formula = 4070000 * Range("C16").Value ^ (-1.912)
            Else
                Range("C18").Formula = 74.7
            End If
            
    
    
            
            H2HCnew = H2HCnew + 0.01
            Range("C12").Offset(0, i).Formula = H2HCnew
            
        Loop Until (Range("C18").Offset(0, i).Value - H2HCnew >= -0.01) And (Range("C18").Offset(0, i).Value - H2HCnew <= 0.01)
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,



    Je n'ai pas ouvert ton fichier, j'ai simplement regardé ta ligne rouge + ton explication

    Ta ligne en rouge réagit correctement : Quelque soit la valeur de i, tu appliques la valeur de C15

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C16").Offset(0, i).Formula = Range("C15").Value
    Seul la cellule où écrire la valeur de C15 change (via le i) dans cette ligne de code.

    il faudrait plutôt écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("C16").Offset(0, i).Formula = Range("C15").Offset(0,i).Value

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Exact, j'ai oublié de mettre le offset...

    A force de checher je n'ai pas penser à vérifier les trucs tous bêtes... Merci et désolé !

  4. #4
    Membre averti
    Homme Profil pro
    Agent Administratif
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Agent Administratif
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Par défaut
    Salut

    Pourquoi elle écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C16").Offset(0, i).Formula = Range("C15").Value
    et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C16").Offset(0, i).Value = Range("C15").Value
    ???

    Merci d'avance les pros !

    Au fait c'est quoi ton job Mathilde ? Ca a l'air cool tes calculs

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    L'avantage de .Formula est qu'on peut récuppérer une formule, plutôt que sa valeur retournée ==> je t'invite à consulter l'aide VBA à ce sujet

    Dans le principe, j'aurai remplacé le Formula par un Value (enfin .... j'aurai rien mis car c'est la propriété par défaut).

    Mais je n'ai pas ouvert le classeur pour voir si c'est pertinent.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Ce n'est pas forcément pertinent, je ne suis pas très pro, pour le moment j'essaie de faire fonctionner l'ensemble, ensuite il faudra que je fasse le ménage effectivement !

    Je suis en stage en fait, pour ma dernière année d'étude d'ingénieur en génie des procédés (industrie chimique quoi), mais je ne fais pas souvent ce genre de chose ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Boucle Do-While?!
    Par Julien_C++ dans le forum C++
    Réponses: 6
    Dernier message: 29/07/2006, 12h23
  2. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  3. [XSL] problème boucle
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/04/2006, 16h55
  4. Problème boucle while et evenement
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 30/03/2006, 18h11
  5. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo