Pour moi il faudra remplacer les feuilles de calcul excel par des tableaux dynamiques de grande taille, qui n'auront pas à être affiché (sauf pour vérification)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub Evaluation(calcul) 'si calcul =1, on refait le calcul aboutissant à Qmesuré. Sinon on repart des résultats existants pour ne calculer que les Qextp. Dim e As Integer 'e le nombre d'ensembles Dim b As Integer 'b le nombre de bins (max) par ensemble Dim i, ivar As Integer 'ensemble actuel Dim j As Integer 'bin actuel Dim k As Integer Dim kvar As Integer Dim a As Integer 'le nombre de bins pour l'ensemble considéré Dim valid As Boolean 'vrai si ensemble validé Dim l As Integer Dim m, gauche, droite As Integer Dim firstval As Boolean 'premier ensemble valide atteind Dim dbens As Double 'debit total de l'ensemble actuel Sheets("Calcul debit").Range("K13").Calculate e = Sheets("Calcul debit").Range("K13") b = Sheets("Calcul debit").Range("K10") k = 4 i = 1 firstval = False dbens = 0 If calcul = 1 Then While i - 1 <= e j = 1 valid = False a = Sheets("Donnees").Cells(i, 1) If a >= 40 Then MsgBox "Le problème ne peut être traité car le nombre de bins par ensembles dépasse les 40", vbOKOnly + vbExclamation, "Calcul interrompu" Exit Sub End If If i = 1 Then 'on ne fait ce calcul qu'une fois If Sheets("Donnees").Cells(i, 13 + j + 5 * a) <> -32768 Then Sheets("Calcul incertitudes").Range("A15") = Sheets("Donnees").Cells(i, 13 + j + 5 * a) / 1000 'On récupère la fréquence de l'appareil End If If Sheets("Donnees").Cells(i, 14 + j + 5 * a) <> -32768 Then Sheets("Calcul incertitudes").Range("A25") = Sheets("Donnees").Cells(i, 14 + j + 5 * a) 'On récupère le mode de l'ADCP pour l'eau End If If Sheets("Donnees").Cells(i, 15 + j + 5 * a) <> -32768 Then Sheets("Calcul incertitudes").Range("A23") = Sheets("Donnees").Cells(i, 15 + j + 5 * a) 'On récupère le nombre de pings pour la vitesse de l'eau End If End If While j <= a k = k + 1 Sheets("Calcul debit").Cells(k, 1) = i Sheets("Calcul debit").Cells(k, 2) = j Sheets("Calcul debit").Cells(k, 3) = Sheets("Donnees").Cells(i, 10 + j) 'vitesse sur faisceau 1 Sheets("Calcul debit").Cells(k, 4) = Sheets("Donnees").Cells(i, 10 + j + a) 'vitesse sur faisceau 2 Sheets("Calcul debit").Cells(k, 5) = Sheets("Donnees").Cells(i, 10 + j + 2 * a) 'vitesse sur faisceau 3 Sheets("Calcul debit").Cells(k, 6) = Sheets("Donnees").Cells(i, 10 + j + 3 * a) 'vitesse sur faisceau 4 Sheets("Calcul debit").Cells(k, 7) = Sheets("Donnees").Cells(i, 7) 'vitesse du fond sur faisceau 1 Sheets("Calcul debit").Cells(k, 8) = Sheets("Donnees").Cells(i, 8) 'vitesse du fond sur faisceau 2 Sheets("Calcul debit").Cells(k, 9) = Sheets("Donnees").Cells(i, 9) 'vitesse du fond sur faisceau 3 Sheets("Calcul debit").Cells(k, 10) = Sheets("Donnees").Cells(i, 10) 'vitesse du fond sur faisceau 4 Sheets("Calcul debit").Cells(k, 32) = Sheets("Donnees").Cells(i, 10 + j + 4 * a) 'profondeur du bin considéré Sheets("Calcul debit").Cells(k, 34) = Sheets("Donnees").Cells(i, 3) 'récupération du temps pour lequel l'ensemble a été mesuré If k > 5 Then Sheets("Calcul debit").Cells(k - 1, 33).Calculate 'Il faut le calculer immédiatement End If Call Calcul_dt(k, firstval) If Sheets("Donnees").Cells(i, 18 + j + 5 * a) = -32768 Then Sheets("Calcul debit").Cells(k, 38) = "BAD" Else Sheets("Calcul debit").Cells(k, 38) = (-1) * Sheets("Donnees").Cells(i, 18 + j + 5 * a) 'débit élémentaire End If If Sheets("Calcul debit").OptionButton7.Value = True Then Call V1234(k) 'Calcul des vitesses dans le repère XYZ Else Call VEarth(k) 'Transcription des vitesses données en Earth dans les colonnes suivantes End If Call Calcul_Vx_Vy(k, a, i) 'On calcule les vitesses horizontales du fond qu'on va utilise rpour le calcul du débit Sheets("Calcul debit").Cells(k, 20).Calculate For l = 29 To 35 Sheets("Calcul debit").Cells(k, l).Calculate 'calcul forcé des cellules de la ligne actuelle Next Sheets("Calcul debit").Cells(k, 65).Calculate If Sheets("Calcul debit").OptionButton1.Value = True Then Call Calcul_dQsuv(k, j, a) Else If Sheets("Calcul debit").OptionButton2.Value = True Then Call Calcul_dQprec(k, j, a) Else Call Calcul_dQmoy(k, j, a) End If End If 'If Sheets("Calcul debit").Cells(k, 3) <> -32768 And Sheets("Calcul debit").Cells(k, 4) <> -32768 And Sheets("Calcul debit").Cells(k, 5) <> -32768 And Sheets("Calcul debit").Cells(k, 6) <> -32768 Then If Sheets("Calcul debit").Cells(k, 18) = "OUI" Then valid = True 'L'ensemble est considéré par défaut comme invalidé. Il est valide dès qu'un de ses bins est valide (cad B1,B2,B3 et B4 <>-32768 If Sheets("Calcul debit").Cells(k, 25) = "NON" Then valid = False 'Mais si un bin de l'ensemble dépasse de seuil de BT error velocity, c'est le cas pour tous les bins et l'ensemble est invalidé End If End If If Sheets("Calcul debit").Cells(k, 36) <> "BAD" Then 'si on a une valeur de débit pour ce bin dbens = dbens + Sheets("Calcul debit").Cells(k, 36) 'on ajoute au débit total de l'ensemble concerné End If j = j + 1 Wend If Sheets("Donnees").Cells(i, 11 + 5 * a) <> -32768 Then Sheets("Calcul debit").Cells(k, 75) = Sheets("Donnees").Cells(i, 11 + 5 * a) 'On récupère flow direction End If If i = 1 Then If Sheets("Donnees").Cells(i, 12 + 5 * a) <> -32768 Then Sheets("Calcul debit").Cells(k, 76) = Sheets("Donnees").Cells(i, 12 + 5 * a) End If If Sheets("Donnees").Cells(i, 13 + 5 * a) <> -32768 Then Sheets("Calcul debit").Cells(k, 77) = Sheets("Donnees").Cells(i, 13 + 5 * a) End If Else If Sheets("Donnees").Cells(i, 12 + 5 * a) <> -32768 And Sheets("Donnees").Cells(i - 1, 12 + 5 * a) <> -32768 Then Sheets("Calcul debit").Cells(k, 76) = Sheets("Donnees").Cells(i, 12 + 5 * a) - Sheets("Donnees").Cells(i - 1, 12 + 5 * a) 'On récupère East displacement End If If Sheets("Donnees").Cells(i, 13 + 5 * a) <> -32768 And Sheets("Donnees").Cells(i - 1, 13 + 5 * a) <> -32768 Then Sheets("Calcul debit").Cells(k, 77) = Sheets("Donnees").Cells(i, 13 + 5 * a) - Sheets("Donnees").Cells(i - 1, 13 + 5 * a) 'On récupère North displacement End If End If k = k + 1 i = i + 1 If valid = True Then Sheets("Calcul debit").Cells(k, 36) = "Valide" firstval = True Else Sheets("Calcul debit").Cells(k, 36) = "Invalide" End If Sheets("Calcul debit").Cells(k, 70) = dbens 'on affiche le débit pour l'ensemble dbens = 0 Call ensemblesextrapoles(k) 'Séparer le débits des ensembles calculés du débit des ensembles extrapolés Wend End If Sheets("Calcul debit").Range("BC16").Calculate 'On détermine le signe de la moyenne des débits élémentaires If Sheets("Calcul debit").Range("BC16") < 0 Then 'On diffère le cas rive gauche de départ et rive droite de départ Sheets("Calcul debit").Range("K19") = Sheets("Donnees").Cells(1, 17 + 5 * Sheets("Donnees").Cells(1, 1)) Sheets("Calcul debit").Range("K22") = Sheets("Donnees").Cells(1, 18 + 5 * Sheets("Donnees").Cells(1, 1)) Else Sheets("Calcul debit").Range("K22") = Sheets("Donnees").Cells(1, 17 + 5 * Sheets("Donnees").Cells(1, 1)) Sheets("Calcul debit").Range("K19") = Sheets("Donnees").Cells(1, 18 + 5 * Sheets("Donnees").Cells(1, 1)) End If Call estimation_debit_non_mesure(gauche, droite) 'lancement de la procédure d'évaluation des débits sur les rives, en surface et au fond ivar = 5 Sheets("Calcul debit").Range("BS5").Calculate Sheets("Calcul debit").Range("BT5").Calculate Do Until Sheets("Calcul debit").Cells(ivar, 1) Sheets("Calcul debit").Range("K13") And Sheets("Calcul debit").Cells(ivar + 1, 1) "" Sheets("Calcul debit").Cells(ivar, 78).Calculate 'On termine les calculs liés aux angles et aux sections Sheets("Calcul debit").Range("CA5").Calculate Sheets("Calcul debit").Range("CB5").Calculate Sheets("Calcul debit").Range("CA8").Calculate Sheets("Calcul debit").Range("CA11").Calculate Sheets("Calcul debit").Cells(ivar, 84).Calculate Sheets("Calcul debit").Cells(ivar, 83).Calculate Sheets("Calcul debit").Cells(ivar, 82).Calculate Sheets("Calcul debit").Cells(ivar, 81).Calculate Sheets("Calcul debit").Cells(ivar, 85).Calculate Call sensecoulement(ivar, gauche, droite) Sheets("Calcul debit").Cells(ivar, 88).Calculate Sheets("Calcul debit").Cells(ivar, 89).Calculate Call signevitesse(ivar) Sheets("Calcul debit").Cells(ivar, 92).Calculate Sheets("Calcul debit").Cells(ivar, 93).Calculate Sheets("Calcul debit").Range("CA14").Calculate Sheets("Calcul debit").Range("CA17").Calculate Sheets("Calcul debit").Range("CA20").Calculate Sheets("Calcul debit").Range("CA23").Calculate Sheets("Calcul debit").Range("CA26").Calculate Sheets("Calcul debit").Range("CA29").Calculate ivar = ivar + 1 Loop For l = 54 To 63 Sheets("Calcul debit").Cells(5, l).Calculate 'calcul forcé des résultats finaux Next Sheets("Calcul debit").Cells(9, 55).Calculate Sheets("Calcul debit").Cells(9, 56).Calculate Sheets("Calcul debit").Range("BC12").Calculate Sheets("Calcul debit").Range("BC14").Calculate Sheets("Calcul debit").Range("BL5").Calculate Sheets("Calcul debit").Range("BM5").Calculate Sheets("Calcul debit").Range("BP28").Calculate Sheets("Calcul debit").Cells(5, 63) = Sheets("Donnees").Cells(e, 6) 'on récupère le débit total Call nbensemblesinvalides 'On calcule le nombre d'ensembles invalidés Sheets("Calcul debit").Range("BF13").Calculate End Sub
Sub VEarth(i) Dim East, Beast As Double Dim North, Bnorth As Double Dim Up, Bup As Double Dim Error, Berror As Double East = Sheets("Calcul debit").Cells(i, 3) North = Sheets("Calcul debit").Cells(i, 4) Up = Sheets("Calcul debit").Cells(i, 5) Error = Sheets("Calcul debit").Cells(i, 6) Beast = Sheets("Calcul debit").Cells(i, 7) Bnorth = Sheets("Calcul debit").Cells(i, 8) Bup = Sheets("Calcul debit").Cells(i, 9) Berror = Sheets("Calcul debit").Cells(i, 10) If East <> -32768 And North <> -32768 And Up <> -32768 And Error <> -32768 And Sheets("Calcul debit").Cells(i, 1) <> "" Then Sheets("Calcul debit").Cells(i, 14) = East Sheets("Calcul debit").Cells(i, 15) = North Sheets("Calcul debit").Cells(i, 16) = Up Sheets("Calcul debit").Cells(i, 17) = Error If Abs(Error) <= Sheets("Calcul debit").Cells(7, 11) Then Sheets("Calcul debit").Cells(i, 18) = "OUI" Sheets("Calcul debit").Cells(i, 19) = Up Else Sheets("Calcul debit").Cells(i, 18) = "NON" Sheets("Calcul debit").Cells(i, 19) = "" End If Else Sheets("Calcul debit").Cells(i, 14) = "" Sheets("Calcul debit").Cells(i, 15) = "" Sheets("Calcul debit").Cells(i, 16) = "" Sheets("Calcul debit").Cells(i, 17) = "" Sheets("Calcul debit").Cells(i, 18) = "" Sheets("Calcul debit").Cells(i, 19) = "" End If If Beast <> -32768 And Bnorth <> -32768 And Bup <> -32768 And BT4 <> -32768 And Sheets("Calcul debit").Cells(i, 1) <> "" Then Sheets("Calcul debit").Cells(i, 21) = Beast Sheets("Calcul debit").Cells(i, 22) = Bnorth Sheets("Calcul debit").Cells(i, 23) = Bup Sheets("Calcul debit").Cells(i, 24) = Berror If Abs(Berror) <= Sheets("Calcul debit").Cells(8, 11) Then Sheets("Calcul debit").Cells(i, 25) = "OUI" Sheets("Calcul debit").Cells(i, 26) = Bup Else Sheets("Calcul debit").Cells(i, 25) = "NON" Sheets("Calcul debit").Cells(i, 26) = "" End If Else Sheets("Calcul debit").Cells(i, 21) = "" Sheets("Calcul debit").Cells(i, 22) = "" Sheets("Calcul debit").Cells(i, 23) = "" Sheets("Calcul debit").Cells(i, 24) = "" Sheets("Calcul debit").Cells(i, 25) = "" Sheets("Calcul debit").Cells(i, 26) = "" End If End Sub
Sub Calcul_dQprec(i, l, c) 'Calcul du debit, si ensemble invalides, on recupere la vitesse d avant les ensembles invalides Dim ivar As Integer ivar = i If Sheets("Calcul debit").Cells(i, 1) <> "" Then If Sheets("Calcul debit").Cells(i, 25) "NON" Or Sheets("Calcul debit").Cells(i, 21) "" Then Sheets("Calcul debit").Cells(i, 36) = "BAD" Else While Sheets("Calcul debit").Cells(ivar, 36) <> "Valide" And ivar > 5 'On recule jusqu a trouver un ensemble précédent valide ivar = ivar - 1 Wend ivar = ivar - 1 Do 'On recule encore pour se placer au début de l'ensemble If Sheets("Calcul debit").Cells(ivar, 36) "Valide" Or Sheets("Calcul debit").Cells(ivar, 36) "Invalide" Then Exit Do If ivar <= 5 Then Exit Do ivar = ivar - 1 Loop If ivar > 5 Then ivar = ivar + l 'On redescend pour se placer à la meme hauteur d'eau que celle de l'ensemble suivant If Sheets("Calcul debit").Cells(ivar, 30) <> "" Then Sheets("Calcul debit").Cells(i, 36) = Sheets("Calcul debit").Cells(ivar, 30) * Sheets("Calcul debit").Cells(i, 33) * Sheets("Calcul debit").Cells(i, 35) Else 'If Sheets("Calcul debit").Cells(ivar, 18) = "NON" Then 'On ne provoque l'extrapolation sur les bins que si le bin est invalidé et WT error ... If Sheets("Calcul debit").OptionButton4.Value = True Then 'Si le bin n'a pas de valeur de vitesse, on va les chercher sur les bins sup ou inf Call Calcul_dQsup(ivar, i) Else If Sheets("Calcul debit").OptionButton5.Value = True Then If l = c Then 'si et seulement si on a atteint le fond de la rivière Call Calcul_dQinf(ivar, i) End If Else If Sheets("Calcul debit").OptionButton6.Value = True Then If l = c Then 'si et seulement si on a atteint le fond de la rivière Call Calcul_dQmoyvert(ivar, i) End If Else If l = c Then 'si et seulement si on a atteint le fond de la rivière Call Calcul_dQcomp(ivar, i) End If End If End If End If 'Else 'Sheets("Calcul debit").Cells(i, 36) = "BAD" 'End If End If Else Sheets("Calcul debit").Cells(i, 36) = "BAD" End If End If Else Sheets("Calcul debit").Cells(i, 36) = "" End If End Sub
While i - 1 <ealors que i commence à et e e = Sheets("Calcul debit").Range("K13").value (sil te plait : précise .Value)
dim tablo1, tablo2 tablo1 = Sheets("Donnees").usedrange 'et tablo2 = Sheets("calcul.debit").usedrange
Code Visual Basic :While i - 1 <ealors que i commence à et e e = Sheets("Calcul debit").Range("K13").value (sil te plait : précise .Value)
Travaille alors sur le tableau toto = Sheets("Donnees").usedrange
Kif-kif en ce qui concerne l'utilisation d'un tableau dynamique pour ce qui est de ta feuille calcul.debit