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 :

Execution fonction dans une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut Execution fonction dans une feuille
    Bonjour.

    J'ai crée une Form via laquelle j'entre des donnéees numérique sur une feuille. Quand on appuie sur le bouton valider :
    -ces données sont entrées dans la feuille
    -une série de formule est attribuée à des cellule de la feuille (moyenne, min ...) grace à formulalocal pour traitrer ces données;

    Tout se passe bien. Mais j'ai écris une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Function RechercheMaxi(NumeroColonne As Integer)
     Maxi = 0
     For i = 3 To 17 Step 1
      If Cells(i, 3 * NumeroColonne - 1).Value = 1 And Cells(i, 3 * NumeroColonne - 2).Value > Maxi Then
       Maxi = Cells(i, 3 * NumeroColonne - 2).Value
      End If
     Next
     If Maxi = 0 Then
      RechercheMaxi = ""
     Else
      RechercheMaxi = Maxi
     End If
    End Function
    J'attribue également cette fonction à une cellule via formula local. Mais quand je vais sur la feuille, elle ne s'est pas éxécutée automatiquement. If faut que je fasse F9 ou que je double clique dessu ou que je modifie une valeur pour qu'elle s'éxécute.

    J'ai déjà essayer avec calculate à la fois dans ma fonction et dans le code de ma form. Mais ça ne marche pas. 9a marche seulement lorsque j'éxécute la code dans VBA editor et que dans excel, ma feuille est active.

    Pourquoi tout marxhe bien avec les fonctions d'excel et pas avec celle que j'ai crée ?

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour

    Ajoute la ligne en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function RechercheMaxi(NumeroColonne As Integer)
     application.volatile
     Maxi = 0
     For i = 3 To 17 Step 1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Merci, mais ça ne fonctionne pas. De plus, si j'effectue plusiers sasisie de données, en appuyant entre sur valider, les précédentes fonctions recherchemaxi(1), recherchemaxi(2) ... qui avaient été calculées par F9 ne sont plus évaluées, les cases sont vides. ALors que pour les fonctions excel pas de prob.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Volatile (True)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Volatile True
    Je crois que par défaut, ce sera false ...

    Par ailleurs : si cette fonction doit être utilisée partout, il convient d'en faire une macro complémentaire (xla)

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    expression.Volatile(Volatile)
    expression Obligatoire. Expression qui renvoie un objet Application.

    Volatile Argument de type Variant facultatif. Affectez-lui la valeur True pour marquer la fonction comme volatile et la valeur False pour la marquer comme non volatile. La valeur par défaut est True.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Ouais, elle est True par défaut ...

    Je ne vois alors plus... (sauf peut-être l'enregistrement de la macro) ???

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    9a ne marche pas non plus, mais merci. J'ai fait une video avec camstudio pour expliquer, mais eje n'arrive pas la poster .

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    J'ai mis dans le code de ma form Feuille.Select (c'est la feuille qui dans laquelle j'entre les données) puis calculate, et là ça marche. Calculate seul, ou Feuille calculate ne marche pas. J'aimarais quan même nbe pas avoir à la sélectionner.

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Essaye d'utiliser Formula plutot que FormulaLocal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
        Range("A1").Value = 2
        Range("B1").Formula = "=DoublerValeur(RC[-1])"
    End Sub
     
    Public Function DoublerValeur(Valeur As Double) As Double
        DoublerValeur = Valeur * 2
    End Function
    Cordialment,

    Tirex28/

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Avec formula ça ne marche pas mieux.

    Si je sélectionne la feuille puis calculate, c bon. Mais si je reviens après, grâce au code, à ma page d'accueil, il faut que je recalcul à lamain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Feuille.Select
     Calculate
     ActiveWorkbook.Sheets(" Accueil").Select
    J'ai excel 2007

    Une fois que ma formule est dans la cellule et que la fonction est évaluée, si je vais dans une autre feuill et que je recalcule, ma fonction et à nouveau évaluer mais avec les veleurs de cette feuille.

    Il faut pt que je précise la feuille dans laquelle elle doit s'effectuer devant Cells. Où y a t-il un moyen pour qu'elle s'occupe seulement des valeurs de la feuille dans laquelle elle est entrée, comme c'est le cas pour les fpnctions moyenne ...

    Merci encore.

  11. #11
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    Tu as regardé dans tes options excel si tu es en calcul manuel ??

    En haut à gauche le rond Office, clique dessus, dans la fenetre en bas : un bouton : Option excel, Choisir ensuite Formule

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Je suis en calcul auto. Mais ça doit venir d ema fonction, à mon avis je dois préciser dans le code, devant cells, la feuille dans laquelle je veux qu'elle s'éxécute. Qu'en pensez-vous ?

  13. #13
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Re:

    1 - Verifier qu'on est bien en Calcul Automatique (C'est Fait)
    2 - La Fonction doit se trouver dans un Module et pas dans un code Feuille
    3 - Mettre (en plus) en 1ere ligne Application.volatile ' Relance le calcul à chaque fois
    4 - Si pas ca, Mettre Public devant Function (Mais je n'y crois pas)

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/02/2008, 08h07
  2. Executer une fonction dans une autre base de donnees
    Par yonnel dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/10/2007, 01h31
  3. appel d'une fonction dans une autre feuille
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/04/2007, 17h51
  4. Réponses: 10
    Dernier message: 02/02/2007, 16h00
  5. [VB6]Ecrire une fonction dans ma feuille Excel
    Par ToxiK dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2006, 20h04

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