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

Excel Discussion :

Formule qui fait référence à une fonction dans un autre classeur [XL-2013]


Sujet :

Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 113
    Points : 72
    Points
    72
    Par défaut Formule qui fait référence à une fonction dans un autre classeur
    Bonjour à tous,

    J'ai un classeur nommé "AutreClasseur.xlsm" avec une fonction nommée Age(DateNaissance).

    J'ai un autre classeur nommé "Procédure et Fonctions.xlsm".
    Je cherche à entrer une formule dans la cellule E2 de la feuille "Fonctions" qui calcule l'âge par rapport à la date de naissance renseignée en A1 de cette même feuille.

    La formule que j'emploie est:

    =AutreClasseur!Age(A1)

    Mais cela me renvoie une erreur #Valeur

    Quelqu'un peut-il m'aider SVP.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Déjà, le "!" est utilisé pour désigner un onglet et non un classeur.

    Normalement, si les deux classeurs sont ouverts, tu peux utiliser la fonction sans autres ajout.

    Si tu veux utiliser une fonction se trouvant dans un classeur fermé, je ne suis pas sûr que ce soit possible.
    Si ça l'est (ce qui n'est pas sûr), ça doit être une grosse galère à faire. Je te conseille donc plutôt de te simplifier la vie en copiant ta fonction personnalisée dans le classeur qui l'utilise.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    On ne voit bien ce que vous voulez faire; ça rappelle la fonction "Indirect", mais voici un exemple pour s'en inspirer:
    Fichiers attachés Fichiers attachés

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut

    Il faut ajouter le nom du classeur (et il faut qu'il soit ouvert).

    Nom : 2019-12-03_205756.png
Affichages : 425
Taille : 5,9 Ko

    On comprend vite que cela limite les possibilités. Si l'on transfère un classeur, il faut également transférer le classeur qui contient la fonction et bien tenir compte du fait qu'il soit ouvert sinon BOUM lors du recalcul. Habituellement, on place ces fonctions dans le perso.xlsb, qui est ouvert par défaut à l'ouverture d'Excel.


    @Boulser

    [EDIT] il manque l'extension du fichier dans ta formule (voir mon illustration) [/EDIT]

    Pour calculer l'âge, il n'y a pas besoin d'une fonction perso. Tu peux utiliser la fonction DATEDIF(Debut;Fin;"y") (attention, fonction non documentée dans Excel, et qui pose problème pour des intervalles complexes)

    Nom : 2019-12-03_204806.png
Affichages : 326
Taille : 4,5 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    Si la Fonction "Age(DateNaissance" est dans le même classeur, la formule

    =Age(A1)

    fonctionne à merveille. Normalement, une fonction est disponible dans d'autre classeur, me semble-t-il. Je cherche donc à l'employer pour ne pas devoir toujours la recopier. Si possible bien entendu.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    En fait, je cherche une formule qui peut faire appel à n'importe quelle fonction VBA qui se trouve dans un autre fichier excel sans devoir la recopier à chaque fois.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    J'ai édité mon post...

    =NomClasseur.extension!NomFonction(...)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    @Pierre: si tu veux connaître l'âge de façon précise en années, mois et jours, je doute que DATEDIF("y";Debut;Fin) soit d'une grande aide !

    @Boulser: voir l'indication de Pierre "on place ces fonctions dans le perso.xlsb"

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Zekraoui_Jakani Voir le message
    [...]je doute que DATEDIF("y";Debut;Fin) soit d'une grande aide ![...]

    Nom : 2019-12-04_085525.png
Affichages : 315
Taille : 6,5 Ko

    Mais je n'ai vu nulle part que la demande initiale parlait d'exprimer l'âge en Année/mois/jours ^^


    Voir cette fiche de Microsoft pour certains problèmes rencontrés avec DateDif
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour le fil,

    Pour obtenir l'age (fractionnaire) on peut aussi utiliser FRACTION.ANNEE() :
    =FRACTION.ANNEE(Date_de_naissance;AUJOURDHUI())
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    [...]
    Chouette, vous avez 52,938... ans...

    Cela dit, attention au troisième paramètre, car c'est un peu déroutant

    Nom : 2019-12-04_104828.png
Affichages : 277
Taille : 5,9 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 113
    Points : 72
    Points
    72
    Par défaut
    OK, merci.
    Ma formule :

    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =AutreClasseur!Age(A1)

    est bonne.

    Maintenant, si le classeur "AutreClasseur" est ouvert, je n'ai plus d'erreur.
    Si ce classeur est fermé, l'erreur est #Nom#.

  13. #13
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Il faut ajouter le nom du classeur (et il faut qu'il soit ouvert).
    Nom : 2019-12-03_205756.png
Affichages : 425
Taille : 5,9 Ko
    Citation Envoyé par boulser Voir le message
    Ma formule : =AutreClasseur!Age(A1) est bonne.
    J'ai un classeur XLAM qui stocke des fonctions personnalisées et qui s'ouvre automatiquement quand j'ouvre Excel.
    Je n'ai pas besoin d'indiquer le nom du classeur source quand j'utilise ces fonctions.
    Elles apparaissent même dans l'autocompletion quand je tape les premiers caractères de cette formule.

    A mon avis, si le classeur contenant la macro est ouvert, la formule =Age(A1) devrait fonctionner dans n'importe quel autre classeur.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut Menhir,


    Le demandeur parle d'un xslm dans sa demande initiale. Pour utiliser une fonction d'un xlsm, il faut qu'il soit ouvert et il faut préfixer la fonction du nom du classeur avec son extension.

    J'ai un classeur xslm avec une fonction perso dedans. Pour l'utiliser dans un autre classeur, je dois ouvrir le classeur qui contient la fonction et la préfixer du nom du classeur et je n'ai pas l'autocomplétion...
    Je n'ai pas l'autocomplétion dans ce classeur.

    La fonction dans son classeur avec l'autocomplétion

    Nom : 2019-12-06_085029.png
Affichages : 265
Taille : 22,0 Ko



    La fonction dans un autre classeur xlsm: pas d'autocomplétion et l'obligation de préfixer

    Nom : 2019-12-06_085100.png
Affichages : 269
Taille : 42,4 Ko

    Nom : 2019-12-06_085342.png
Affichages : 259
Taille : 39,5 Ko



    Toi, tu parles d'un xlam, probablement stocké dans ton xlstart. C'est différent et dans ce cas, tu peux effectivement utiliser la fonction sans la préfixer. C'est aussi le cas si tu renseignes un xlAm dans les compléments Excel de ton classeur. Tu peux alors également utiliser la fonction sans la préfixer.


    Conclusions: il serait préférable de stocker les fonctions perso soit dans le xlsb, soit dans un xlAm. Cet xlAm pourrait être stocké dans le xlstart pour être ouvert dès l'ouverture d'Excel. Il pourrait aussi être stocké dans les Addins de l'utilisateur pour être référencé dans les compléments d'un classeur et pouvoir en utiliser les fonctions dans les préfixer. L'intérêt supplémentaire du xlam est qu'il est invisible pour l'utilisateur.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour à tous,

    Bonne synthèse Pierre
    A laquelle j'ajouterais tout de même que si on envoie son classeur à quelqu'un n'ayant pas accès au XLSM, XLSB ou XLAM, la fonction ne marche plus, ce qui peut constituer une limite pour le moins gênante.

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Le demandeur parle d'un xslm dans sa demande initiale. Pour utiliser une fonction d'un xlsm, il faut qu'il soit ouvert et il faut préfixer la fonction du nom du classeur avec son extension.
    Effectivement.
    Je pensais que les xlsm et xlam réagissaient de la même façon mais ce n'est pas le cas.
    Je viens de faire le test : avec un xlsm, la fonction n'est pas trouvée si on ne lui ajoute pas le nom de classeur alors qu'avec un xlam (enregistré au même endroit), elle est trouvée.

    On en apprend tous les jours.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Menhir Voir le message
    [...]

    On en apprend tous les jours.
    En effet. j'ai dû essayer quelques trucs pour arriver aux conclusions que j'ai exposées. C'est aussi un des intérêts du forum, ça nous oblige à chercher
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 011
    Points : 2 078
    Points
    2 078
    Par défaut Execution d'une procedure d'un classeur fermé
    Bonjour,
    La discussion est fermée, mais comme j'ai un certain gout pour le paradoxe et que les fêtes de fin d'année approchent, je vous demande d'être indulgents.

    En jouant peut-être un peu sur les mots il me semble que l'on peut exécuter une procédure d'un classeur fermé (en tout cas en ne l'ouvrant pas explicitement..)

    Comment : et bien par exemple en mettant en référence dans le classeur appelant (avec parcourir) le classeur appelé.
    Pour qu'Excel accepte pour référence le classeur appelé, il faut renommer VBAProject (dans l'exemple j'ai vite fait renommé les deux VBAProject mais en renommer un seul doit suffire)
    Comme beaucoup refusent d'ouvrir des classeurs les images ci-dessous devraient permettre à ceux qui seraient intéressés de tester.
    Nom : BoutonQuiExecuteFunctionDeClasseurFerme.JPG
Affichages : 276
Taille : 14,2 Ko
    Nom : ClasseurFerme.JPG
Affichages : 260
Taille : 22,7 Ko
    Nom : ClasseurQuiUtiliseFunctionClasseurFerme.JPG
Affichages : 289
Taille : 60,8 Ko
    Nom : Reference.JPG
Affichages : 227
Taille : 45,5 Ko

    Les deux classeurs :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/11/2016, 19h46
  2. [MySQL] Comment modifier un champ qui fait référence à une autre table ?
    Par geeka dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/08/2014, 12h51
  3. [XL-2003] Formule qui fait référence a une feuille ajouté
    Par dlight dans le forum Excel
    Réponses: 4
    Dernier message: 09/12/2009, 23h45
  4. [XL-2003] Adapter Formule qui fait référence à une cellule sur la même ligne
    Par toukii dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/06/2009, 00h25
  5. Réponses: 1
    Dernier message: 16/05/2008, 16h36

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