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 :

Erreur 1004 sur "fichier - quitter"


Sujet :

Macros et VBA Excel

  1. #1
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut Erreur 1004 sur "fichier - quitter"
    Bonjour,

    J'ai une combox (lstAnnee) qui selon la valeur qu'elle prend, modifie la mise en page de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lstAnnee_Change()
    Call formatage
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub formatage()
    Dim Annee As Integer
    Annee = Sheets("Releve").lstAnnee.Value
    Range("A19:E49").ClearContents
    ...  
    End Sub
    Tout marchait bien jusqu'a ce qu'un de mes collegues fasse "fichier - quitter" au lieu d'utiliser la croix windows.
    Quand on procède comme lui on obtient une erreur "erreur d'execution 1004 - la méthode sheets de l'objet '_global' a échoué" sur la ligne "Annee = Sheets("Releve").lstAnnee.Value"

    Je suppose que cela est du au fait qu'en fermant le fichier de cette facon, excel execute le lstAnnee_change et essai de recuperer la valeur de la combox qui n'existe plus puisque le fichier est fermé.

    Qu'est ce que j'ai mal fait pour obtenir ce comportement ?

    Merci de votre aide.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #2
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    peut-on avoir le code de l'évènement Fichier/Quitter ?
    Moi, j'aime pas facebook.

    Musiciens de France

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas d'evenement a la fermeture.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut

    il n'y a pas d'evenement a l'evenement "fermeture"... fermer qqch est un evenement en soi
    Moi, j'aime pas facebook.

    Musiciens de France

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Chuis comme le psychopathe ci-dessus... dans l'espectative
    où se trouve ta combo ? dans une feuille de calculs ?
    où se trouve ta sub "Private Sub lstAnnee_Change()" ?
    de quel bouton fichier/quitter parles-tu ? Du menu d'Excel ?
    de quel croix Windows parles-tu ? Celle de l'application Excel ?

    A question nébuleuse, réponse oiseuse... comme je dis souvent

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    La combox est dans une feuille de calcul.
    La sub est dans un module.

    "Fichier - Quitter" est effectivement celui du menu excel - l'erreur se produit egalement quand on utilise "la croix" de l'application excel mais pas quand on utilise "la croix" de la feuille excel ou le menu "Fichier - Fermer".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    en gros ça plante quand tu fermes l'application avant la feuille...

    edit> peux-tu répondre à toutes les questions de mon ami qui cherche encore le nord ? (ouskelnor)
    Moi, j'aime pas facebook.

    Musiciens de France

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Heu j'ai répondu a tout non ?

    où se trouve ta combo ? dans une feuille de calculs ?
    La combox est dans une feuille de calcul.

    où se trouve ta sub "Private Sub lstAnnee_Change()" ?
    La sub est dans un module.

    de quel bouton fichier/quitter parles-tu ? Du menu d'Excel ?
    "Fichier - Quitter" est effectivement celui du menu excel

    de quel croix Windows parles-tu ? Celle de l'application Excel ?
    l'erreur ne produit pas pas quand on utilise "la croix" de la feuille excel ou le menu "Fichier - Fermer".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors tu as du code dans l'événement close ou plutôt beforeClose de ton fichier... Tu peux nous le mettre ?
    A moins que tu n'aies une macro Workbook_Close()
    Tu dis

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai repondu à coté a une question :

    où se trouve ta sub "Private Sub lstAnnee_Change()" ?
    Dans l'objet de la feuille qui contient la combox lstAnnee

    C'est ma "sub formatage" qui est dans un module.

    Je n'ai pas de code dans Thisworkbook.
    Et le module ne contient que cette "sub formatage"

    Au passage je travaille sur excel 2000.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    As-tu un fichier qui s'ouvre au démarrage d'Excel ? Généralement il se trouve dans C:\Program Files\Microsoft Office\Office10\XLStart\ dans la version 2003 d'office.
    Sinon, je ne comprends pas.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 58
    Points
    58
    Par défaut
    Ou sinon s'il y a si peu de choses dans ton fichier comme tu le dis, poste le en pièce jointe. Et s'il y a plus gros, épure le un peu parce que je serais curieux de voir ça !

  13. #13
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    +1

    c'est assez curieux comme pb... peut-être est-ce juste un bug insoupçonné d'excel
    Moi, j'aime pas facebook.

    Musiciens de France

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    En faisant un fichier simplifié j'ai trouvé l'origine du problème mais pas la solution.

    En pièces jointe :

    Une combobox a deux colonnes remplies par la propriété "listfillrange".
    Sur l'evenement "change" de la combox une action quelconque est effectuée (ici je remplis la case A1 avec la valeur de la combobox).


    Lorsque je met la propriété "boundcolumn" de la combobox sur 1, cela fonctionne.

    Lorsque je met la propriété "boundcolumn" de la combobox sur 2, que j'utilise la combobox puis que je ferme excel, l'erreur se produit.

    Lorsque je met la propriété "boundcolumn" de la combobox sur 1, et la propriété "columnwidths" sur 0 (pour cacher la premiere colonne), que j'utilise la combobox puis que je ferme excel, l'erreur se produit.

    Vous l'aurez compris je voulais une combobox qui affiche le nom du mois mais en en prenant sa valeur numerique.

    Ce qui me trouve encore plus c'est que je viens d'essayer sur excel 2007 en ré-enregistrant le fichier au format 2007 et j'ai la meme chose.

    J'ai essayé en construisant ma liste a l'envers (mois, numéro) mais le problème se pose egalement.

    Je tourne en bourrique avec ce problème.
    Fichiers attachés Fichiers attachés
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ça ressemble à une erreur de compilation. Quand tu fermes un fichier contenant une erreur non encore repérée par le débugger de VBA, il signale certaines de ces erreurs qui ne se produisent qu'à l'exécution du code, non lors de l'écriture.
    Bref, tu as sans doute une erreur dans la syntaxe quelque part.
    Et comme c'est dans un userform, le débugger ne t'amène pas dessus
    Juste une hypothèse...

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai essayé de multiples facon pour construire ma liste mais rien à faire.

    Dernier essai :
    - liste avec une seule colonne contenant le nom du mois et "columnbound" sur 0.
    Et paf ca ne fonctionne toujours pas.

    Est-ce que l'un de vous verrai une facon d'avoir une liste qui affiche le nom des mois mais qui m'en donnerait le numéro ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 58
    Points
    58
    Par défaut
    Voilà ton classeur corrigé, je me disais bien que ça devait être une élucubration d'Excel et je suis persuadé que c'est le cas.

    La correction que j'ai apporté consiste en un booléen global public qui à l'ouverture du fichier est mis a False et qui lors de l'évènement "Workbook_BeforeClose(Cancel As Boolean)" est mis a True.

    Ce booléen étant testé lors du changement de valeur de ta liste :
    si celui-ci est a False, on effectue le changement de valeur dans la case "A1"
    sinon on ne fais rien.

    Explication du problème d'après moi : Excel joue avec la listbox à la fermeture d'excel ce qui déclenche l'évènement "change()" sauf que les objets n'existant plus, étant donné qu'on est à la fermeure d'Excel, il plante comme une merde.

    C'est mon avis...
    Fichiers attachés Fichiers attachés

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Merci pour cette solution.

    Ca n'explique malheureusement pas pourquoi l'erreur se produit ou pas selon la taille des colonnes et la colonne liée.

    Je suis surpris egalement de trouver le même problème sur Excel 2007, ce que je fais (utiliser l'evenement change d'une combobox) ce n'est quand même pas super pointu ; je ne dois quand même pas être le seul sur terre a avoir croisé ce truc étrange.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 58
    Points
    58
    Par défaut
    Effectivement c'est plutôt loufoque mais bon si ma solution te satisfait et que ça évite tout plantage, que demande le peuple ?

  20. #20
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut

    je garde ce "bug" en mémoire au cas où j'y serais confronté
    Moi, j'aime pas facebook.

    Musiciens de France

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2010] Erreur 1004 sur un fichier pour envoyer un mail lotus via excel
    Par ALEX60 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2013, 14h01
  2. Réponses: 5
    Dernier message: 29/03/2011, 15h16
  3. Réponses: 8
    Dernier message: 25/01/2008, 11h48
  4. Erreur 1004 sur une boucle simple
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/07/2007, 09h00

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