Je souhaiterais vous soumettre la fonction que j'ai r=E9alis=E9. Mon
objectif : =E9crire une fonction du type "=3DSOMME(...)" qui r=E9alise une
it=E9ration pour me sortir le r=E9sultat maximal.
Voil=E0 ce que j'ai r=E9alis=E9 :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer
Dim Seff As Single
Dim t As Single
Dim H As Single
Dim a1 As Single
Dim b1 As Single
Dim a2 As Single
Dim b2 As Single
Dim Ccorrection As Single
Dim Vbas As Single
Dim Vbas_fin As Single
'R=E9cup=E9ration des valeurs des coefficients de Montana et du
coefficient multiplicateur
a1 =3D ActiveSheet.Cells(4, 5)
a2 =3D ActiveSheet.Cells(6, 5)
b1 =3D ActiveSheet.Cells(5, 5)
b2 =3D ActiveSheet.Cells(7, 5)
Ccorrection =3D ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement
Seff =3D Sbv * C
'It=E9ration du calcul du volume n=E9cessaire
For i =3D 1 To 24
'Utilisation des 2 pluies, et distinction
If i <=3D 5 Then
Vbas =3D Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) /
1000
Else
Vbas =3D Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) /
1000
End If
'S=E9lection du volume de bassin le plus important
If Vbas > Vbas_fin Then
Vbas_fin =3D Vbas
End If
Next
IT77 =3D Vbas_fin * Ccorrection
End Function
[/quote]
Elle a =E9t=E9 ins=E9r=E9e dans 'ThisWorkbook", mais lorsque je tape sous
Excel "=3DInsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal
d=E9fini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
Pour pouvoir utiliser une fonction personnalisée dans une feuille de calcul, tu dois la mettre OBLIGATOIREMENT dans un module standard.
"Phenix21" a écrit dans le message de news:
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon objectif : écrire une fonction du type "=SOMME(...)" qui réalise une itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim a1 As Single Dim b1 As Single Dim a2 As Single Dim b2 As Single Dim Ccorrection As Single Dim Vbas As Single Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du coefficient multiplicateur a1 = ActiveSheet.Cells(4, 5) a2 = ActiveSheet.Cells(6, 5) b1 = ActiveSheet.Cells(5, 5) b2 = ActiveSheet.Cells(7, 5) Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Mise à 0 des variables Vbas = 0 Vbas_fin = 0
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
IT77 = Vbas_fin * Ccorrection
End Function [/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Pour pouvoir utiliser une fonction personnalisée dans une feuille de calcul,
tu dois la mettre OBLIGATOIREMENT dans un module standard.
"Phenix21" <phoenix21@voila.fr> a écrit dans le message de news:
1180787651.762138.287040@u30g2000hsc.googlegroups.com...
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon
objectif : écrire une fonction du type "=SOMME(...)" qui réalise une
itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer
Dim Seff As Single
Dim t As Single
Dim H As Single
Dim a1 As Single
Dim b1 As Single
Dim a2 As Single
Dim b2 As Single
Dim Ccorrection As Single
Dim Vbas As Single
Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du
coefficient multiplicateur
a1 = ActiveSheet.Cells(4, 5)
a2 = ActiveSheet.Cells(6, 5)
b1 = ActiveSheet.Cells(5, 5)
b2 = ActiveSheet.Cells(7, 5)
Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement
Seff = Sbv * C
'Mise à 0 des variables
Vbas = 0
Vbas_fin = 0
'Itération du calcul du volume nécessaire
For i = 1 To 24
'Utilisation des 2 pluies, et distinction
If i <= 5 Then
Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) /
1000
Else
Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) /
1000
End If
'Sélection du volume de bassin le plus important
If Vbas > Vbas_fin Then
Vbas_fin = Vbas
End If
Next
IT77 = Vbas_fin * Ccorrection
End Function
[/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous
Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal
défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Pour pouvoir utiliser une fonction personnalisée dans une feuille de calcul, tu dois la mettre OBLIGATOIREMENT dans un module standard.
"Phenix21" a écrit dans le message de news:
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon objectif : écrire une fonction du type "=SOMME(...)" qui réalise une itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim a1 As Single Dim b1 As Single Dim a2 As Single Dim b2 As Single Dim Ccorrection As Single Dim Vbas As Single Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du coefficient multiplicateur a1 = ActiveSheet.Cells(4, 5) a2 = ActiveSheet.Cells(6, 5) b1 = ActiveSheet.Cells(5, 5) b2 = ActiveSheet.Cells(7, 5) Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Mise à 0 des variables Vbas = 0 Vbas_fin = 0
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
IT77 = Vbas_fin * Ccorrection
End Function [/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Alors effectivement, la fonction se lance bien. Par contre, Excel me renvoie un "#VALEUR" : quelle pourrait en être la cause ?
MichDenis
Observation générale :
Il est préférable d'utiliser un nom de variable qui soit significatif par rapport à son usage... il serait sage d'éviter l'usage d'une adresse de cellule comme variable.
Pourquoi ne pas donner aux paramètres de ta fonction, des noms qui signifie quelque chose, tu as droit à des noms de 255 caractères...
Si tu donnes à une variable un type "numérique" (integer, long, double...) la variable a automatiquement la valeur 0. Nul besoin de l'initialer à 0
Si ta fonction renvoie "#VALEUR" , tu dois avoir une valeur "Texte" dans une des cellules utilisées pour évaluer la fonction.
"Phenix21" a écrit dans le message de news:
Le retour !
Alors effectivement, la fonction se lance bien. Par contre, Excel me renvoie un "#VALEUR" : quelle pourrait en être la cause ?
Observation générale :
Il est préférable d'utiliser un nom de variable qui soit significatif
par rapport à son usage... il serait sage d'éviter l'usage d'une
adresse de cellule comme variable.
Pourquoi ne pas donner aux paramètres de ta fonction, des noms
qui signifie quelque chose, tu as droit à des noms de 255 caractères...
Si tu donnes à une variable un type "numérique" (integer, long, double...)
la variable a automatiquement la valeur 0. Nul besoin de l'initialer à 0
Si ta fonction renvoie "#VALEUR" , tu dois avoir une valeur "Texte"
dans une des cellules utilisées pour évaluer la fonction.
"Phenix21" <phoenix21@voila.fr> a écrit dans le message de news:
1180789783.314667.116030@g4g2000hsf.googlegroups.com...
Le retour !
Alors effectivement, la fonction se lance bien. Par contre, Excel me
renvoie un "#VALEUR" : quelle pourrait en être la cause ?
Il est préférable d'utiliser un nom de variable qui soit significatif par rapport à son usage... il serait sage d'éviter l'usage d'une adresse de cellule comme variable.
Pourquoi ne pas donner aux paramètres de ta fonction, des noms qui signifie quelque chose, tu as droit à des noms de 255 caractères...
Si tu donnes à une variable un type "numérique" (integer, long, double...) la variable a automatiquement la valeur 0. Nul besoin de l'initialer à 0
Si ta fonction renvoie "#VALEUR" , tu dois avoir une valeur "Texte" dans une des cellules utilisées pour évaluer la fonction.
"Phenix21" a écrit dans le message de news:
Le retour !
Alors effectivement, la fonction se lance bien. Par contre, Excel me renvoie un "#VALEUR" : quelle pourrait en être la cause ?
Hervé
Bonjour Phenix21,
Dans une fonction, pour que celle-ci soit utilisée sans retourner de résultat erroné, il ne faut pas utiliser de référence à une quelconque cellule ou plage de cellules, elles doivent être passées en argument. Si tu fait référence à une cellule et que, pour la mise en page de feuille, tu veuille déplacer cette cellule la fonction ne la suivra pas et fera toujours référence à la cellule indiquée en dur d'où des résultats erronés. Comme te l'a si bien précisé MichDenis, utilise des noms de variables qui soient parlant, ça facilite l'entretien du code. J'ai testé la fonction ci-dessous avec des valeurs bidons et elle me retourne un résultat (bidon lui aussi ;o) ). Si tu as un message d'erreur, c'est dû à la présence de cette ligne de code : IT77 = Vbas_fin * Ccorrection qui doit être le retour du résultat mais mal orthographié. Pour éviter ce type d'erreur, en tête de module indique la ligne "Option Explicit" comme dans l'exemple ci-dessous. Ceci oblige à déclarer les variables et évite pas mal de désagréments.
A mettre dans un module standard :
Option Explicit
Public Function INS_TECH_77(Sbv As Double, _ C As Double, _ Qfuite As Double, _ a1 As Double, _ a2 As Double, _ b1 As Double, _ b2 As Double, _ Ccorrection As Double) As Double
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim Vbas As Single Dim Vbas_fin As Single
'pour que la fonction soit recalculée 'à chaque calcul du classeur Application.Volatile
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
'retourne le résultat INS_TECH_77 = Vbas_fin * Ccorrection
End Function
Hervé.
"Phenix21" a écrit dans le message de news:
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon objectif : écrire une fonction du type "=SOMME(...)" qui réalise une itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim a1 As Single Dim b1 As Single Dim a2 As Single Dim b2 As Single Dim Ccorrection As Single Dim Vbas As Single Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du coefficient multiplicateur a1 = ActiveSheet.Cells(4, 5) a2 = ActiveSheet.Cells(6, 5) b1 = ActiveSheet.Cells(5, 5) b2 = ActiveSheet.Cells(7, 5) Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Mise à 0 des variables Vbas = 0 Vbas_fin = 0
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
IT77 = Vbas_fin * Ccorrection
End Function [/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Bonjour Phenix21,
Dans une fonction, pour que celle-ci soit utilisée sans retourner de
résultat erroné, il ne faut pas utiliser de référence à une quelconque
cellule ou plage de cellules, elles doivent être passées en argument. Si tu
fait référence à une cellule et que, pour la mise en page de feuille, tu
veuille déplacer cette cellule la fonction ne la suivra pas et fera toujours
référence à la cellule indiquée en dur d'où des résultats erronés.
Comme te l'a si bien précisé MichDenis, utilise des noms de variables qui
soient parlant, ça facilite l'entretien du code.
J'ai testé la fonction ci-dessous avec des valeurs bidons et elle me
retourne un résultat (bidon lui aussi ;o) ).
Si tu as un message d'erreur, c'est dû à la présence de cette ligne de code
:
IT77 = Vbas_fin * Ccorrection
qui doit être le retour du résultat mais mal orthographié. Pour éviter ce
type d'erreur, en tête de module indique la ligne "Option Explicit" comme
dans l'exemple ci-dessous. Ceci oblige à déclarer les variables et évite pas
mal de désagréments.
A mettre dans un module standard :
Option Explicit
Public Function INS_TECH_77(Sbv As Double, _
C As Double, _
Qfuite As Double, _
a1 As Double, _
a2 As Double, _
b1 As Double, _
b2 As Double, _
Ccorrection As Double) As Double
Dim i As Integer
Dim Seff As Single
Dim t As Single
Dim H As Single
Dim Vbas As Single
Dim Vbas_fin As Single
'pour que la fonction soit recalculée
'à chaque calcul du classeur
Application.Volatile
'Calcul de la surface active de ruissellement
Seff = Sbv * C
'Itération du calcul du volume nécessaire
For i = 1 To 24
'Utilisation des 2 pluies, et distinction
If i <= 5 Then
Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000
Else
Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000
End If
'Sélection du volume de bassin le plus important
If Vbas > Vbas_fin Then
Vbas_fin = Vbas
End If
Next
'retourne le résultat
INS_TECH_77 = Vbas_fin * Ccorrection
End Function
Hervé.
"Phenix21" <phoenix21@voila.fr> a écrit dans le message de news:
1180787651.762138.287040@u30g2000hsc.googlegroups.com...
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon
objectif : écrire une fonction du type "=SOMME(...)" qui réalise une
itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer
Dim Seff As Single
Dim t As Single
Dim H As Single
Dim a1 As Single
Dim b1 As Single
Dim a2 As Single
Dim b2 As Single
Dim Ccorrection As Single
Dim Vbas As Single
Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du
coefficient multiplicateur
a1 = ActiveSheet.Cells(4, 5)
a2 = ActiveSheet.Cells(6, 5)
b1 = ActiveSheet.Cells(5, 5)
b2 = ActiveSheet.Cells(7, 5)
Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement
Seff = Sbv * C
'Mise à 0 des variables
Vbas = 0
Vbas_fin = 0
'Itération du calcul du volume nécessaire
For i = 1 To 24
'Utilisation des 2 pluies, et distinction
If i <= 5 Then
Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) /
1000
Else
Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) /
1000
End If
'Sélection du volume de bassin le plus important
If Vbas > Vbas_fin Then
Vbas_fin = Vbas
End If
Next
IT77 = Vbas_fin * Ccorrection
End Function
[/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous
Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal
défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Dans une fonction, pour que celle-ci soit utilisée sans retourner de résultat erroné, il ne faut pas utiliser de référence à une quelconque cellule ou plage de cellules, elles doivent être passées en argument. Si tu fait référence à une cellule et que, pour la mise en page de feuille, tu veuille déplacer cette cellule la fonction ne la suivra pas et fera toujours référence à la cellule indiquée en dur d'où des résultats erronés. Comme te l'a si bien précisé MichDenis, utilise des noms de variables qui soient parlant, ça facilite l'entretien du code. J'ai testé la fonction ci-dessous avec des valeurs bidons et elle me retourne un résultat (bidon lui aussi ;o) ). Si tu as un message d'erreur, c'est dû à la présence de cette ligne de code : IT77 = Vbas_fin * Ccorrection qui doit être le retour du résultat mais mal orthographié. Pour éviter ce type d'erreur, en tête de module indique la ligne "Option Explicit" comme dans l'exemple ci-dessous. Ceci oblige à déclarer les variables et évite pas mal de désagréments.
A mettre dans un module standard :
Option Explicit
Public Function INS_TECH_77(Sbv As Double, _ C As Double, _ Qfuite As Double, _ a1 As Double, _ a2 As Double, _ b1 As Double, _ b2 As Double, _ Ccorrection As Double) As Double
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim Vbas As Single Dim Vbas_fin As Single
'pour que la fonction soit recalculée 'à chaque calcul du classeur Application.Volatile
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
'retourne le résultat INS_TECH_77 = Vbas_fin * Ccorrection
End Function
Hervé.
"Phenix21" a écrit dans le message de news:
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon objectif : écrire une fonction du type "=SOMME(...)" qui réalise une itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim a1 As Single Dim b1 As Single Dim a2 As Single Dim b2 As Single Dim Ccorrection As Single Dim Vbas As Single Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du coefficient multiplicateur a1 = ActiveSheet.Cells(4, 5) a2 = ActiveSheet.Cells(6, 5) b1 = ActiveSheet.Cells(5, 5) b2 = ActiveSheet.Cells(7, 5) Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Mise à 0 des variables Vbas = 0 Vbas_fin = 0
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
IT77 = Vbas_fin * Ccorrection
End Function [/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Phenix21
Merci pour votre aide !
En réponse à vos questions : - pour les noms des variables, C, a, b correspondent aux noms couramment utilisés pour les données qui me concernent. Si çà vous intéresse, un aperçu des bases de mon calcul ;) http://www.dlzlogic.com /aides/Montana.htm - la fonction créée a pour objectif de se répéter plusieurs fois, l es paramètres a,b,Ccorrection étant identiques à chaque itération, seu ls les paramètres S,C,Qfuite variant. Il n'y a pas moyen d'éviter de les indiquer à chaque fois ? Sachant qu'à la fin, je comptais bloquer la partie supérieure de la feuille pour éviter tout déplacement intenpestif.
Au passage, que signifie "double" ?
Merci pour votre aide !
En réponse à vos questions :
- pour les noms des variables, C, a, b correspondent aux noms
couramment utilisés pour les données qui me concernent. Si çà vous
intéresse, un aperçu des bases de mon calcul ;) http://www.dlzlogic.com /aides/Montana.htm
- la fonction créée a pour objectif de se répéter plusieurs fois, l es
paramètres a,b,Ccorrection étant identiques à chaque itération, seu ls
les paramètres S,C,Qfuite variant. Il n'y a pas moyen d'éviter de les
indiquer à chaque fois ? Sachant qu'à la fin, je comptais bloquer la
partie supérieure de la feuille pour éviter tout déplacement
intenpestif.
En réponse à vos questions : - pour les noms des variables, C, a, b correspondent aux noms couramment utilisés pour les données qui me concernent. Si çà vous intéresse, un aperçu des bases de mon calcul ;) http://www.dlzlogic.com /aides/Montana.htm - la fonction créée a pour objectif de se répéter plusieurs fois, l es paramètres a,b,Ccorrection étant identiques à chaque itération, seu ls les paramètres S,C,Qfuite variant. Il n'y a pas moyen d'éviter de les indiquer à chaque fois ? Sachant qu'à la fin, je comptais bloquer la partie supérieure de la feuille pour éviter tout déplacement intenpestif.
Au passage, que signifie "double" ?
fetnat
Merci pour la découverte du coefficient de Montana.
On comprend mieux pourquoi la France est inondée. Vivement que VBA soit au point...:)
climatiquement vôtre
fetnat
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon objectif : écrire une fonction du type "=SOMME(...)" qui réalise une itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim a1 As Single Dim b1 As Single Dim a2 As Single Dim b2 As Single Dim Ccorrection As Single Dim Vbas As Single Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du coefficient multiplicateur a1 = ActiveSheet.Cells(4, 5) a2 = ActiveSheet.Cells(6, 5) b1 = ActiveSheet.Cells(5, 5) b2 = ActiveSheet.Cells(7, 5) Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Mise à 0 des variables Vbas = 0 Vbas_fin = 0
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
IT77 = Vbas_fin * Ccorrection
End Function [/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Merci pour la découverte du coefficient de Montana.
On comprend mieux pourquoi la France est inondée. Vivement que VBA soit
au point...:)
climatiquement vôtre
fetnat
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon
objectif : écrire une fonction du type "=SOMME(...)" qui réalise une
itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer
Dim Seff As Single
Dim t As Single
Dim H As Single
Dim a1 As Single
Dim b1 As Single
Dim a2 As Single
Dim b2 As Single
Dim Ccorrection As Single
Dim Vbas As Single
Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du
coefficient multiplicateur
a1 = ActiveSheet.Cells(4, 5)
a2 = ActiveSheet.Cells(6, 5)
b1 = ActiveSheet.Cells(5, 5)
b2 = ActiveSheet.Cells(7, 5)
Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement
Seff = Sbv * C
'Mise à 0 des variables
Vbas = 0
Vbas_fin = 0
'Itération du calcul du volume nécessaire
For i = 1 To 24
'Utilisation des 2 pluies, et distinction
If i <= 5 Then
Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) /
1000
Else
Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) /
1000
End If
'Sélection du volume de bassin le plus important
If Vbas > Vbas_fin Then
Vbas_fin = Vbas
End If
Next
IT77 = Vbas_fin * Ccorrection
End Function
[/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous
Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal
défini ma fonction.
Merci d'avance pour vos propositions et votre aide !
Merci pour la découverte du coefficient de Montana.
On comprend mieux pourquoi la France est inondée. Vivement que VBA soit au point...:)
climatiquement vôtre
fetnat
Bonjour à tous !
Je souhaiterais vous soumettre la fonction que j'ai réalisé. Mon objectif : écrire une fonction du type "=SOMME(...)" qui réalise une itération pour me sortir le résultat maximal.
Voilà ce que j'ai réalisé :
[quote]Public Function InsTech77(Sbv, C, Qfuite)
Dim i As Integer Dim Seff As Single Dim t As Single Dim H As Single Dim a1 As Single Dim b1 As Single Dim a2 As Single Dim b2 As Single Dim Ccorrection As Single Dim Vbas As Single Dim Vbas_fin As Single
'Récupération des valeurs des coefficients de Montana et du coefficient multiplicateur a1 = ActiveSheet.Cells(4, 5) a2 = ActiveSheet.Cells(6, 5) b1 = ActiveSheet.Cells(5, 5) b2 = ActiveSheet.Cells(7, 5) Ccorrection = ActiveSheet.Cells(9, 5)
'Calcul de la surface active de ruissellement Seff = Sbv * C
'Mise à 0 des variables Vbas = 0 Vbas_fin = 0
'Itération du calcul du volume nécessaire For i = 1 To 24
'Utilisation des 2 pluies, et distinction If i <= 5 Then Vbas = Qfuite * 60 * i * 5 - Seff * a1 * (5 * i) ^ (1 - b1) / 1000 Else Vbas = Qfuite * 60 * i * 5 - Seff * a2 * (5 * i) ^ (1 - b2) / 1000 End If
'Sélection du volume de bassin le plus important If Vbas > Vbas_fin Then Vbas_fin = Vbas End If
Next
IT77 = Vbas_fin * Ccorrection
End Function [/quote]
Elle a été insérée dans 'ThisWorkbook", mais lorsque je tape sous Excel "=InsTech77(...)", Excel me renvoie #NOM. Je pense avoir mal défini ma fonction.
Merci d'avance pour vos propositions et votre aide !