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 :

Super-forcer le calcul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut Super-forcer le calcul
    Bonjour,

    Je viens de créer une fonction en VBA qui me permet d'obtenir des renseignements auxquels n'accèdent pas les fonctions classiques de feuille de calcul.
    C'est une fonction toute simple qui permet d'obtenir l'index de la couleur de fond d'une cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Coul(YYY1 As Range) As Long
       Coul = YYY1.Interior.ColorIndex
    End Function
    Quand on la tape, elle marche bien et donne effectivement la couleur de la cellule cible.

    Le problème, c'est que lorsqu'on modifie la couleur de la cellule cible, le résultat ne se remet pas à jour, comme si Excel considérait cette modification insuffisante pour mettre à jour la formule.
    Pourtant, je suis en recalcul automatique.

    Par contre, si j'édite la cellule (celle où se trouve la cellule ou la cellule cible) et que je la valide sans rien changer, le résultat est actualisé.
    Le problème est qu'il y a quelques centaines de ces formules qui pointent vers autant de cellules. Je ne peux donc pas, à chaque fois, demander une mise à jour ainsi.

    J'ai essayé de l'activer par un évènement sur WorkSheet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       ActiveSheet.Calculate
    End Sub
    Le Calculate est bien lancé chaque fois que je change de sélection mais il ne remets pas à jour les résultats de ma formule.

    Du coup, je suis à court d'idées.

    Connaissez-vous une méthode pour faire une sorte de super-calculate qui force réellement toutes les cellules (ou des cellules sélectionnées) à se recalculer (même pour celle que Excel estime que ce n'est pas nécessaire) ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour Loïc,

    si c'est bien une fonction personnalisée, tenter avec la méthode Volatile


    __________________________________________________________________________________________


    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Génial !!!

    Ca résout 99% du problème.
    Maintenant, il suffit de valider une seule cellule, n'importe laquelle, pour que tous les résultats se remettent à jour.
    Ca devient nettement plus simple à utiliser.

    Merci Beaucoup

    En couplant cette méthode avec mon SelectionChange, ça résout le 1% restant : le calculate qu'il contient actionne les fonctions volatiles.

    Ca faisait un bout de temps que je coinçais là-dessus.
    HEUREUX !

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Le hic avec cette méthode lorsque l'on abuse de fonctions personnalisées dans les cellules
    est un ralentissement sensible lors d'un calcul d'une cellule même ne l'utilisant pas
    comme c'est du reste notifié dans l'aide …

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Mon tableau ayant très peu de calculs et seulement quelques centaines de ligne, je ne pense pas que ça posera un problème.
    Je verrais à l'usage.

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

Discussions similaires

  1. [XL-2003] Forcer le calcul manuel du fichier créé
    Par ridokou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/11/2010, 17h47
  2. [XL-2007] Forcer le calcul de la macro sur les colonnes masquées
    Par patsyl77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/09/2010, 22h10
  3. Forcer le calcul de la moyenne dans TCD
    Par isma616 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2010, 16h38
  4. Forcer le calcul de la moyenne dans TCD
    Par isma616 dans le forum Conception
    Réponses: 0
    Dernier message: 25/08/2010, 14h17
  5. Forcer le calcul d'une fonction sur des cellules masquées
    Par AAZRO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2007, 16h34

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