IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] macro complementaires et données externes


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut [VBA-E] macro complementaires et données externes
    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 ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    y a t il une méthode pour sortir de l'autisme d'Excel ?

    ???


    michel

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    > 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.

  4. #4
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    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.

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et la table elle est ou ..?

  6. #6
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    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).

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par EvaristeGaloisBis
    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.?

  8. #8
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    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....

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    toujours aussi clair


    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =INDEX('TD 88-90 '!B:B;C5+1)

  10. #10
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    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.

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    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...?

  12. #12
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    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 .

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pour cela tu peu créer une fonction du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function Lx(iAge As Integer)
      Lx = Sheets("TD 88-90").Cells(iAge, 2).Value
    End Function
    que tu place ensuite dans une cellule ..:


  14. #14
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    oui mais Excel ne veut pas. il n'arrive pas a aller a l'autre classeur.

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    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
    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.
    Si elle est homologuée depuis 93...

  16. #16
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    voici mon code mis dans le fichier.xla

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 QX va juste me chercher une valeur elle ne fait pas le vrai calcul !
    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.
    :'(

  17. #17
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    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..)

  18. #18
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    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.

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ben voui, dans un xla j'ai bien 4 feuilles
    A+

  20. #20
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Function Qx(iAge As Integer)
     Qx = ThisWorkbook.Sheets("TD 88-90").Cells(iAge, 2).Value
    End Function
    puis dans ton autre classeur tu peu utiliser la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =MonXla.xla!QX(10)
    après avoir coché MonXla dans la liste des macros complémentaires (outils, Macro complémentaires..)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] Enregistreur de Macros & Import de données externe flexible.
    Par XLRATOR dans le forum Contribuez
    Réponses: 0
    Dernier message: 31/08/2012, 16h27
  2. [VBA-E] macro avec base de données externe
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2007, 15h12
  3. Réponses: 8
    Dernier message: 10/02/2007, 03h44
  4. [VBA-E] Macro Récupération de donnée afin d'en faire un rapport.
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 25/07/2006, 16h37
  5. [VBA]macro Word avec données de MySQL
    Par Taz_8626 dans le forum VBA Word
    Réponses: 3
    Dernier message: 17/07/2006, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo