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 :

Affichage dans la feuille non automatique depuis une fonction perso [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut Affichage dans la feuille non automatique depuis une fonction perso
    Bonjour à tous.

    Voilà, aujourd'hui, j'ai créé plusieurs "Function" qui fonctionnent très bien, sauf que, lors du changement du contenu de certaines cellules qui sont utilisées dans ces fonctions, rien ne se met à jour dans la feuille du classeur.

    Il y a pourtant, dans les options, le calcul automatique activé...

    Si quelqu'un a une astuce, un conseil... Je suis preneur...

    Denis...

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    As-tu bien mis Application.Volatile ?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    Regarde si tu as touche au
    edit : burned
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Bonjour à voue deux.

    Et merci de me répondre, mais non, je n'ai pas touché à ça (que je ne connaissais pas).

    Voici une de mes fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function SomDetMoisComm(Adress As Date) 
        Somme = 0
        LignTab = 12
        Do While Sheets("activité 54424").Cells(LignTab, 3) <> ""
            If Month(Sheets("activité 54424").Cells(LignTab, 3)) - 2 = Month(Adress) - 2 And Year(Sheets("activité 54424").Cells(LignTab, 3)) = 2017 Then
                Somme = Somme + Sheets("activité 54424").Cells(LignTab, 5)
            End If
            LignTab = LignTab + 1
        Loop
        SomDetMoisComm = Somme
    End Function

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    OK,

    ce n'est pas tres academique cette facon de faire.

    ne peux tu pas plus directement passer par un SOMME.SI.ENS ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Du coup, il suffit de le rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function SomDetMoisComm(Adress As Date) 
        Application.Volatile
        Somme = 0
        LignTab = 12
        Do While Sheets("activité 54424").Cells(LignTab, 3) <> ""
            If Month(Sheets("activité 54424").Cells(LignTab, 3)) - 2 = Month(Adress) - 2 And Year(Sheets("activité 54424").Cells(LignTab, 3)) = 2017 Then
                Somme = Somme + Sheets("activité 54424").Cells(LignTab, 5)
            End If
            LignTab = LignTab + 1
        Loop
        SomDetMoisComm = Somme
    End Function
    Petite remarque par rapport au code : au lieu de faire une boucle tant que la cellule n'est pas vide, tu peux chercher la dernière cellule non vide et faire une boucle For :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function SomDetMoisComm(Adress As Date) 
        Application.Volatile
        Somme = 0
        LignTab = 12
        DerLig = Sheets("activité 54424").("C" & Rows.Count).End(xlUp).Row    '<==== dernière ligne non vide
        For LignTab = 12 to DerLig
            If Month(Sheets("activité 54424").Cells(LignTab, 3)) - 2 = Month(Adress) - 2 And Year(Sheets("activité 54424").Cells(LignTab, 3)) = 2017 Then
                Somme = Somme + Sheets("activité 54424").Cells(LignTab, 5)
            End If
        Loop
        SomDetMoisComm = Somme
    End Function
    De plus, ne pourrais-tu pas utiliser un CountIfs plutôt que de faire une somme par boucle et condition If ?
    COUNTIFS : https://support.office.com/en-us/art...C-AA8C2A866842

  7. #7
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Merci pour votre aide...

    @Jean-Philippe André : merci, je vais voir ça, je ne connaissais pas.

    @riaolle : J'ai déjà essayé de placer le "Application.Volatile", mais rien n'y fait.

    J'ai testé Somme.Si.Ens, mais je n'ai rien réussi de correcte...

    Je joint donc mon fichier, au cas ou quelqu'un découvre ce qui cloche...

  8. #8
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Re à tous.

    J'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME.SI.ENS(Activité!E$12:E$5000;Activité!C$12:C$5000;">="&DATEVAL("01/01/2017");Activité!C$12:C$5000;"<="&FIN.MOIS("01/01/2017";0))
    Mais j'ai un souci maintenant à faire une somme selon la semaine et non le mois...

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

Discussions similaires

  1. [XL-2010] macro fonctionne dans l'editeur mais pas depuis une feuille
    Par Kanetsugu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2011, 06h56
  2. Réponses: 33
    Dernier message: 07/02/2008, 10h43
  3. Image dans ressource non trouvée depuis une dll
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 17/08/2007, 15h10
  4. Réponses: 1
    Dernier message: 25/05/2007, 14h33
  5. Ecrire dans un tableau html depuis une fonction js ?
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 12h48

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