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 :

VBA : Macro pour actualiser des données automatiquement [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 6
    Points
    6
    Par défaut VBA : Macro pour actualiser des données automatiquement
    Bonjour à tous,

    N'ayant pas trouvé ce que je voulais sur internet, je me tourne vers vous pour tenter de résoudre mon problème

    Je travaille actuellement sur un fichier Excel, avec beaucoup de formules (environ 600.000 NB.SI.ENS).
    Je passe via les options en mode de calcul "Manuel" afin que les formules ne se re-éxecute que sur demande de l'utilisateur.
    Pour cela j'ai fait un premier bouton avec une macro VBA afin de re-éxecuter toutes les formules du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CalculateFull

    J'ai une feuille Excel qui sert de "Synthèse" ou de "Tableau de Bord", ou on retrouve toutes les informations importantes qui se situe dans les autres onglets.
    Seul petit problème, j'ai mes graphiques qui ne s'actualise pas toujours avec les données :


    Nom : 2015-03-05 13_20_04-Microsoft Excel - Reporting DOC - Ligne par ligne - Lyon.jpg
Affichages : 13537
Taille : 19,6 Ko

    Cela doit être causé par le fait que mes formules sont en mode "Manuel", du moins je suppose.
    Donc j'ai essaye de faire un bout de code VBA dans la feuille afin que les formules ce mettent à jour automatiquement uniquement pour certaines cellules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Application.Intersect(Target, Range("C26:F29")) Is Nothing Then 
            Range("C26:F29").Calculate
        End If
    End Sub
    Seulement ca ne fonctionne pas. Peut on définir une plage de cellule qui va se recalculer automatiquement avec un classeur en mode "Manuel" ?

    J'espère que vous avez compris mon problème
    Je ne peux vous joindre mon fichier par soucis de confidentialité

    A très vite,
    Dev

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour Devqnn,

    Ce petit code devrait faire ton bonheur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
     
    Dim c As Range
    Dim plage As Range
     
    Set plage = Sheets("feuil1").Range("C26:F29")
     
    For Each c In plage
        c.Calculate
    Next c
     
    End Sub
    Antony
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Salut Anthony,

    Ce code marche parfaitement, les données se mettent bien à jour automatiquement. Merci !

    Petit soucis, les graphiques ne se mettent pas à jour, il reste encore avec les anciennes valeurs.

    N'y a-t-il pas un moyen d'actualiser les données d'un graphique ? (Un peu comme un TcD, Clique Droit -> Actualiser)
    Si possible en automatique, que l'utilisateur n'est pas a appuyer sur un bouton pour que le graphique s'actualise.

    J'avais trouver un bout de code en naviguant un peu sur les forums d'aide VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select("Graphique 2").Calculate
    Malheureusement ca ne marche pas, rien ne se passe
    Si tu avais la réponse, ca me serait très utile

    Merci d'avance

  4. #4
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Je n'arrive pas simuler ton problème.

    En faisant fonctionner la macro sur les données a recalculer qui sont sources d'un graph, mon Graph est bien modifier.

    La source du graph et bien le range que tu mets a jours avec la macro ?

    Antony
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Je viens de comprendre mon erreur :

    Les graphiques ne se mettaient pas à jour car ils étaient basés sur la même source de données (Manip Copier / Coller de graphique sans faire attention)

    Je crois que tout est bon,
    Merci à toi

  6. #6
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Tu peux toujours tester ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("ta feuille").select
    ActiveSheet.ChartObjects("nom de ton graph").Activate
    ActiveChart.SetSourceData Source:=Range("ta source")
    avec les bons noms de Feuille, Graph et plage

    Ça devrait forcer la maj du graph.

    Antony
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  7. #7
    Nouveau membre du Club
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Points : 32
    Points
    32
    Par défaut solution élégante
    Bonjour,

    Cela fait 3 jours que je galère comme vous jusqu'à ce que je retrouve dans mes vieux fichiers une manière élégante qui marchait parfaitement :

    code à mettre dans la feuille où on change la valeur d'une cellule que l'on nomme "cell_val_seuil" :
    il faudra adapter avec ce que tu as fait... le principal, est de mettre les 3 lignes contenant Application.Calculation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Option Explicit
    Const nom_cell_valAs String = "cell_val" 'nommer ainsi la cellule
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        'réagi au changement de valeur de la cellule "cell_val"
        If Not Application.Calculation = xlCalculationManual Then
            Application.Calculation = xlCalculationManual
            Select Case Target.Address
                Case Range(nom_cell_val).Address
                    ChgtValeur 'macro qui met à jour les données et les graphiques/tableaux croisés... x.Refresh
                    Target.Select
            End Select
        End If
        Application.Calculation = xlCalculationAutomatic
    End Sub
    En espérant que cela fasse gagner du temps à ceux qui ont eu ce problème
    @+
    Franck

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

Discussions similaires

  1. Ligne de Code VBA pour actualiser des données sous PPT
    Par harald78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2016, 10h27
  2. [XL-2003] Arrêt macro pour entrer des données
    Par phal2ip dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/05/2011, 09h41
  3. Macro pour classer des données
    Par lmb19 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/11/2010, 22h38
  4. Problème Macro pour trier des données
    Par lmb19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2010, 01h00
  5. [XL-2003] Macro pour utiliser des données Excel dans un document Word
    Par Jeremy0269 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2009, 19h58

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