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 :

Macro qui ne fonctionne pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Points : 79
    Points
    79
    Par défaut Macro qui ne fonctionne pas
    Bonjour,

    Je travaille sur un fichier qui permet de générer un tableau de bord dynamique à partir d'une source de données sur le réseau. Pour cela, j'ai créé une macro qui permet d'actualiser ces données de fichier avant de générer les graphiques.

    Le problème c'est que la durée d'actualisation dure plus de 90s vu qu'il s'agit de presque de 300 000 lignes de données. Par suite, mon idée, c'est au lieu de laisser l'utilisateur avec la moulinette d'attente excel pendant ce temps, je voulais afficher une forme contenant un message de genre "Merci de patienter..". Pour faire ça, j'ai crée ma forme avec le message dans une autre feuille du classeur, et juste avant l'actualisation des données, j'appelle une macro qui copie cette forme et la colle sur la feuille du tableau de bord ....et une fois l'actualisation est faite, j'appelle une autre macro pour supprimer la forme.

    Mon problème c'est que la première macro qui copie colle la forme ne marche pas ! Voici son code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Waiting()
     
        Sheets("Sht2").Select
        ActiveSheet.Shapes.Range(Array("MaForme")).Select
        Selection.Copy
        Sheets("Tableau_de_Bord").Select
        Range("J11").Select
        ActiveSheet.Paste
        ThisWorkbook.Sheets("Sht3").Activate
     
     
    End Sub
    C'est sur la "Sht3" que les données vont s'actualiser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Code pour activer la connexion avec la source de données
    Call Waiting
     
        ActiveWorkbook.Connections("Table_BD_Semaines").Refresh
     
     
    End Sub
    J'espère trouver la solution chez vous.

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Plutôt que de faire un copier-coller-supprimer, il serait sans doute plus simple de rendre une zone de texte visible le temps du Refresh:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveSheet.Shapes("ZoneTexte 1").Visible = True
    ActiveWorkbook.Connections("Table_BD_Semaines").Refresh
    ActiveSheet.Shapes("ZoneTexte 1").Visible = False
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Points : 79
    Points
    79
    Par défaut
    Merci pour le retour, mais ça ne marche toujours pas même avec cette méthode de cacher et de faire apparaître la forme. En fait rien ne se passe à part la moulinette d'attente excel, comme si la macro n'existait pas.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    A tester: mettre le Refresh dans une autre routine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    ActiveSheet.Shapes("ZoneTexte 1").Visible = True
    BDrefresh
    ActiveSheet.Shapes("ZoneTexte 1").Visible = False
    ...
     
    Sub BDrefresh()
        ActiveWorkbook.Connections("Table_BD_Semaines").Refresh
    End Sub
    Cordialement.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Points : 79
    Points
    79
    Par défaut
    Ça marche pas non plus..
    C'est la ligne de code .Refresh qui cause problème, une fois activée la forme n’apparaît plus et je ne comprends pas pourquoi.

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Pas vraiment d'autre idée sur ce sujet. Juste "comme ça":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    ActiveSheet.Shapes("ZoneTexte 1").Visible = True
    ActiveWorkbook.Connections("Table_BD_Semaines").BackgroundQuery = False
    ActiveWorkbook.Connections("Table_BD_Semaines").Refresh
    Application.CalculateUntilAsyncQueriesDone
    ActiveSheet.Shapes("ZoneTexte 1").Visible = False
    ...
    Cdt.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Points : 79
    Points
    79
    Par défaut
    Ca marche pas ..
    La forme apparaît jusqu'à la ligne de .Refresh comme si c'est un bug qui la fait disparaître.

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2019
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 133
    Points : 79
    Points
    79
    Par défaut
    Mon but est de laisser un message à l'utilisateur au lieu de le laisser tout seul avec la moulinette excel.
    J'ai essayé même de créer une nouvelle feuille qui contient une forme avec le message, et j'ai tenté de sélectionner cette feuille avant le .Refresh et puis revenir au tableau de bord une fois l'actualisation terminée. Mais malheureusement ça ne marche pas non plus, la feuille d'attente n'est pas sélectionnée.

    C'est un truc bizarre que je découvre aujourd'hui avec le VBA.

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 915
    Points
    55 915
    Billets dans le blog
    131
    Par défaut
    Salut

    Peut-être insérer Application.ScreenUpdating = False avant d'appeler la proc de refresh, car les lignes de Refresh utilisent les outils d'Excel et je me demande si ça ne prend pas la priorité au niveau de l'affichage.

    Peut-être aussi mettre ActiveWorkbook.Connections("Table_BD_Semaines").BackgroundQuery = True et pas False, pour laisser la gestion de l'affichage à Excel et pas à la méthode de mise à jour

    Sans certitude sur rien, mais ça prend 5 secondes à tester.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2010] Macro qui ne fonctionne pas sur un ordinateur
    Par Toug19 dans le forum Excel
    Réponses: 9
    Dernier message: 07/07/2015, 14h22
  2. macro qui ne fonctionne pas
    Par brooklin11 dans le forum Macro
    Réponses: 4
    Dernier message: 15/01/2015, 13h39
  3. [XL-2010] macro qui ne fonctionne pas
    Par jad73 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2014, 21h16
  4. [XL-2003] Macro qui ne Fonctionne PAS sur Excel 2003 mais Fonctionne sur Excel 2010
    Par CedResma34 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/01/2014, 10h05
  5. Macro qui ne fonctionne pas
    Par Françoise_ dans le forum Débutez
    Réponses: 2
    Dernier message: 09/03/2013, 21h08

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