Comparaison entre valeurs

Fermé
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - Modifié le 29 août 2018 à 11:52
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 29 août 2018 à 13:40
Bonjour,

j'ai crée une application de calcul, son principe est simple , voici son programme

Private Sub CommandButton_valider_Click()

'calcul de perte de charge dues aux changements de sections

For i = 7 To 55

         If Cells(i + 1, 3) = "" Then
         Cells(i, 16) = ""
        
           ElseIf Cells(i, 7) = "" Then
           Cells(i, 16) = ""
           
           ElseIf Cells(i + 1, 7) = "" Then
           Cells(i, 16) = ""
           
           
           
           Else
                 If Cells(i, 7) = Cells(i + 1, 7) Then
                 Cells(i, 16) = 0
                 
                 Else
                 
                 If Cells(i, 7) < Cells(i + 1, 7) Then
                 ro = Cells(i, 11)
                 q1 = Cells(i, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i, 7) * 0.001) ^ 2))
                 [/download/telecharger-34078674-k1 k1] = (1 - ((Cells(i, 7) / Cells(i + 1, 7)) ^ 2)) ^ 2
                 
                 Else
                 ro = Cells(i + 1, 11)
                 q1 = Cells(i + 1, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
                 k1 = 0.5 * (1 - ((Cells(i + 1, 7) / Cells(i, 7)) ^ 2))
                End If
                
                 Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001
                 
                 
                End If
                P_line_sing_total = Range("P7") + Range("P8") + Range("P9") + Range("P10") + Range("P11") + Range("P12") + Range("P13") + Range("P14") + Range("P15") + Range("P16") + Range("P17") + Range("P18") + Range("P19") + Range("P20") + Range("P21") + Range("P22") + Range("P23") + Range("P24") + Range("P25") + Range("P26") + Range("P27") + Range("P28") + Range("P29") + Range("P30") + Range("P31") + Range("P32") + Range("P33") + Range("P34") + Range("P35") + Range("P36") + Range("P37") + Range("P38") + Range("P39") + Range("P40") + Range("P41") + Range("P42") + Range("P43") + Range("P44") + Range("P45") + Range("P46") + Range("P47") + Range("P48") + Range("P49") + Range("P50") + Range("P51")
                P_elar_retr_totale = Range("o7") + Range("o8") + Range("o9") + Range("o10") + Range("o11") + Range("o12") + Range("o13") + Range("o14") + Range("o15") + Range("o16") + Range("o17") + Range("o18") + Range("o19") + Range("o20") + Range("o21") + Range("o22") + Range("o23") + Range("o24") + Range("o25") + Range("o26") + Range("o27") + Range("o28") + Range("o29") + Range("o30") + Range("o31") + Range("o32") + Range("o33") + Range("o34") + Range("o35") + Range("o36") + Range("o37") + Range("o38") + Range("o39") + Range("o40") + Range("o41") + Range("o42") + Range("o43") + Range("o44") + Range("o45") + Range("o46") + Range("o47") + Range("o48") + Range("o49") + Range("o50") + Range("o51")

               End If
               If Cells(i, 3) = "reservoir" Then
                 ro = Cells(i + 1, 11)
                 q1 = Cells(i + 1, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
                 k1 = 0.5
                 Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001
                 
              End If
              P_line_sing_total = Range("P7") + Range("P8") + Range("P9") + Range("P10") + Range("P11") + Range("P12") + Range("P13") + Range("P14") + Range("P15") + Range("P16") + Range("P17") + Range("P18") + Range("P19") + Range("P20") + Range("P21") + Range("P22") + Range("P23") + Range("P24") + Range("P25") + Range("P26") + Range("P27") + Range("P28") + Range("P29") + Range("P30") + Range("P31") + Range("P32") + Range("P33") + Range("P34") + Range("P35") + Range("P36") + Range("P37") + Range("P38") + Range("P39") + Range("P40") + Range("P41") + Range("P42") + Range("P43") + Range("P44") + Range("P45") + Range("P46") + Range("P47") + Range("P48") + Range("P49") + Range("P50") + Range("P51")
              P_elar_retr_totale = Range("o7") + Range("o8") + Range("o9") + Range("o10") + Range("o11") + Range("o12") + Range("o13") + Range("o14") + Range("o15") + Range("o16") + Range("o17") + Range("o18") + Range("o19") + Range("o20") + Range("o21") + Range("o22") + Range("o23") + Range("o24") + Range("o25") + Range("o26") + Range("o27") + Range("o28") + Range("o29") + Range("o30") + Range("o31") + Range("o32") + Range("o33") + Range("o34") + Range("o35") + Range("o36") + Range("o37") + Range("o38") + Range("o39") + Range("o40") + Range("o41") + Range("o42") + Range("o43") + Range("o44") + Range("o45") + Range("o46") + Range("o47") + Range("o48") + Range("o49") + Range("o50") + Range("o51")
              
              Range("u2") = P_line_sing_total + P_elar_retr_totale
             Next
             
             


End Sub

c calcul tre bien mais le probleme c dans ce code : 

Else
                 If Cells(i, 7) = Cells(i + 1, 7) Then
                 Cells(i, 16) = 0
                 
                 Else
                 
                 If Cells(i, 7) < Cells(i + 1, 7) Then
                 ro = Cells(i, 11)
                 q1 = Cells(i, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i, 7) * 0.001) ^ 2))
                 k1 = (1 - ((Cells(i, 7) / Cells(i + 1, 7)) ^ 2)) ^ 2
                 
                 Else
                 ro = Cells(i + 1, 11)
                 q1 = Cells(i + 1, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
                 k1 = 0.5 * (1 - ((Cells(i + 1, 7) / Cells(i, 7)) ^ 2))
                End If
                
                 Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001
                 
                 
                End If


par exemple on dans cells(i,7) = 8 et cells(i+1,7)= 9 , lapplication calcul tres bien
mais des que cells(i,7) = 8 ET cells(i+1,7) prend la valeur =10 ou superieure l'application ne calcul pas correctement

diapre le programme puisque cells(i,7) = 8 ET cells(i+1,7)=10
alors cells(i,7) < cells(i+1,7)
donc elle doit executer le premier cas
If Cells(i, 7) < Cells(i + 1, 7) Then
                 ro = Cells(i, 11)
                 q1 = Cells(i, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i, 7) * 0.001) ^ 2))
                 k1 = (1 - ((Cells(i, 7) / Cells(i + 1, 7)) ^ 2)) ^ 2
sauf que dans ce cas elle execute le 2 eme cas 
Else
                 ro = Cells(i + 1, 11)
                 q1 = Cells(i + 1, 9) / 3600000
                 v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
                 k1 = 0.5 * (1 - ((Cells(i + 1, 7) / Cells(i, 7)) ^ 2))
                End If
                
                 Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001


je le rappele celle fait juste pour cells(i+1,7) = ou > 10


merci de me repondre

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

4 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
29 août 2018 à 11:22
Bonjour blalaa, bonjour le forum,

Un mélange de Else et de ElseIf abracadabrantesque... Essaie comme ça :
Private Sub CommandButton_valider_Click()

'calcul de perte de charge dues aux changements de sections

For i = 7 To 55
    If Cells(i + 1, 3) = "" Then Cells(i, 16) = ""
    If Cells(i, 7) = "" Then Cells(i, 16) = ""
    If Cells(i + 1, 7) = "" Then Cells(i, 16) = ""
    If Cells(i, 7) = Cells(i + 1, 7) Then Cells(i, 16) = 0
    If Cells(i, 7) < Cells(i + 1, 7) Then
        ro = Cells(i, 11)
        q1 = Cells(i, 9) / 3600000
        v1 = (4 * q1) / (3.14 * ((Cells(i, 7) * 0.001) ^ 2))
        k1 = (1 - ((Cells(i, 7) / Cells(i + 1, 7)) ^ 2)) ^ 2
    Else
        ro = Cells(i + 1, 11)
        q1 = Cells(i + 1, 9) / 3600000
        v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
        k1 = 0.5 * (1 - ((Cells(i + 1, 7) / Cells(i, 7)) ^ 2))
    End If
    Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001
    P_line_sing_total = Range("P7") + Range("P8") + Range("P9") + Range("P10") + Range("P11") + Range("P12") + Range("P13") + Range("P14") + Range("P15") + Range("P16") + Range("P17") + Range("P18") + Range("P19") + Range("P20") + Range("P21") + Range("P22") + Range("P23") + Range("P24") + Range("P25") + Range("P26") + Range("P27") + Range("P28") + Range("P29") + Range("P30") + Range("P31") + Range("P32") + Range("P33") + Range("P34") + Range("P35") + Range("P36") + Range("P37") + Range("P38") + Range("P39") + Range("P40") + Range("P41") + Range("P42") + Range("P43") + Range("P44") + Range("P45") + Range("P46") + Range("P47") + Range("P48") + Range("P49") + Range("P50") + Range("P51")
    P_elar_retr_totale = Range("o7") + Range("o8") + Range("o9") + Range("o10") + Range("o11") + Range("o12") + Range("o13") + Range("o14") + Range("o15") + Range("o16") + Range("o17") + Range("o18") + Range("o19") + Range("o20") + Range("o21") + Range("o22") + Range("o23") + Range("o24") + Range("o25") + Range("o26") + Range("o27") + Range("o28") + Range("o29") + Range("o30") + Range("o31") + Range("o32") + Range("o33") + Range("o34") + Range("o35") + Range("o36") + Range("o37") + Range("o38") + Range("o39") + Range("o40") + Range("o41") + Range("o42") + Range("o43") + Range("o44") + Range("o45") + Range("o46") + Range("o47") + Range("o48") + Range("o49") + Range("o50") + Range("o51")
    If Cells(i, 3) = "reservoir" Then
        ro = Cells(i + 1, 11)
        q1 = Cells(i + 1, 9) / 3600000
        v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
        k1 = 0.5
        Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001
    End If
    P_line_sing_total = Range("P7") + Range("P8") + Range("P9") + Range("P10") + Range("P11") + Range("P12") + Range("P13") + Range("P14") + Range("P15") + Range("P16") + Range("P17") + Range("P18") + Range("P19") + Range("P20") + Range("P21") + Range("P22") + Range("P23") + Range("P24") + Range("P25") + Range("P26") + Range("P27") + Range("P28") + Range("P29") + Range("P30") + Range("P31") + Range("P32") + Range("P33") + Range("P34") + Range("P35") + Range("P36") + Range("P37") + Range("P38") + Range("P39") + Range("P40") + Range("P41") + Range("P42") + Range("P43") + Range("P44") + Range("P45") + Range("P46") + Range("P47") + Range("P48") + Range("P49") + Range("P50") + Range("P51")
    P_elar_retr_totale = Range("o7") + Range("o8") + Range("o9") + Range("o10") + Range("o11") + Range("o12") + Range("o13") + Range("o14") + Range("o15") + Range("o16") + Range("o17") + Range("o18") + Range("o19") + Range("o20") + Range("o21") + Range("o22") + Range("o23") + Range("o24") + Range("o25") + Range("o26") + Range("o27") + Range("o28") + Range("o29") + Range("o30") + Range("o31") + Range("o32") + Range("o33") + Range("o34") + Range("o35") + Range("o36") + Range("o37") + Range("o38") + Range("o39") + Range("o40") + Range("o41") + Range("o42") + Range("o43") + Range("o44") + Range("o45") + Range("o46") + Range("o47") + Range("o48") + Range("o49") + Range("o50") + Range("o51")
    Range("u2") = P_line_sing_total + P_elar_retr_totale
Next
End Sub

0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
Modifié le 29 août 2018 à 11:51
bonjour

merci pour ta reponse
je viens de l'essayer et ca marche mm pas

il detecte un probleme a :
If Cells(i, 7) < Cells(i + 1, 7) Then
        ro = Cells(i, 11)
        q1 = Cells(i, 9) / 3600000 ???????????????????????????????????? ici 
        v1 = (4 * q1) / (3.14 * ((Cells(i, 7) * 0.001) ^ 2))
        k1 = (1 - ((Cells(i, 7) / Cells(i + 1, 7)) ^ 2)) ^ 2
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
29 août 2018 à 11:43
Re,

Quel est le message d'erreur ?
Quelle est la valeur de Cells(I, 9) quand ça plante ?
0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
29 août 2018 à 11:48
au fait ca simule pas
voici lerreur qui saffiche

erreur d’exécution '13'
incompatibilité du type

pour la valeur cells(i,9) = 0,0000778

sachant que la cells(i,9) est vide
mais jai fait un programme pour ca
If Cells(i, 3) = "reservoir" Then
ro = Cells(i + 1, 11)
q1 = Cells(i + 1, 9) / 3600000
v1 = (4 * q1) / (3.14 * ((Cells(i + 1, 7) * 0.001) ^ 2))
k1 = 0.5
Cells(i, 16) = k1 * ro * (v1 ^ 2) * 0.5 * 0.001
End If


je crois pour changer ce que tu veux toi il faut tenir compte de ca aussi
0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
29 août 2018 à 12:02
ce que jai fait est juste mais je ne comprend pas pour quoi quand ca depasse la valeur 10 le programme fonctionne MAL
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
29 août 2018 à 12:08
Je ne comprends pas. Quand ça plante :
- Cells(I, 9) = 0,0000778 ?
- Cells(I, 9) est vide ?

Difficile de t'aider davantage sans fichier. Regarde du coté de : https://www.cjoint.com ou d'un quelconque autre hébergeur de fichier...
0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
29 août 2018 à 12:13
cells(i,9) est vide
mais doit prendre la valeur de 0,0000778

en fait quand c le reservoir qui est dans la premier position, cells(i,9)=0 donc la valeur de q1 doit prendre cells(i+1,9)
et la valeur de cells(i+1,9) = 0,0000778
VOILA le tout
0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
29 août 2018 à 12:16
le programme que jai mis ca fonctionne tres bien
mais des que cells(i,7) ou cells(i+1,7) egale ou depasse la valeur 10 le programme fonctionne mal
je ne comprend pas pour quoi ca le fait que >10 ????
peut etre c dans le reglage et pas dans la programation ??
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
29 août 2018 à 13:31
Re,

Peut-être avec :
q1 = IIf(Cells(i, 9).Value=0, 0.0000778 / 3600000, Cells(i, 9) / 3600000)

0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
29 août 2018 à 13:40
RE
merci pour ta reponse
c amarche tjrs pas

mais jai trouve la solution

au lieu que cells(i,7)=8 elle doit prendre 08
le probleme c que le programme quand il compare 8 à 10 il calcul mal
amors quand il compare 08 à 10 ca calcul tres bien
je ne sais pas pour quoi

peut etre tas une explication
merci
0