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 vs procédure


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Par défaut fonction vs procédure
    Bonjour à tous,

    Savez-vous si il est possible a une fonction vba de modifier la valeur d'une cellule dans une feuille de calcul et en meme temps retourner une valeur?
    Je cherche déséspérement un moyen de le faire et ce sans passer par une procédure.

    Un tout grand merci pour votre précieuse aide!

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Pas directement, ce pendant, tu peux combiner une fonction et une macro évènementielle pour arriver à tes fins (c'est de la bidouille) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function test(c, Optional ValeurAutreCellule)
        test = 2
    End Function
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.HasFormula And Left(Target.Formula, 5) = "=test" Then
        txt = Split(Target.Formula, ",")(1)
        txt = Mid(txt, 2, Len(txt) - 3)
        Application.EnableEvents = False
        [J1] = txt
        Application.EnableEvents = True
    End If
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Ou, plus simple, avec une variable publique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Var As Variant
    Function test(c, ValeurAutreCellule)
        Var = ValeurAutreCellule
        test = 2
    End Function
    et dans le module feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.HasFormula And Left(Target.Formula, 5) = "=test" Then
        Application.EnableEvents = False
        [J1] = Var
        Application.EnableEvents = True
    End If
    End Sub

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Par défaut
    Merci beaucoup pour ces réponses, par contre je n'arrive toujours pas à modifier la valeur de la cellule J1.

  5. #5
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Savez-vous si il est possible a une fonction vba de modifier la valeur d'une cellule dans une feuille de calcul et en même temps retourner une valeur?
    Je ne suis pas sûr d’avoir bien saisi le problème et surtout la finalité de ta demande.
    Pourquoi faut-il que ce soit impérativement une fonction ?
    Regarde le test ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
        Range("K1") = Essai
    End Sub
    Function Essai()
        Range("J1") = "Bonjour, "
        Essai = "Ca va ?"
    End Function
    La fonction Essai modifie la valeur de J1 et retourne une valeur.

    Cordialement.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,
    @ gFZT82 :

    Ca fonctionne effectivement si la fonction est appelée par VBA. Ca ne fonctionne pas si elle est utilisée comme une fonction perso dans Excel.

    @ mimi123456789 :
    Regarde le classeur joint.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour Daniel.C,

    Ca fonctionne effectivement si la fonction est appelée par VBA. Ca ne fonctionne pas si elle est utilisée comme une fonction perso dans Excel.
    Oui, mais mimi123456789 ne fait pas état d'une fonction personnelle.
    Attendons ses précisions sur la finalité.

    Cordialement.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Par défaut
    Merci pour toutes ces réponses. Effectivement j'ai besoin d'une fonction personnelle que "j'appelle" depuis une feuille de calcul excel.
    Ma fonction perso doit pouvoir modifier la valeur d'une autre cellule (dans la feuille de calcul) et en même temps renvoyer une valeur.
    Le projet sur lequel je travaille m'impose d'utiliser une fonction et non pas une procédure.

    Merci pour votre aide.

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

Discussions similaires

  1. Diff entre Fonctions et Procédures Stockées
    Par say dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 28/02/2007, 12h19
  2. Diff entre Fonctions et Procédures Stockées
    Par say dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/02/2007, 12h17
  3. Modéliser une routine (fonction ou procédure)
    Par koala01 dans le forum C++
    Réponses: 26
    Dernier message: 20/12/2006, 02h32
  4. Fonction ou procédure avec paramètres optionnels ?
    Par [Silk] dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2006, 13h55
  5. Réponses: 11
    Dernier message: 20/12/2005, 18h40

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