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 :

Plantage lors de la suppression d'une feuille [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 69
    Par défaut Plantage lors de la suppression d'une feuille
    Bonjour, je suis actuellement confronté à un phénomène plutôt étrange :

    J'ai créé un classeur Excel lié à une base de données SQL via un lien ODBC.
    Ce classeur contient une feuille "Main" permettant de choisir des critères de recherche et un bouton qui génère une feuille rapport (à partir d'une feuille modèle) en fonction des critères choisis par l'utilisateur.

    J'utilise donc le classeur normalement, c'est à dire je génère puis supprime manuellement des rapports.
    Tout fonctionne correctement pour les 3 premiers rapports cependant au 4ème rapport un bug visuel apparait : je vois la ListBox de ma feuille "Main" apparaitre dans ma feuille rapport. Rien de grave, en changeant d'onglet puis en revenant dans mon onglet rapport la ListBox disparait.
    Cependant si je supprime ce 4ème rapport, Excel plante sans aucun message d'erreur, j'ai seulement le droit à un vague "Microsoft Excel for Windows a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru."

    Je précise que cet évènement se produit toujours au bout du 4ème rapport et ce quel que soit les critères choisi pour générer les rapports.

    Plus étrange encore : si je sauvegarde mon classeur juste avant de supprimer le 4ème rapport, que je ferme le classeur puis le ré-ouvre, Excel ne plantera pas à la suppression de la feuille mais le bug réapparaitra si je génère et supprime à nouveau 3 rapports supplémentaires.


    Voilà, j'ai essayé d'être clair mais je ne suis pas sûr de m'être bien fait comprendre. En espérant que quelqu'un ait une idée de ce qu'il pourrait se passer dans ce maudit classeur.

  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,

    Sans voir de code, c'est difficile de répondre, mais ça pourrait peut-être être causé au niveau de la mémoire utilsée (?)
    Si tu crées des connexions, des variables objets ou autres, est-ce que tu t'assures de les supprimer de la mémoire ?

    du genre:

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 69
    Par défaut
    Merci pour la réponse, je viens de tester le classeur sur un autre ordinateur plus puissant avec Excel 2010 et je ne rencontre pas le problème.
    Pour me connecter à la base de données j'utilise une syntaxe comme celle là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Feuil3.QueryTables.Add(Connection:= _
            "ODBC;DSN=Mon DSN;UID=utilisateur;PWD=motdepasse;" _
            , Destination:=Feuil3.Range("A1"))
    End With
    Y a-t-il une variable objet à supprimer dans ce cas là?

  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
    Peut-être essayer de faire un Delete avant de passer à une suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil3.QueryTable.Delete

  5. #5
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 69
    Par défaut
    Bonjour, problème résolu !
    Merci à parmi pour m'avoir mis sur la bonne voie, il s'agissait bien d'une histoire de mémoire, voici les détails pour ceux que ça intéresse :


    Effectivement on peut supprimer l'objet QueryTable juste après que la requête se soit terminée afin de libérer un peu de mémoire (étant donné que je n'ai pas besoin que les données soient actualisées par la suite) cependant cela ne suffit pas à arrêter le bug.

    J'ai remarqué que mon rapport se générait un 2 secondes avec mon ordinateur puissant tandis qu'il mettait quasiment 1 minute avec mon vieil ordinateur.
    J'ai donc lancé ma macro qui génère les rapports en mode pas à pas sur le vieil ordinateur afin de voir quelle ligne de mon code met le plus de temps à s'exécuter.
    Il s'agissait de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil5.Copy After:=Sheets(Sheets.Count)
    où je me sers donc de ma feuille modèle pour en créer une nouvelle qui contiendra le rapport.

    Or cette feuille modèle contient 6 graphiques et l'opération de copie semble donc trop lourde pour mon vieil ordinateur. J'ai alors décidé de les supprimer de ma feuille modèle et de les créer après avoir généré ma feuille rapport. Résultat l'opération est beaucoup plus rapide et le bug n'apparait plus.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/03/2007, 12h02
  2. Plantage lors de la destruction d'une classe
    Par xwindoo dans le forum C++
    Réponses: 10
    Dernier message: 04/10/2006, 16h01
  3. [Debutant] Soucis lors de la suppression d'une JComboBox
    Par MoMotte dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 22/08/2006, 17h52
  4. [VBA-E]Erreur lors de la copy d'une feuille
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2006, 14h30
  5. Suppression d'une feuille sous excel
    Par dimdidi dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2006, 09h29

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