Lire un tableau

M

Melanie

Guest
Bonjour,

J'ai un tableau avec des âges et des taux de mortalité. J'ai besoin de les lire en VBA, autrement dit que c'est valeurs soient stockées selon l'âge pour les utiliser dans dees formules ultérieures. Seulement je me suis inspiré de codes faits pour Access et cela ne marche pas. Help
 
M

Melanie

Guest
J'avais pas réussi à y joindre le fichier [file name=Classeur1_20051117014516.zip size=9389]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051117014516.zip[/file]
 

Pièces jointes

  • Classeur1_20051117014516.zip
    9.2 KB · Affichages: 9

Dan

XLDnaute Barbatruc
Bonjour Melanie,

Pourrais-tu relire ton message car au vu de ce que tu expliques et de ton fichier je ne comprend rien à ce que tu cherches à faire.

- Tu veux lire quoi dans ton fichier et où ?
- Quels sont les résultats à obtenir, à partir de quelle colonne et à placer où ?

Bref ce serait mieux que que tu complètes un peu ton fichier si tu veux que l'on te réponde.

A te lire

:)
 
M

Melanie

Guest
Public Function Init()
'les tables sont lues sur les champs et tranférées en variables-tableaux
Dim x As Integer, s As Integer
Dim Table As Object
Set Table = CurrentDb.OpenRecordset('EKMF_95', dbOpenDynaset)

For x = 0 To 105
qx(x) = Worksheets('Feuil1').Cells(x - 15, 2)
lx(x) = Worksheets('Feuil1').Cells(x - 15, 3)
Next x

End Function

Public Function px(x)

px = 1 - qx(x)

End Function

Ensuite je voudrais créer des fonctions qui utilisent les qx et des lx pour des âges de 0 à 105 comme celle de dessus. px=1-qx p.ex. Je suis au début du programme, je suis bloqué car je n'arrive pas à faire mémoriser ces qx et lx pour des âges respectifs. J'espère avoir été suffisamment clair? autrement n'hésitez pas à me redemander.
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Melanie et Dan, bonjour à toutes et à tous,

Je suis comme Dan et je ne comprends pas très bien ce que tu souhaites faire :unsure:

Toutefois, j'ai testé le code qui suit (il fonctionne mais répond-il à tes attentes ??) :

Code:
Dim qx(106)
Dim lx(106)

Public Sub Init()
    'les tables sont lues sur les champs et tranférées en variables-tableaux
Dim x As Integer, s As Integer
    'Dim Table As Object
    'Set Table = CurrentDb.OpenRecordset('EKMF_95', dbOpenDynaset)

  For x = 0 To 105
    If x > 15 Then
      qx(x) = Worksheets('Feuil1').Cells(x - 15, 2)
      lx(x) = Worksheets('Feuil1').Cells(x - 15, 3)
    End If
  Next x
        
End Sub

Public Function px(x) As Variant
'
  px = 1 - qx(x)
End Function

Tiens-nous au courant.

Amicalement
Charly

édition : tu enlèves du code tout ce qui ressemble à des '&nb sp;'.

Message édité par: Charly2, à: 17/11/2005 15:36

Message édité par: Charly2, à: 17/11/2005 15:37
 

Charly2

Nous a quittés en 2006
Repose en paix
Re,

Avec un exemple, ce sera peut-être plus parlant ;)

Amicalement
Charly [file name=Melanie.zip size=12214]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Melanie.zip[/file]
 

Pièces jointes

  • Melanie.zip
    11.9 KB · Affichages: 17
M

Melanie

Guest
Je te remercie Charly même si ce n'est pas ce que je recherchais. En effet, je m'explique, la colonne A désigne les x(âges), la colonne B qx(x) qui sont les taux de mortalité, fonction de x(âges) . A présent ce que je voudrais c'est créer une fonction sur la colonne D qui me calcule qqch comme par ex. 1-qx(x) en désignant les x(âge) correspondants de la colonne A dans la fonction. Or le fichier que j'ai reçu me donne des 1 partout. Merci encore

Melanie
 
M

Melanie

Guest
Bonjour Charly

Public Function dx(x As Integer) As Double
'
dx = qx(x)

End Function

J'ai ajouté ceci et j'ai remarqué que cela me donnait 0 quel que soir le qx(x) or ça de3vrait m'afficher le qx(x) de la colonne B. Par exemple qx(2) = 0,00020. Merci
 

Charly2

Nous a quittés en 2006
Repose en paix
Re,

Le problème des fonctions personnalisées vient du fait qu'elles ne se recalculent pas de manière automatique.

Pour le fichier joint, il fallait d'abord initialiser les qx en appuyant sur le bouton Init, mais bon, je pense que c'est inutile à la lumière de tes explications.

En effet, pourquoi utiliser du code quand on peut faire autrement :whistle:

En D2, tu entres [b]=1-B2[/b] (B2 correspond bien à q(17) puisqu'il se trouve sur la même ligne, non ?). Dans ton cas, les fonctions ne sont pas utiles...

Petite précision sur ton dernier post : c'est qx(17) qui donne le résultat escompté, donc dx(17) ou dx(A2), mais toujours après avoir initialisé ton tableau.

Voilà

Amicalement
Charly
 

Charly2

Nous a quittés en 2006
Repose en paix
J'imagine bien Melanie, mais dans les situations où une formule de feuille de calcul suffit, il est peut-être plus simple de l'utiliser.

D'autre part, en ayant quelques formules, une modification dans ta feuille entraînera un recalcul automatique de toutes les formules (y compris tes fonctions personnalisées), ce qui n'est pas le cas lorsqu'on n'utilise que des fonctions personnalisées. ;)

@+
Charly
 

Discussions similaires

Statistiques des forums

Discussions
312 550
Messages
2 089 514
Membres
104 199
dernier inscrit
SimonDtx