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 :

Modifier application.calculation dans une fonction ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 71
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Modifier application.calculation dans une fonction ?
    Bonjour tout le monde,
    Après avoir cherché partout, je viens chercher du secours parce que là ça m'énerve !
    Impossible pour moi d'effectuer la chose (simple) suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function POINTS(clé_concours, classt, CATEGORIE)
    Dim u, t As Variant, calcul
    calcul = Application.Calculation
    MsgBox calcul           ' IL VAUT xlautomatic
    Application.Calculation = xlCalculationManual
    MsgBox Application.Calculation          ' IL VAUT TOUJOURS xlautomatic
    Je suis sous Excel 2010, qu'est ce qui m'échappe ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 921
    Points : 28 907
    Points
    28 907
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne vois rien d'anormal dans ce code.
    La constante xlCalculationManual vaut -4135 et xlCalculationAutomatic -4105

    Petite remarque : Attention que dans la ligne de déclaration Dim u, t As Variant, calcul, sans précision de type pour les variables u et calcul toutes ces variables sont de type Variant

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 71
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Merci de ton aide, j'ai peut être une piste. je t'affiche les variables avec un point d'arrêt :

    ?"calcul : " & calcul & ",Application.Calculation : " & Application.Calculation
    calcul : -4105,Application.Calculation : -4105

    Mais ce que j'ai oublié de préciser car c'est en expliquant que je m'en rends compte : cette fonction tourne dans deux contextes, 1. sous VBA au travers d'1 USF et je pense que là ça doit marcher (je n'ai pas encore testé) et 2. dans une feuille de calcul, formule avec fonction personnalisée.
    =POINTS(B11;K11;C11)

    Et c'est dans le contexte 2 que je suis !

    Qu'en penses tu ? Je vais tester dans le contexte 1 pendant que tu réfléchis ...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 921
    Points : 28 907
    Points
    28 907
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Effectivement le point 2 pose problème parce-que une fonction écrite en VBA utilisée comme fonction personnalisée d'excel ne peut renvoyer qu'une valeur et ne peut modifier les propriétés de l'application.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 71
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Oui, c'est ça ! Pas cool ...
    Je n'ai plus, au pire, qu'à enlever la formule des cellules maintenant que la mise à jour se fait par USF.
    Mais si je voulais maintenir cette idée (calcul de la cellule, soit dans la feuille, soit dans l'USF), comment puis je faire ?
    Actuellement, dès que je modifie une cellule de la ligne (dans excel car dans VBA, je suis déjà en calcul manuel), toute la colonne de la feuille se re-calcule !
    D'où mon essai de passer en calcul manuel pour déclencher un "range(cellule).calculate" puis retour en calcul automatique dans la fonction.
    As tu une idée ?
    Merci d'avance.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 921
    Points : 28 907
    Points
    28 907
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il suffit de se placer en mode manuel en modifiant l'option de calcul (onglet [Formules], groupe Calcul, commande Options de calcul).

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 71
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Ca je sais, bien sur mais je ne veux pas modifier ce paramètre pour tout le classeur et/ou tous les classeurs ouverts (donc l'application), je souhaite le modifier uniquement pour cette feuille, peut être via l'évènement activate ? En substance, je ne comprends pas pourquoi en modifiant une cellule, la colonne entière se modifie ?
    Merci

Discussions similaires

  1. Modifier un argument dans une fonction
    Par hannibal.76 dans le forum Lisp
    Réponses: 0
    Dernier message: 15/11/2010, 15h08
  2. Modifier un Label dans une fonction Shared
    Par twixi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/06/2008, 11h26
  3. Probleme de calcule dans une fonction
    Par nuFox dans le forum C
    Réponses: 22
    Dernier message: 13/03/2008, 15h14
  4. Réponses: 6
    Dernier message: 24/11/2007, 18h48
  5. [VB.net]Gérer un Application.Exit() dans une fonction
    Par arnolem dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/05/2006, 14h03

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