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 :

Une boucle impénétrable [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Par défaut Une boucle impénétrable
    Bonjour,

    Je rencontre un problème avec la boucle FOR qui se trouve dans le code ci-dessous. Lorsque je l'exécute, le programme s'arrête avant de rentrer dans la boucle.

    Je ne comprends pas pourquoi...

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
     
    'Déclaration des constantes
     
    Dim i As Integer
    Dim j As Integer
    Dim Total As Double
     
    Dim Taxe_Plein As Double
    Dim Taxe_Reduit As Double
     
    Dim Duree_Contrat As Double
     
    Dim Taux_Actualisation As Double
     
    Dim Actualisation As Double
     
    Dim Taux_CSPE As Double
    Dim Prix_Abo As Double
    Dim Prix_kWh As Double
    Dim Duree_Fonctionnement As Double
    Dim Conversion As Double
    Dim Abo As Double
    Dim Conso As Double
    Dim CSPE As Double
     
    Dim Colonne As Integer
    Dim Pas_Puissance As Double
    Dim Pas_Conso As Double
    Dim Final_HT As Double
    Dim Final_TTC As Double
     
    Dim Ligne_P1 As Integer
    Dim Ligne_P2 As Integer
    Dim Ligne_P3 As Integer
    Dim Ligne_MG As Integer
    Dim Ligne_SActuelle As Integer
     
    Dim Duree_P1 As Double
    Dim Duree_P2 As Double
    Dim Duree_P3 As Double
    Dim Duree_MG As Double
    Dim Duree_SA As Double
     
    Dim Total_P1 As Double
    Dim Total_P2 As Double
    Dim Total_P3 As Double
    Dim Total_MG As Double
    Dim Total_SA As Double
     
    Public Sub Calcul_Energie_PPP()
     
    Worksheets("XXX").Range("Z4:AC70").ClearContents
     
    'Attribution des constantes
     
    Taxe_Plein = Worksheets("Hypothèses").Range("B72").Value
    Taxe_Reduit = Worksheets("Hypothèses").Range("B73").Value
     
    Taux_CSPE = Worksheets("Hypothèses").Range("B74").Value
    Prix_Abo = Worksheets("Hypothèses").Range("B61").Value
    Prix_kWh = Worksheets("Hypothèses").Range("B62").Value
    Duree_Fonctionnement = Worksheets("Energie").Range("B3").Value
    Conversion = Worksheets("Energie").Range("D3").Value
     
    Dim Total_HT As Double
    Dim Total_TTC As Double
     
    Duree_Contrat = Worksheets("CHIFFRAGE TOTAL").Range("C4").Value
     
    Taux_Actualisation = Worksheets("Hypothèses").Range("B75").Value
     
    Actualisation = 1
     
    Duree_P1 = Worksheets("Reconstruction").Range("B6").Value
    Duree_P2 = Worksheets("Reconstruction").Range("B40").Value
    Duree_P3 = Worksheets("Reconstruction").Range("B73").Value
     
    Colonne = 26
     
    Ligne_P1 = 4
    Ligne_P2 = Ligne_P1 + Duree_P1
    Ligne_P3 = Ligne_P2 + Duree_P2
     
    Dim Puissance_P1 As Double
    Puissance_P1 = Worksheets("ENERGIE").Range("B18").Value
     
    Dim Puissance_P2 As Double
    Puissance_P2 = Worksheets("ENERGIE").Range("B37").Value
     
    Dim Puissance_P3 As Double
    Puissance_P3 = Worksheets("ENERGIE").Range("B56").Value
     
    Dim Conso_P1 As Double
    Conso_P1 = Worksheets("ENERGIE").Range("B19").Value
     
    Dim Conso_P2 As Double
    Conso_P2 = Worksheets("ENERGIE").Range("B38").Value
     
    Dim Conso_P3 As Double
    Conso_P3 = Worksheets("ENERGIE").Range("B57").Value
     
    'Calcul de l'énergie pour la Phase 1
     
    Pas_Conso = (Conso_P2 - Conso_P1) / Duree_P1
    Pas_Puissance = (Puissance_P2 - Puissance_P1) / Duree_P1
     
    For i = Ligne_P1 To Duree_P1
     
        If i = Ligne_P1 Then
     
            Abo = ((Puissance_P1 / 1000) * Conversion) * Prix_Abo
            Conso = Conso_P1 * Prix_kWh
            CSPE = Conso_P1 * Taux_CSPE
     
            Total_HT = Abo + Conso + CSPE
            Total_TTC = Abo * (1 + Taxe_Reduit) + (Conso + CSPE) * (1 + Taxe_Plein)
            Final_HT = Final_HT + Total_HT
            Final_TTC = Final_TTC + Total_TTC
     
            Worksheets("XXX").Cells(i, Colonne) = Total_HT * Actualisation
            Worksheets("XXX").Cells(i, Colonne + 1) = Total_TTC * Actualisation * (1 + Taxe_Plein)
            Worksheets("XXX").Cells(i, Colonne + 2) = Worksheets("XXX").Cells(i, Colonne)
            Worksheets("XXX").Cells(i, Colonne + 3) = Worksheets("XXX").Cells(i, Colonne + 1)
     
        End If
        MsgBox "Jusqu'ici tout va bien... " & i
        Abo = ((Puissance_P1 + Pas_Puissance * (i - Ligne_P1)) / 1000 * Conversion) * Prix_Abo * Actualisation
        Conso = (Conso_P1 + Pas_Conso * (i - Ligne_P1)) * Prix_kWh * Actualisation
        CSPE = (Conso_P1 + Pas_Conso * (i - Ligne_P1)) * Taux_CSPE * Actualisation
     
        Total_HT = Abo + Conso + CSPE
        Total_TTC = Abo * (1 + Taxe_Reduit) + (Conso + CSPE) * (1 + Taxe_Plein)
     
        Final_HT = Final_HT + Total_HT
        Final_TTC = Final_TTC + Total_TTC
     
        Worksheets("XXX").Cells(i, Colonne) = Total_HT
        Worksheets("XXX").Cells(i, Colonne + 1) = Total_TTC
     
        Worksheets("XXX").Cells(i, Colonne + 2) = Worksheets("XXX").Cells(i - 1, Colonne + 2) _
              + Worksheets("XXX").Cells(i, Colonne)
        Worksheets("XXX").Cells(i, Colonne + 3) = Worksheets("XXX").Cells(i - 1, Colonne + 3) _
              + Worksheets("XXX").Cells(i, Colonne + 1)
     
        Actualisation = Actualisation * (1 + Taux_Actualisation)
     
    Next i
     
    End Sub

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    As-tu verifie le contenu de Ligne_P1 et Duree_P1?

    Si Duree_P1 et inferieur a Ligne_P1 tu n'entreras jamais dans la boucle.

    Place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Ligne_P1 & " - " & Duree_P1
    juste avant ta boucle pour verifier leurs valeur.

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour juste avant écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    msgbox "Il y a une erreur dans les variables Ligne_P1 et Duree_P1 : " & Ligne_P1 > Duree_P1
    For i = Ligne_P1 To Duree_P1
    Lance le programme et regar ce qu'il te dit.
    Si Ligne_P1 > Duree_P1 il ne pourra jamais entrer dans la boucle aller de 5 à 2 avec un pas de 1 n'est pas vraiment possible contrairement à la terre l'espace des entiers n'est pas rond

    Bonjour minick même idée mais je préfère ma box a moi

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Par défaut


    C'était effectivement tout bête...

    Je me sens vraiment c.. là...

    Promettez de ne rien dire à personne...

    Merci beaucoup

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 13h45
  2. Modification de composant ds une boucle
    Par sinsenono dans le forum C++Builder
    Réponses: 10
    Dernier message: 22/02/2004, 13h46
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 18h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 15h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 09h52

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