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 avec Application.Volatile


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut Problème avec Application.Volatile
    Bonjour à tous,

    Je rencontre un problème avec, je présume, la fonction Application.volatile. Je m'explique:

    J'ai codé une fonction volatile en VBA, nommée "logigramme", que j'appelle dans une cellule d'un onglet A via =logigramme(). Elle fonctionne bien, c'est à dire que le résultat qui apparaît est bien mis à jour suivant les valeurs prises par d'autres cellules du même onglet.

    Maintenant, je lance le code VBA d'un autre onglet B. Le calcul a lieu, se termine correctement. Je reviens sur l'onglet A, et le résultat de logigramme() a changé ! Alors que les cellules qui servent d'argument à la fonction n'ont pas changé de valeur...

    Auriez-vous une explication rationnelle à cela ? A priori, le code de l'onglet B ne vient pas perturber celui de l'onglet A...
    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
    13 169
    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 : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu as écrit une fonction volatile celle-ci se recalcule chaque fois que l'on modifie la valeur de n'importe quelle cellule, de n'importe quelle feuille, de n'importe quel classeur ouvert.
    Il y a 7 fonctions volatiles dans excel qui fonctionnent de la même manière.
    Par exemple, si tu tapes =MAINTENANT() dans la cellule A1 de la feuil1, il t'affiche la date et l'heure de maintenant. Tu ne fais rien pendant 5 minutes, l'heure ne bougera pas. Dès que tu taperas une valeur dans une cellule de cette feuille ou d'une autre feuille, l'heure changera puisque la fonction MAINTENANT() étant volatile aura refait le calcul.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Bonjour,

    Merci pour ces éclairements, je pense que nous sommes d'accord sur le fonctionnement d'une fonction volatile.
    Ce qui m'étonne, c'est que la fonction affiche un résultat dont la valeur dépend des paramètres d'autres cellules, disons A et B.

    J'entre A et B, j'ai le résultat 1.
    J'exécute un autre code sans modifier A et B.
    Je retourne voir le résultat : j'obtiens le résultat 2, alors que A et B n'ont pas changé.
    Admettons que le résultat est A+B, dans le premier cas j'obtiendrais bien la bonne somme. Après exécution d'un code j'aurais alors un mauvais résultat !

    Quelle pourrait être la solution pour contourner cela ?

    Merci encore,

  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
    13 169
    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 : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    N'utilises-tu pas une variable déclarée Static ?
    Il serait peut-être intéressant d'afficher le code de ta fonction afin de pouvoir apporter une réponse pertinente.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 172
    Billets dans le blog
    2
    Par défaut
    Bonjour d0n32, Bonjour Philippe, ,

    si ta fonction est dépendante de valeurs de cellules, as-tu bien précisé dans ton code la feuille à laquelle appartiennent ces cellules ?
    Si non, il recalcule en fonction de la feuille active, et comme elle est volatile ça pose problème...

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Erreur de débutant....
    Merci tototiti, merci à vous 2, c'est parfait !

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

Discussions similaires

  1. Problème avec Application.Dialogs(xlDialogSaveAs).Show
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/12/2007, 18h54
  2. Problème avec Application.OnTime
    Par Uopip dans le forum VBA Outlook
    Réponses: 14
    Dernier message: 09/07/2007, 15h14
  3. Problème avec Application.Minimize
    Par Alchemist dans le forum Delphi
    Réponses: 1
    Dernier message: 27/01/2007, 21h49
  4. [VBA-E] Problème avec Application.StatusBar
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2006, 16h44
  5. problème avec Application->ProcessMessages()
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/08/2005, 10h27

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