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 :

Worksheet_Calculate()


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Par défaut Worksheet_Calculate()
    Bonjour,
    Comme beaucoup qui ouvre une discussion j'ai besoin d'aide !
    et je remercie ceux qui m’aideront.

    J'ai un classeur qui contient plusieurs feuilles.
    Sur chacune des feuilles, j'utilise la fonction Worksheet_Calculate() pour détecter l'activation d'un filtre sur une colonne.
    Si un filtre est activé alors on affiche un bouton "afficher tout" (qui a pour fonction si on clique de supprimé tout les filtres)
    Le code fonctionne sur toute les feuilles sauf une (la dernière) !

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Calculate()
    If FilterMode Then '= True Then          'Test si filtre est activé
        Afficher_tout.Visible = True   'Si oui
        Range("d4").Select 'creer pour test
        Selection = "actif"   
        Else
        Afficher_tout.Visible = False
        Range("d4").Select 'creer pour test
        Selection = "non actif"
        End If
    End Sub
    Le problème vient du Worksheet_Calculate()
    J'ai crée un code qui vérifie FilterMode et il fonctionne bien

    Quelqu'un a-t-il une idée pourquoi le calculate ne fonctionne pas ?

    Merci d'avance pour vos lumières

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Y a-t-il des formules dans cette feuille qui ne fonctionne pas ?
    Autrement, il n'y aura pas d'événement Calculate, je pense...

    Edit: et Dans Thisworkbook, il y aussi Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Ça évite de refaire les macros dans toutes les feuilles...

  3. #3
    Membre averti
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Par défaut
    Re,
    Il n'y a pas de formule sur cette feuille (c'est pas la seule et sur l'autre ça fonctionne bien).
    La seule chose qu'il y a de "calculé" c'est la mise en place d'un filtre, j'ai une cellule que tu tapes ce que tu veux et ça filtre le tableau

    Edit: et Dans Thisworkbook, il y aussi Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Ça évite de refaire les macros dans toutes les feuilles...
    euh je débute en vba, en gros ca veux dire quoi ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    C'est-à-dire que l'événement Worksheet_Calculate() que tu trouves dans le code des feuilles se retrouve aussi dans le module ThisWorkbook sous le nom Workbook_SheetCalculate(ByVal Sh As Object)
    Tu peux alors utiliser le paramètre Sh pour déterminer la Feuille (Worksheet) et tu n'as pas besoin de mettre de code pour cet événement dans chaque feuille.

    Le module ThisWorkbook se situe sous les noms de feuilles dans l'IDE VBA.

    PS: J'ai fait le test sans formule et l'événement Calculate n'est pas appelé. Par contre, si j'y mets une formule, il l'est (?)

  5. #5
    Membre averti
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Par défaut
    ok pour le
    module ThisWorkbook sous le nom Workbook_SheetCalculate(ByVal Sh As Object)
    mais je préfère le faire feuille par feuille pour l'instant

    et je pense que le Worksheet_Calculate() n'est pas détecté.
    existe-il un paramétré de feuille à vérifier ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2016, 18h33
  2. Réponses: 4
    Dernier message: 21/10/2016, 02h28
  3. Réponses: 16
    Dernier message: 11/10/2016, 18h03
  4. [XL-2007] Créer boite de dialogue sous XlS 2007
    Par lokura dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/10/2012, 11h47
  5. SaveAs en xls depuis Office 2007
    Par davybain dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 19/02/2009, 14h06

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