macro fermeture fichier inefficace à partir d'une dialog-box

Le
YM
bonjour,

(je débute avec la grammaire et le vocabulaire VBA)
je travaille sur Excel 2000 (avec VBA 6.0)

j'ai écrit une petite macro (dans un module) qui permet de fermer mon
fichier Excel sans demande de confirmation :
(j'ai d'ailleurs retrouvé ce code sur le forum MPFE)

Sub quitter()
ActiveWorkbook.Close SaveChanges:úlse
End Sub

dans mon fichier, je veux lancer cette macro depuis 2 presse-boutons (boite
à outils formulaires) :

- un sur une boite de dialogue
- un sur une feuille de calcul classique

pour les 2 boutons, j'ai fait clic droit pour y associer la macro "quitter"

le bouton de la feuille de calcul fonctionne bien, le fichier se ferme sans
rien demander.
mais lorsque j'appelle la même macro depuis ma boite de dialogue, j'ai un
message d'erreur VB :
"Erreur d'éxécution '1004':
la méthode 'Close' de l'objet '_Workbook' a échoué"

je clique alors sur "Débogage", et VB me surligne ma ligne de code
"ActiveWorkbook.Close SaveChanges:úlse" (dans ma macro "quitter")

je ne comprends pas pourquoi la macro "quitter" fonctionne depuis la feuille
de calcul, et pas depuis la dialog box ?

merci d'avance de votre aide
YM
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4440841
Ton classeur ne peut pas se fermer si ta boîte de dialogue est ouvert !

Tu fais une macro dans un module Standard qui a pour but
A ) de fermer ta boîte de dialogue
B) Fermer ton classeur sans sauvegarder

Et tu appelles cette macro à partir du bouton de ta boîte de dialogue.




"YM"
bonjour,

(je débute avec la grammaire et le vocabulaire VBA)
je travaille sur Excel 2000 (avec VBA 6.0)

j'ai écrit une petite macro (dans un module) qui permet de fermer mon
fichier Excel sans demande de confirmation :
(j'ai d'ailleurs retrouvé ce code sur le forum MPFE)

Sub quitter()
ActiveWorkbook.Close SaveChanges:úlse
End Sub

dans mon fichier, je veux lancer cette macro depuis 2 presse-boutons (boite
à outils formulaires) :

- un sur une boite de dialogue
- un sur une feuille de calcul classique

pour les 2 boutons, j'ai fait clic droit pour y associer la macro "quitter"

le bouton de la feuille de calcul fonctionne bien, le fichier se ferme sans
rien demander.
mais lorsque j'appelle la même macro depuis ma boite de dialogue, j'ai un
message d'erreur VB :
"Erreur d'éxécution '1004':
la méthode 'Close' de l'objet '_Workbook' a échoué"

je clique alors sur "Débogage", et VB me surligne ma ligne de code
"ActiveWorkbook.Close SaveChanges:úlse" (dans ma macro "quitter")

je ne comprends pas pourquoi la macro "quitter" fonctionne depuis la feuille
de calcul, et pas depuis la dialog box ?

merci d'avance de votre aide
YM
YM
Le #4467571
merci, mais comment fermer une boite de dialogue ?
j'ai essayé tout ça :

DialogSheets("Recherche").Close
DialogSheets("Recherche").Hide
ActiveDialogSheet.Close
ActiveDialogSheet.Hide
ActiveDialogSheets.Close
ActiveDialogSheets.Hide

mais aucune ne fonctionne, ça doit être tout con, mais je ne connais pas.
merci d'avance




Ton classeur ne peut pas se fermer si ta boîte de dialogue est ouvert !

Tu fais une macro dans un module Standard qui a pour but
A ) de fermer ta boîte de dialogue
B) Fermer ton classeur sans sauvegarder

Et tu appelles cette macro à partir du bouton de ta boîte de dialogue.




"YM"
bonjour,

(je débute avec la grammaire et le vocabulaire VBA)
je travaille sur Excel 2000 (avec VBA 6.0)

j'ai écrit une petite macro (dans un module) qui permet de fermer mon
fichier Excel sans demande de confirmation :
(j'ai d'ailleurs retrouvé ce code sur le forum MPFE)

Sub quitter()
ActiveWorkbook.Close SaveChanges:úlse
End Sub

dans mon fichier, je veux lancer cette macro depuis 2 presse-boutons (boite
à outils formulaires) :

- un sur une boite de dialogue
- un sur une feuille de calcul classique

pour les 2 boutons, j'ai fait clic droit pour y associer la macro "quitter"

le bouton de la feuille de calcul fonctionne bien, le fichier se ferme sans
rien demander.
mais lorsque j'appelle la même macro depuis ma boite de dialogue, j'ai un
message d'erreur VB :
"Erreur d'éxécution '1004':
la méthode 'Close' de l'objet '_Workbook' a échoué"

je clique alors sur "Débogage", et VB me surligne ma ligne de code
"ActiveWorkbook.Close SaveChanges:úlse" (dans ma macro "quitter")

je ne comprends pas pourquoi la macro "quitter" fonctionne depuis la feuille
de calcul, et pas depuis la dialog box ?

merci d'avance de votre aide
YM





MichDenis
Le #4467491
Ce type de feuille remonte à excel 95. L'aide sur ce type de feuille est absent sous excel 2003.

Tu peux toujours convertir ce type de feuille pour un "userform" en utilisant cette adresse :
http://www.microsoft.com/downloads/details.aspx?FamilyIDÍ17d28e-58d8-43b5-a1a0-df072328f9ea&displaylang=en

Ou attendre qu'un dinosaure de cette époque te réponde.



"YM"
merci, mais comment fermer une boite de dialogue ?
j'ai essayé tout ça :

DialogSheets("Recherche").Close
DialogSheets("Recherche").Hide
ActiveDialogSheet.Close
ActiveDialogSheet.Hide
ActiveDialogSheets.Close
ActiveDialogSheets.Hide

mais aucune ne fonctionne, ça doit être tout con, mais je ne connais pas.
merci d'avance




Ton classeur ne peut pas se fermer si ta boîte de dialogue est ouvert !

Tu fais une macro dans un module Standard qui a pour but
A ) de fermer ta boîte de dialogue
B) Fermer ton classeur sans sauvegarder

Et tu appelles cette macro à partir du bouton de ta boîte de dialogue.




"YM"
bonjour,

(je débute avec la grammaire et le vocabulaire VBA)
je travaille sur Excel 2000 (avec VBA 6.0)

j'ai écrit une petite macro (dans un module) qui permet de fermer mon
fichier Excel sans demande de confirmation :
(j'ai d'ailleurs retrouvé ce code sur le forum MPFE)

Sub quitter()
ActiveWorkbook.Close SaveChanges:úlse
End Sub

dans mon fichier, je veux lancer cette macro depuis 2 presse-boutons (boite
à outils formulaires) :

- un sur une boite de dialogue
- un sur une feuille de calcul classique

pour les 2 boutons, j'ai fait clic droit pour y associer la macro "quitter"

le bouton de la feuille de calcul fonctionne bien, le fichier se ferme sans
rien demander.
mais lorsque j'appelle la même macro depuis ma boite de dialogue, j'ai un
message d'erreur VB :
"Erreur d'éxécution '1004':
la méthode 'Close' de l'objet '_Workbook' a échoué"

je clique alors sur "Débogage", et VB me surligne ma ligne de code
"ActiveWorkbook.Close SaveChanges:úlse" (dans ma macro "quitter")

je ne comprends pas pourquoi la macro "quitter" fonctionne depuis la feuille
de calcul, et pas depuis la dialog box ?

merci d'avance de votre aide
YM





YM
Le #4483971
bonjour,

j'ai trouvé la solution, grâce à un informaticien de mon boulot.
l'erreur était d'associer la macro "quitter" à un bouton de la dialog box.
car Excel considérait que ma dialog box était toujours active alors que
j'appelais une macro pour fermer le fichier.

la solution : utiliser les codes retour des boutons de la dialog box pour
lancer les macros qu'on veut.
le bouton Ok donne la valeur retour 1, et Annuler donne la valeur 2.
en donnant un nom à la dialog box, on peut alors écrire :

si NOM_DIALOG = 1 alors lancer macro "bidule"
si NOM_DIALOG = 2 alors lancer macro "quitter"

et là, la macro quitter fonctionne très bien, le fichier se ferme sans alerte.


"MichDenis" wrote:

Ce type de feuille remonte à excel 95. L'aide sur ce type de feuille est absent sous excel 2003.

Tu peux toujours convertir ce type de feuille pour un "userform" en utilisant cette adresse :
http://www.microsoft.com/downloads/details.aspx?FamilyIDÍ17d28e-58d8-43b5-a1a0-df072328f9ea&displaylang=en

Ou attendre qu'un dinosaure de cette époque te réponde.



MichDenis
Le #4483681
Merci pour ce retour.


"YM"
bonjour,

j'ai trouvé la solution, grâce à un informaticien de mon boulot.
l'erreur était d'associer la macro "quitter" à un bouton de la dialog box.
car Excel considérait que ma dialog box était toujours active alors que
j'appelais une macro pour fermer le fichier.

la solution : utiliser les codes retour des boutons de la dialog box pour
lancer les macros qu'on veut.
le bouton Ok donne la valeur retour 1, et Annuler donne la valeur 2.
en donnant un nom à la dialog box, on peut alors écrire :

si NOM_DIALOG = 1 alors lancer macro "bidule"
si NOM_DIALOG = 2 alors lancer macro "quitter"

et là, la macro quitter fonctionne très bien, le fichier se ferme sans alerte.


"MichDenis" wrote:

Ce type de feuille remonte à excel 95. L'aide sur ce type de feuille est absent sous excel 2003.

Tu peux toujours convertir ce type de feuille pour un "userform" en utilisant cette adresse :
http://www.microsoft.com/downloads/details.aspx?FamilyIDÍ17d28e-58d8-43b5-a1a0-df072328f9ea&displaylang=en

Ou attendre qu'un dinosaure de cette époque te réponde.



Publicité
Poster une réponse
Anonyme