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 sous excel2003


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut fonction sous excel2003
    Bonjour,

    je viens poster ici pour avoir quelques infos sur les fonctions sous excel2003:

    En effet mon but est d'avoir un tableau sous excel avec plusieurs champ a compléter, A0,A1,A2,A3;

    Ensuite j'ai 4 autres champs qui dépendent des 4 premiers renseignés auxquels on applique un traitement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Function ProcessC1(A0,A1,A2,A3)
    ...
    ...
        // process
    ...
    ...
    Cette fonction doit me retourner 5 paramètres,
    J'ai declare dans cette fonction un tableau prenant ces 5 valeurs mais dans mes cellules de resultats, le retour est le nom de la fonction (pas le tableau).
    De plus si je nomme mon tableau comme ma fonction cela genere un conflit.

    Comment faire alors pour implementer cette fonction, et pouvoir utiliser dans les 4 cellules finales, un des 5 parametres de retour.

    Merci davance

    Cdlt

  2. #2
    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 sone47 et le forum
    Il serait judicieux de déclarer tes variables

    une Function n'est pas un sub : elle s'applique dans une cellule et de ce fait ne retourne qu'un résultat unique. (et elles ont d'autres limites, en ce qui concerne les format par exemple)

    Rien ne t'empêche de mettre un argument de plus qui sélectionnera le paramètre à retourner, parmis les 5 calculer.

    Sinon, utiliser la macro auto Worksheet_change me paraît plus adapté
    A+

  3. #3
    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
    Citation Envoyé par sone47
    Cette fonction doit me retourner 5 paramètres,
    Sous quelle forme, ces paramètres ? Quelle utilisation ?
    Peux-tu être plus explicite sur l'application de cette fonction ? Une formule utilisant cette fonction ? Une fonction appelée par une macro ?
    Citation Envoyé par sone47
    En effet mon but est d'avoir un tableau sous excel avec plusieurs champ a compléter, A0,A1,A2,A3;
    Comment gères-tu ce tableau ? Par macro ?
    Citation Envoyé par sone47
    Ensuite j'ai 4 autres champs qui dépendent des 4 premiers renseignés auxquels on applique un traitement:
    Même question.
    A+

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Bonjour,

    merci pour ces réponses.

    Pour etre plus precis:
    4 cellules de mon tableau vont contenir 4 variables (types: 3 int et un float),
    Dans 4 autres cellules, il y a 4 valeurs de type int qui dependent des 4 premieres.

    Je voudrais que lorsque le user rentre un parametre dans une des 4 premieres cellules, les modifications soient instantanées dans les 4 autres.

    J'ai donc commencé par ecrire un module en vb:
    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
     
    Function coeff(d2, gdb, Q1, Q2)
     
        gn = 10 ^ (gdb / 20)
        g1 = (1 + gn) / 2
     
        a0 = d2 * 16384
        a1 = (1 + d2) * 16384
        a2 = Q1*16384
        a3 = Q2*16384
     
        a0 = Hex(a0)
        a1 = Hex(a1)
        a2 = Hex(a2)
        a3 = Hex(a3)
     
    End Function
    Voila ma fonction,
    Les 4 valeurs que je souhaite récupérer sont a0:4
    Les 4 valeurs en parametres d'entrée seront saisis dans des cellules.

    J'ai plusieurs problèmes,
    d'une part cette fonction doit retourner plusieurs paramètres, mais je pense qu'avec la solution citée plus haut, un paramètre d'entrée supplémentaire devrait faire l'affaire.
    D'autre part, lorsque l'on creer une fonction, comment définir son parametre de retour, est ce le nom de la fonction?
    Enfin, j'aimerai que cette fonction soit intégrée a ma feuille excel, car j'ai cru comprendre que lorsque l'on crée des fonctions, elles ne sont définies qu'en local.

    Je précise que je souhaite n'avoir qu'une fonction, ceci pour maintenance, en effet il est fort probable que ce process reçoive en interne quelques changements dans le futur, ceci m'éviterai donc de modifier chaque formule dans différentes cellules.

    Merci

  5. #5
    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 sone47 et le forum
    Ne comprenant pas tout, j'ai refait une fonction que je puisse testée :
    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
    Function Coeff(V1 As Integer, V2 As Integer, _
                  V3 As Integer, V4 As Integer, _
                  Ret As Integer) As String
    Application.volatile
    Select Case Ret
        Case 0  'Ret = 0
            Coeff = V1 * 10
        Case 1  'Ret = 1
            Coeff = V2 * 10 + V1
        Case 2  'Ret = 2
            Coeff = V3 * 100 + V2 * 10 + V1
        Case 3  'Ret = 3
            Coeff = V1 + V2 + V3
        Case Else  'Ret autre
            Coeff = "#Valeur Retour#"
    End Select
    End Function
    tu la mets dans un module général
    Quand tu cliques sur le Fx de la barre de formule, en catégorie personnalisée, elle apparaît

    dans l'assistant, tu mets 1, 2, 2 et 4 pour V1 à V4
    et pour Ret, tu mets de 0 à 3 (tout autre cnombre donnera le message d'erreur) en suivant en direct la réponse

    Application.volatile oblige la mise à jour de la formule à chaque recalcul de la feuille : important si tu utilises des cellules.
    Enfin, j'aimerai que cette fonction soit intégrée a ma feuille excel, car j'ai cru comprendre que lorsque l'on crée des fonctions, elles ne sont définies qu'en local.
    Sauf si tu la mets dans le classeur des macros perso, elle ne sera utilisable qu'avec le classeur contenant le module et le suivra.

    J'ai déclaré mes variable en intéger, si je mets du texte, j'aurais le message d'erreur #Valeur#, qui ne dépend pas de la valeur de Ret, mais d'une des autres valeurs.
    Il vaut mieux les déclarer (chez moi je l'ai rendu onligatoire).
    Il est préférable de définir le type de variable à utiliser, mais quand elle peut être de plusieurs types (comme dans ton exemple a0 peut être soit double, soit texte), il vaut mieux la déclarer en Variant.
    A+

Discussions similaires

  1. VBA requete avec fonction sous access
    Par vanima dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/06/2006, 15h18
  2. [EXCEL] Fonction sous.total
    Par repié dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/02/2006, 10h13
  3. [VBA]localiser un appel fonction sous excel
    Par random dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/01/2006, 10h09
  4. Jascript fonction sous IE mais pas sous Netscape ou FF
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 29/12/2005, 17h02
  5. Fonction sous SQL Server
    Par GeffD dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/04/2005, 11h32

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