J'ai créé une fonction relativement simple en vba :
------------------
Function Quotation_Solvabilite(secteur, Solvabilité)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilité > 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
End If
End Function
-------------------------
Et dès que le fichier se recalcule cette fonction qui retournait une valeur
renvoie un #VALEUR!
Je ne sait pas comment resoudre ce problème.
Merci de m'aider.
J'ai créé une fonction relativement simple en vba :
------------------
Function Quotation_Solvabilite(secteur, Solvabilité)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilité > 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
End If
End Function
-------------------------
Et dès que le fichier se recalcule cette fonction qui retournait une valeur
renvoie un #VALEUR!
Je ne sait pas comment resoudre ce problème.
Merci de m'aider.
J'ai créé une fonction relativement simple en vba :
------------------
Function Quotation_Solvabilite(secteur, Solvabilité)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilité > 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilité < 0 Then
Quotation_Solvabilite = 7
Else: Quotation_Solvabilite = 7 - Solvabilité
End If
End If
End Function
-------------------------
Et dès que le fichier se recalcule cette fonction qui retournait une valeur
renvoie un #VALEUR!
Je ne sait pas comment resoudre ce problème.
Merci de m'aider.
Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:
Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
a = Worksheets("Parametrage").Range(cel)
à :
a = workbooks(classeur).Worksheets("Parametrage").Range(cel)
Bonjour,
Ta simplification est très interessante et marche très bien !
Cependant j'ai toujours le même problème. Malheureusement je ne peux pas
t'envoyer le fichier car c'est pour mon boulot et c'est confidentiel.
J'ai essayé de voir avec le STOP ! Les arguments sont tous correct. Je ne
pense pas que le problème vienne de la formule mais plutôt des arguments
demandés par la fonction à savoir : secteur mais surtout solvabilité.
C'est vraiment bizarre puisque la fonction me renvoie bien la bonne valeur
jusqu'à ce que je fasse un calcul quelconque dans un 2e fichier ouvert
quelconque. Après j'ai le fameux #VALEUR!. Mais par contre si je retourne sur
ma cellule où est entrée la fonction, que je la selectionne et que je fais
"entrée", je retrouve bien ma valeur !
Bref, merci pour ton aide !!!Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
a = Worksheets("Parametrage").Range(cel)
à :
a = workbooks(classeur).Worksheets("Parametrage").Range(cel)
Bonjour,
Ta simplification est très interessante et marche très bien !
Cependant j'ai toujours le même problème. Malheureusement je ne peux pas
t'envoyer le fichier car c'est pour mon boulot et c'est confidentiel.
J'ai essayé de voir avec le STOP ! Les arguments sont tous correct. Je ne
pense pas que le problème vienne de la formule mais plutôt des arguments
demandés par la fonction à savoir : secteur mais surtout solvabilité.
C'est vraiment bizarre puisque la fonction me renvoie bien la bonne valeur
jusqu'à ce que je fasse un calcul quelconque dans un 2e fichier ouvert
quelconque. Après j'ai le fameux #VALEUR!. Mais par contre si je retourne sur
ma cellule où est entrée la fonction, que je la selectionne et que je fais
"entrée", je retrouve bien ma valeur !
Bref, merci pour ton aide !!!
Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:
Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
a = Worksheets("Parametrage").Range(cel)
à :
a = workbooks(classeur).Worksheets("Parametrage").Range(cel)
Bonjour,
Ta simplification est très interessante et marche très bien !
Cependant j'ai toujours le même problème. Malheureusement je ne peux pas
t'envoyer le fichier car c'est pour mon boulot et c'est confidentiel.
J'ai essayé de voir avec le STOP ! Les arguments sont tous correct. Je ne
pense pas que le problème vienne de la formule mais plutôt des arguments
demandés par la fonction à savoir : secteur mais surtout solvabilité.
C'est vraiment bizarre puisque la fonction me renvoie bien la bonne valeur
jusqu'à ce que je fasse un calcul quelconque dans un 2e fichier ouvert
quelconque. Après j'ai le fameux #VALEUR!. Mais par contre si je retourne sur
ma cellule où est entrée la fonction, que je la selectionne et que je fais
"entrée", je retrouve bien ma valeur !
Bref, merci pour ton aide !!!Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonjour,
Je n'avais pas fait attention au second classeur :o(
Voici des points à vérifier :
a) transforme ta fonction de :
Function Quotation_Solvabilite(secteur, Solvabilite)
en :
Public Function Quotation_Solvabilite(secteur, Solvabilite)
b) s'assurer que le code est dans un module (insertion | module) et pas
dans le module d'une feuille.
c) vois si "worksheets" est la même chose que "sheets"
d) Par ailleurs, dans quel classeur se situe la feuille "paramétrage" ?
Tel qu'écrit, Excel considère dans le classeur qui contient la fonction.
Si ça doit faire référence à ton second classeur, on peut modifier
légèrement comme suit :
Public Function Quotation_Solvabilite(classeur, secteur, Solvabilite)
puis passer de :a = Worksheets("Parametrage").Range(cel)
à :a = workbooks(classeur).Worksheets("Parametrage").Range(cel)
Sinon, je commence à donner ma langue au chat (qui a dit Miaou ?).
@+
FxM
Byothe wrote:Bonjour,
Ta simplification est très interessante et marche très bien !
Cependant j'ai toujours le même problème. Malheureusement je ne peux pas
t'envoyer le fichier car c'est pour mon boulot et c'est confidentiel.
J'ai essayé de voir avec le STOP ! Les arguments sont tous correct. Je ne
pense pas que le problème vienne de la formule mais plutôt des arguments
demandés par la fonction à savoir : secteur mais surtout solvabilité.
C'est vraiment bizarre puisque la fonction me renvoie bien la bonne valeur
jusqu'à ce que je fasse un calcul quelconque dans un 2e fichier ouvert
quelconque. Après j'ai le fameux #VALEUR!. Mais par contre si je retourne sur
ma cellule où est entrée la fonction, que je la selectionne et que je fais
"entrée", je retrouve bien ma valeur !
Bref, merci pour ton aide !!!Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonjour,
Je n'avais pas fait attention au second classeur :o(
Voici des points à vérifier :
a) transforme ta fonction de :
Function Quotation_Solvabilite(secteur, Solvabilite)
en :
Public Function Quotation_Solvabilite(secteur, Solvabilite)
b) s'assurer que le code est dans un module (insertion | module) et pas
dans le module d'une feuille.
c) vois si "worksheets" est la même chose que "sheets"
d) Par ailleurs, dans quel classeur se situe la feuille "paramétrage" ?
Tel qu'écrit, Excel considère dans le classeur qui contient la fonction.
Si ça doit faire référence à ton second classeur, on peut modifier
légèrement comme suit :
Public Function Quotation_Solvabilite(classeur, secteur, Solvabilite)
puis passer de :
a = Worksheets("Parametrage").Range(cel)
à :
a = workbooks(classeur).Worksheets("Parametrage").Range(cel)
Sinon, je commence à donner ma langue au chat (qui a dit Miaou ?).
@+
FxM
Byothe wrote:
Bonjour,
Ta simplification est très interessante et marche très bien !
Cependant j'ai toujours le même problème. Malheureusement je ne peux pas
t'envoyer le fichier car c'est pour mon boulot et c'est confidentiel.
J'ai essayé de voir avec le STOP ! Les arguments sont tous correct. Je ne
pense pas que le problème vienne de la formule mais plutôt des arguments
demandés par la fonction à savoir : secteur mais surtout solvabilité.
C'est vraiment bizarre puisque la fonction me renvoie bien la bonne valeur
jusqu'à ce que je fasse un calcul quelconque dans un 2e fichier ouvert
quelconque. Après j'ai le fameux #VALEUR!. Mais par contre si je retourne sur
ma cellule où est entrée la fonction, que je la selectionne et que je fais
"entrée", je retrouve bien ma valeur !
Bref, merci pour ton aide !!!
Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:
Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonjour,
Je n'avais pas fait attention au second classeur :o(
Voici des points à vérifier :
a) transforme ta fonction de :
Function Quotation_Solvabilite(secteur, Solvabilite)
en :
Public Function Quotation_Solvabilite(secteur, Solvabilite)
b) s'assurer que le code est dans un module (insertion | module) et pas
dans le module d'une feuille.
c) vois si "worksheets" est la même chose que "sheets"
d) Par ailleurs, dans quel classeur se situe la feuille "paramétrage" ?
Tel qu'écrit, Excel considère dans le classeur qui contient la fonction.
Si ça doit faire référence à ton second classeur, on peut modifier
légèrement comme suit :
Public Function Quotation_Solvabilite(classeur, secteur, Solvabilite)
puis passer de :a = Worksheets("Parametrage").Range(cel)
à :a = workbooks(classeur).Worksheets("Parametrage").Range(cel)
Sinon, je commence à donner ma langue au chat (qui a dit Miaou ?).
@+
FxM
Byothe wrote:Bonjour,
Ta simplification est très interessante et marche très bien !
Cependant j'ai toujours le même problème. Malheureusement je ne peux pas
t'envoyer le fichier car c'est pour mon boulot et c'est confidentiel.
J'ai essayé de voir avec le STOP ! Les arguments sont tous correct. Je ne
pense pas que le problème vienne de la formule mais plutôt des arguments
demandés par la fonction à savoir : secteur mais surtout solvabilité.
C'est vraiment bizarre puisque la fonction me renvoie bien la bonne valeur
jusqu'à ce que je fasse un calcul quelconque dans un 2e fichier ouvert
quelconque. Après j'ai le fameux #VALEUR!. Mais par contre si je retourne sur
ma cellule où est entrée la fonction, que je la selectionne et que je fais
"entrée", je retrouve bien ma valeur !
Bref, merci pour ton aide !!!Bonsoir,
Je n'ai toujours pas vraiment compris ton charabia :o) mais ta fonction
peut déjà se simplifier comme suit par exemple :
Function Quotation_Solvabilite(secteur, Solvabilite)
select case secteur
case "Basic Materials":cel="D4"
case "Industrie et Services":cel="D5"
case "Oil&Gas" :cel="D6"
case "Telecom":cel="D7"
case "Utilities":cel="D8"
case "Finance" :cel="D9"
a = Worksheets("Parametrage").Range(cel)
If Solvabilite < a Then
Quotation_Solvabilite = 7
else
Quotation_Solvabilite = 7 - Solvabilite
end if
end function
Comme je te l'indiquais dans mon message précédent, insère la commande
stop juste après la première ligne :
Function Quotation_Solvabilite(secteur, Solvabilite)
STOP 'ici !!!!!
select case secteur
lance un recalcul. Si ta fonction est appelée, la fonction va s'arrêter
sur cette commande stop.
Reste à jeter un zieux dans la valeur des variables aux différentes
étapes et voir si elles sont cohérentes avec ce qu'elles devraient être.
Les différentes avançant chaque fois que tu presseras la touche F8.
Le fait que tu aies #VALEUR! me laisse à penser que tu essayerais
d'ajouter ou de soustraire des cellules au format texte par exemple.
Teste également ce que renvoie ta fonction lorsque tu es dans le
classeur où elle est écrite. Mais cela ne devrait pas poser problème.
S'il n'y a rien de confidentiel, tu peux envoyer un extrait de ton
fichier + fonction : (enlever le dernier bout)
http://www.cerbermail.com/?k5ZVPVhNiy
@+
FxM
Byothe wrote:Merci FxM,
J'ai essayé ce que tu m'as dit.
La plus grosse boulette étant le "a" qui ne servait à rien. J'ai modifié ma
formule puisque le a devait quand même servir. (enfin au final sa valeur est
sensée être 0).
Malheureusement mon problème existe toujours.
Je vais essayer d'être plus précis (en essayant de rester clair) !
- EN fait ce qu'il se passe c'est que j'ai un autre fichier qui pointe sur
le resultat de cette fonction. Hors quand cet autre fichier est ouvert et que
j'effectue des calculs dans cet autre fichier, la fonction se recalcule et
renvoie #VALEUR!.
Par contre si je fais recalculer (F9) le fichier sur lequel se trouve ma
fonction il ne se passe rien de spécial.
- Les 2 arguments de ma fonction :
+ secteur : il pointe sur une liste de choix qui se source dans un autre
onglet
+ solvabilite : il pointe sur une cellule qui renvoie une valeur calculée
à partir d'autre cellules aussi calculées... et j'ai le sentiment que le
problème vient de là !!!
En effet j'utilise ma fonction à un deuxième endroit mais l'argument
solvabilite pointe sur une cellule qui est un simple calcul réalisé à partir
de 2 autres cellules dans lesquelles les chiffres sont rentrés en dur.
Voila, j'espère que ce sera un peu plus clair.
J'ai modifié ma fonction de la sorte :
------------------------
Function Quotation_Solvabilite(secteur, Solvabilite)
If secteur = "Basic Materials" Then
a = Worksheets("Parametrage").Range("D4").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Industrie et Services" Then
a = Worksheets("Parametrage").Range("D5").Value
If Solvabilite > a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Oil&Gas" Then
a = Worksheets("Parametrage").Range("D6").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Telecom" Then
a = Worksheets("Parametrage").Range("D7").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Utilities" Then
a = Worksheets("Parametrage").Range("D8").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
ElseIf secteur = "Finance" Then
a = Worksheets("Parametrage").Range("D9").Value
If Solvabilite < a Then
Quotation_Solvabilite = 7
ElseIf Solvabilite >= a Then
Quotation_Solvabilite = 7 - Solvabilite
End If
End If
End Function
----------
Voila si quelqu'un a compris quelque chose à mon charabia et trouve une
solution, cela m'aiderait beaucoup.
Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction lors
de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si le
classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction lors
de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si le
classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:
Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction lors
de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si le
classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonjour,
Ca ne marche toujours pas... argh !!!
j'ai essayé de mettre "application.volatile" sans succès.
Quant à la gestion d'erreur je n'ai pas trop compris ce qu'il fallait que je
fasses !!!
Merci pour tout.
A bientôt :-)Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction lors
de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si le
classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonjour,
Ca ne marche toujours pas... argh !!!
j'ai essayé de mettre "application.volatile" sans succès.
Quant à la gestion d'erreur je n'ai pas trop compris ce qu'il fallait que je
fasses !!!
Merci pour tout.
A bientôt :-)
Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction lors
de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si le
classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:
Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
Bonjour,
Ca ne marche toujours pas... argh !!!
j'ai essayé de mettre "application.volatile" sans succès.
Quant à la gestion d'erreur je n'ai pas trop compris ce qu'il fallait que je
fasses !!!
Merci pour tout.
A bientôt :-)Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction lors
de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si le
classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est toujours
pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur quelconque
(qui n'a aucun lien avec ce premier classeur) et que je tape quelque chose
dans une cellule et je fais "Enter"... eh bien paf... ma fonction dans le
premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en #VALEUR!
que je clique dessus et que je fasse "Enter" et hop je retrouve le bon
chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
J'avoue qu'à défaut d'exemple concret je vais de voir jeter l'éponge [et
je ne parle de personne en particulier - les personnes qui se sentent
visées se reconnaitront :o)) ]
@+
FxMBonjour,
Ca ne marche toujours pas... argh !!!
j'ai essayé de mettre "application.volatile" sans succès.
Quant à la gestion d'erreur je n'ai pas trop compris ce qu'il fallait
que je fasses !!!
Merci pour tout.
A bientôt :-)Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction
lors de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si
le classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est
toujours pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur
quelconque (qui n'a aucun lien avec ce premier classeur) et que je
tape quelque chose dans une cellule et je fais "Enter"... eh bien
paf... ma fonction dans le premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en
#VALEUR! que je clique dessus et que je fasse "Enter" et hop je
retrouve le bon chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
J'avoue qu'à défaut d'exemple concret je vais de voir jeter l'éponge [et
je ne parle de personne en particulier - les personnes qui se sentent
visées se reconnaitront :o)) ]
@+
FxM
Bonjour,
Ca ne marche toujours pas... argh !!!
j'ai essayé de mettre "application.volatile" sans succès.
Quant à la gestion d'erreur je n'ai pas trop compris ce qu'il fallait
que je fasses !!!
Merci pour tout.
A bientôt :-)
Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction
lors de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si
le classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:
Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est
toujours pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur
quelconque (qui n'a aucun lien avec ce premier classeur) et que je
tape quelque chose dans une cellule et je fais "Enter"... eh bien
paf... ma fonction dans le premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en
#VALEUR! que je clique dessus et que je fasse "Enter" et hop je
retrouve le bon chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !
J'avoue qu'à défaut d'exemple concret je vais de voir jeter l'éponge [et
je ne parle de personne en particulier - les personnes qui se sentent
visées se reconnaitront :o)) ]
@+
FxMBonjour,
Ca ne marche toujours pas... argh !!!
j'ai essayé de mettre "application.volatile" sans succès.
Quant à la gestion d'erreur je n'ai pas trop compris ce qu'il fallait
que je fasses !!!
Merci pour tout.
A bientôt :-)Bonsoir,
Teste avec un application.volatile :
Function Quotation_Solvabilite(secteur, Solvabilite)
application.volatile 'ici !
select case secteur
Ajouter application.volatile va forcer un recalcul de la fonction
lors de chaque recalcul.
L'avantage est d'avoir une valeur à jour même lorsqu'aucune valeur
impliquée dans la formule n'a changé.
L'inconvénient est que ça ralentit un petit peu ou un gros peu en
fonction de ce qu'il y a déjà à faire.
Si ta fonction est destinée à être utilisée dans un seul classeur, tu
pourrais également commencer par une gestion d'erreur en vérifiant si
le classeur actif (activeworkbook.name) est celui dans lequel est la
fonction (thisworkbook.name). Si problème, quitter par un exit function.
@+
FxM
Byothe wrote:Bonjour !!
Encore une fois merci... mais malheureusement, la solution n'est
toujours pas là !
La fonction et l'onglet parametrage sont bien dans le même classeur.
Ce que j'essayai d'expliquer c'est que quand le classeur dans lequel
apparaît cette fonction est ouvert, que j'ouvre un autre calsseur
quelconque (qui n'a aucun lien avec ce premier classeur) et que je
tape quelque chose dans une cellule et je fais "Enter"... eh bien
paf... ma fonction dans le premier classeur se retrouve en #VALEUR!.
Il suffit alors que j'aille sur la cellule où est ma fonction en
#VALEUR! que je clique dessus et que je fasse "Enter" et hop je
retrouve le bon chiffre !!!
Bref c'est pas gagné et je desespère !!!
Merci pour tout !