Comparaison entre valeurs

blalaa Messages postés 167 Date d'inscription   Statut Membre Dernière intervention   -  
blalaa Messages postés 167 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

4 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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