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 :

Problème appel fonction [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut Problème appel fonction
    Bonjour tout le monde

    La fonction ci-dessous est sensée écrire toto (dans la 3ème cellule de la plage de cellule MonNom) et renvoyer 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function MyFunction() As Integer
        Dim ws As Worksheet
        Dim rng As Range
     
        Set ws = ThisWorkbook.Worksheets("Feuil1")
        Set rng = ws.Range("MonNom")
        rng.Cells(3, 1).Value = "toto"
     
        MyFunction = 0
    End Function
    Si j’ajoute un bouton dans l’onglet Feuil1 qui appelle cette fonction, tout se passe bien (toto s'écrit bien où il faut et la fonction renvoie 0)
    En revanche, si j’écris =MyFunction() dans une autre cellule de l’onglet Feuil1, alors toto ne s’écrit pas, et la fonction renvoie #VALEUR ! au lieu de 0

    Quelqu’un peut-il m’expliquer pourquoi ?

    Merci pour votre aide

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour;

    Quand tu utilises une fonction personnelle dans une feuille EXCEL, cette fonction renvoie une valeur enregistrée dans la cellule, mais cette fonction ne doit modifier aucun autre objet.
    Si tu neutralises la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rng.Cells(..).Value = "Toto"
    le pb devrait disparaître.
    Mais comme tu essayais jystement de modifier une autre cellule, cela ne te satisfait pas. Ce que tu essaies de faire n'est pas possible.

    Cordialement,

    PGZ

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut keks42 et le forum
    Function est une procédure dont le but est de retourner un résultat, pas d'effectuer des modifications, comme une formule normale.
    Pour modifier des cellules, utilise une Macro SUB. Une macro appelée par une Function ne marchera pas non plus.
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Par défaut
    Merci pour vos réponse.

    Je vais essayer de trouver un moyen de contournement.

    @++

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Peut-être utiliser l'évènement Calculate de la feuille pour déclencher une procédure qui fait les mêmes modifications, mais il faudra chercher les cellules concernées.

    Cordialement,

    PGZ

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

Discussions similaires

  1. Problème appel fonction d'une DLL
    Par xEndLe dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 04/05/2012, 17h08
  2. [OL-2003] Problème appel fonction
    Par ptitemeuh dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 04/02/2010, 15h26
  3. [OL-2003] Problème appel fonction
    Par ptitemeuh dans le forum Outlook
    Réponses: 0
    Dernier message: 04/02/2010, 15h26
  4. Problème appel fonction
    Par Elstak dans le forum VC++ .NET
    Réponses: 11
    Dernier message: 22/05/2009, 19h37
  5. [PHP-JS] problème appel fonction javascript
    Par OLman135 dans le forum Langage
    Réponses: 5
    Dernier message: 14/05/2009, 21h30

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