Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

5 réponses
Avatar
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:=False
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:=False" (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

5 réponses

Avatar
MichDenis
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" a écrit dans le message de news:

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
Avatar
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" a écrit dans le message de news:

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





Avatar
MichDenis
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" a écrit dans le message de news:

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" a écrit dans le message de news:

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





Avatar
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.



Avatar
MichDenis
Merci pour ce retour.


"YM" a écrit dans le message de news:

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.