bonjour,
j'aimerai faire une macro complémentaire, et que certaines fonctions puissent aller chercher des valeurs dans un autre classeur ou une base de données...
y a t il une méthode pour sortir de l'autisme d'Excel ?
Version imprimable
bonjour,
j'aimerai faire une macro complémentaire, et que certaines fonctions puissent aller chercher des valeurs dans un autre classeur ou une base de données...
y a t il une méthode pour sortir de l'autisme d'Excel ?
bonjour
Citation:
y a t il une méthode pour sortir de l'autisme d'Excel ?
???
michel
:koi:Citation:
> autisme
(nom masculin)
Grave trouble infantile de la communication et du comportement qui se développe toujours avant l'âge de trois ans. Il se caractérise notamment par une attitude de repli sur soi, où l'individu n'entretient plus de relations avec le monde extérieur.
oui je n'arrive pas a lui faire prendre des données autre part que sur sa feuille (n'est ce pas une forme d'autisme?).
J'avoue ne plus avoir d'idée :'( et je ne veux pas les mettre en dur dans le programme.
Ce qui suit est superfetatoire et soporifique :
Pour résumer afin que les plus ferrus puissent voir le problème en entier: je veux mettre des données (la table TD 88 90 pour ceux que ça interesse), et que quand je suis sur une feuille excel (n'importe laquelle) je puisse taper dans une cellule : "=qx(25)" pour avoir la valeur du qx a 25ans.
et la table elle est ou ..?
elle est disponible sur internet http://www.actuaris.com/infotech/pag...ite_td8890.htm
Dans un fichier excel sur mon PC
et dans une Base de données (j'ai tout testé dans le domaine du réalisable pour moi).
?? dans un fichier ..Excel..? sous qu'elle forme..? quel est ton but.?Citation:
Envoyé par EvaristeGaloisBis
mon but est de me faciliter la vie. Au lieu de mettre un temps fou a lire ma table, et faire mes calculs de rente dessus.
je tape une petite formule excel rapide qui me calcule tout avec cette base.
PAr exemple Qx(iAge) = (Lx+1 -Lx)/Lx. mais il y a d'autre formules plus casse pieds
Quand tu dois faire ça a longueur de journée, un outils performant est nécessaire pour ne pas perdre au moins 2 minutes a reprendre ta table et lire les bonnes valeurs....
toujours aussi clair :aie:
tu peu peu-être mettre ta table sur 2 colonnes.... et utiliser la fonction index d'excel pour retrouver un "lx" correspondant à l'age donné...?
par exemple si la colonne B ta feuille TD 88-90 contient tes "lx".. et la cellule C5 de ta feuille l'age à chercher :
Code:
1
2 =INDEX('TD 88-90 '!B:B;C5+1)
vis mais je veux le passer par macro complementaire... pour que les autres utilisateurs puissent immédiatement voir que c'est le QX, ou le AX ou je ne sais quel barbarisme.
Le mieux pour moi aurait été de mettre les données dans une base de données.
ta table elle ne doit pas changer bien souvent... puis elle n'est pas trop "grande".. .108 enregistrements... une feuille excel semble bien suffisante...
j'ai toujours pas compris ce que tu voulais extraire de cette table à par la valeur de la colonne Lx en fonction de la colonne Age...?
oui c'est ça.
mais en fait je veux me faire un .xla avec une fonction capable de lire dedans.
Or Excel ne veut pas. j'ai essayé plein de chose diférente mais çà ne fonctionne pas .
pour cela tu peu créer une fonction du genre :
que tu place ensuite dans une cellule ..:Code:
1
2
3
4 Function Lx(iAge As Integer) Lx = Sheets("TD 88-90").Cells(iAge, 2).Value End Function
;)Code:=LX(C5)
oui mais Excel ne veut pas. il n'arrive pas a aller a l'autre classeur.
Elle change souvent cette table, parce que la copier manuellement dans Excel ne m'a pas posé de pb...
Parce qu'il est dit dans cette table
Si elle est homologuée depuis 93...Citation:
Définition : la Table TD 88-90 a été établie à partir des données de l'INSEE issues d'observations réalisées entre 1988 et 1990 sur la population masculine. Elle a été homologuée par l'arrêté du 27 avril 1993 et s’applique à la tarification des contrats d'assurance en cas de décès.
voici mon code mis dans le fichier.xla
La fonction QX va juste me chercher une valeur elle ne fait pas le vrai calcul !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Function Qx(iAge As Integer, stTable As String) As Double Dim stFichier As String Select Case LCase(stTable) 'décès Case "": stTable = "TD 88-90" Case "DECES": stTable = "TD 88-90" Case "TD 88-90": stTable = "TD 88-90" 'vie Case "VIE": stTable = "TV 88-90" Case "TV 88-90": stTable = "TV 88-90" End Select stCheminTables = "I:\Souscription\Souscripteurs\NB" stFichier = "Table.xls" url = stCheminTables & "\" & stFichier Workbooks.Open url Qx = Workbooks(stFichier).Sheets(stTable).Cells(iAge + 3, 2) Workbooks(stFichier).Close End Function Sub tt() MsgBox Qx(25, "TD 88-90") End Sub
la fonction tt est juste une fonction test.
Il se trouve que le tt() renvoie la bonne valeur, donc que ma fonction QX fonctionne correctement. MAIS quand dans une cellule je tape "=QX(25,"TD 88-90")" il me renvoie une erreur.
:'(
ben tu ne peu pas ouvrir un classeur dans une "fonction de feuille de calcul" ... pourquoi ne copie tu pas cette table dans une feuille cachée une bonne fois pour toute... (où à l'ouverture de ton Xla..)
c'est a dire que dans mon fchier.xla, il y a une feuille avec ces données et qu'il s'en serve immédiatement..?
Car mon but c'est que de n'importe quelles feuilles excel que j'ouvre en tapant : "=qx(age)" il me trouve la bonne valeur. sinon ça ne sert a rien.
Ben voui, dans un xla j'ai bien 4 feuilles ;)
A+
ben dans ton fichier xla... (nommé par exple monXla) tu met la table ... TD 88-90 dans la feuille du même nom .. un module avec le code :
puis dans ton autre classeur tu peu utiliser la formule :Code:
1
2
3
4 Function Qx(iAge As Integer) Qx = ThisWorkbook.Sheets("TD 88-90").Cells(iAge, 2).Value End Function
après avoir coché MonXla dans la liste des macros complémentaires (outils, Macro complémentaires..)Code:
1
2 =MonXla.xla!QX(10)
;)