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 :

Fonction personnalisée - Retourner le résultat dans plusieurs cellules


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Fonction personnalisée - Retourner le résultat dans plusieurs cellules
    Bonjour,

    Je voudrais écrire une fonction appelable via Excel qui me retournerait un résultat de type "matrice" (plusieurs lignes, plusieurs colonnes). Seulement, j'aimerais n'entrer mon appel à la fonction que dans une SEULE cellule dans Excel (plutôt que de passer par CTRL+SHIFT+ENTREE).

    Ex : je tape =test() en A1, et cela inscrit le chiffre 0 en cellules B1,B2,B3.

    J'ai lu qu'une fonction appelée via une spreadsheet ne pouvait agir sur d'autres cellules que celle à partir de laquelle cette fonction a été appelée. Seulement, j'ai déjà vu dans certaines API des fonctions qui, appelées dans une seule cellule, affichaient un résultat sur une plage entière de cellules (je parle ici notamment de certaines fonctions Bloomberg for Excel, type BLPH(), qui prennent en arguments le code d'une ou plusieurs actions, une date de début, une date de fin, et retournent l'historique des valeurs de cette(ces) action(s)).

    J'ai beau chercher sur différents forums, je suis incapable de trouver une solution. Passer par une procédure appelée par la fonctione elle-même appelée par la spreadsheet ? J'ai l'impression que ça n'est pas possible ...

    Merci infiniment pour votre aide précieuse

    Rémi

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    bonjour
    si la plage oû tu va ecrire le resultat est fixe (non pas paramatre) alors c'est faisable, j'ai deja une sub qui fait ça
    sinon , si la plage doit etre entrée en paramatre, dans ce cas tu a exactement le meme probleme que moi, que j'ai posé d'ailleur sur ce forum

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.
    Mermar, la plage qui sera utilisée par la fonction dépendra des paramètres de la fonction (en fait, les paramètres de la fonction permettront de définir une requête SQL dont je voudrais afficher le résultat).
    Sa taille dépendra donc de la requête effectuée ...
    Peux-tu coller ta sub histoire que je vois si ça peut régler mon pb ?

    En continuant à chercher, voilà ce que j'ai trouvé comme pistes :


    Since you cannot change the sheet while the UDF is calculating, you
    need some way to do the changes after calculation is complete. The
    basic plan is to save enough information as a to-do list in some
    global state (e.g. a static variable) so that a subsequent update can
    make the changes. Among other bits, you'll need xlfCalller to keep
    track of which range was called. Then to trigger the update there are
    a few plans:
    1. Make a separate thread that will call into Excel using the
    Automation interface (other threads can't call Excel4/Excel12).

    2. Trap the sheet calculate event, then check your to-do list and do
    the updates,
    3. Set a timer to trigger a macro that does the update (though
    xlcTimer does not work from a UDF, so you'd have to use
    Application.Timer). Or you could set up a repeated timer based on
    xlcTimer from the AutoOpen to poll for work to do. There is some user-
    inconvenience from timer-calls though (e.g copy/cut selection is
    cleared).

    It has been suggested that Bloomberg uses DDE to poke Excel. I don't
    know how this would work.
    Il semble qu'utiliser l'Automation soit la solution la plus conseillée. Any idea de comment cela pourrait fonctionner ?

    Merci encore

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour
    Je pense que tu es aller trop loin avec Automation !
    Je comprends pas pourquoi t'a pas mis la partie de ton code qui pose le probleme , ç'est plus facile à comprendre pour pouvoir t'aider

Discussions similaires

  1. [XL-2013] Copier des résultats dans plusieurs cellules
    Par Theo dort dans le forum Excel
    Réponses: 4
    Dernier message: 01/03/2014, 11h25
  2. [Toutes versions] fonctions écrivant son résultat dans plusieurs cases
    Par johanvs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2010, 17h18
  3. Réponses: 17
    Dernier message: 22/09/2010, 14h44
  4. Réponses: 2
    Dernier message: 15/09/2008, 11h42
  5. Fonction Excel Ecrivant Dans Plusieurs Cellules
    Par Denis14T dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/04/2007, 20h57

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