Forum Clubic

Automatisation d'une macro

Bonjour,

Suite à la création d’une macro celle-ci m’ouvre un fichier et me fait certaine modification une fois le fichier visionner je souhaiterai pouvoir fermer celui-ci sans aucune prise en compte de ces modifications comment puis-je passer outre la demande de confirmation de sauvegarder mon fichier ou pas y a t-il une option qui doit être mis dans ma macro pour forcer a non la sauvegarde a chaque fois.

La version d’excel et 2003

Merci d’avance pour votre aide

il suffit que tu précises false pour la valeur de l’argument SaveChanges dans ta commande de fermeture

Merci pour l’info mais je ne sais pas comment mettre le paramètre dans mon code a quel endroit juste après le Sub ou à la fin un ptit exemple serait supers??

Je suis désolé je fais mais premier pas dans ce language de programmation

Merci beaucoup pour le coup de main

D’après la manière dont tu as rédigé ton message tu demandais quelle option utiliser :
J’en avais conclu que tu avais déjà dans ta macro l’instruction pour quitter le programme.
A la fin de ta macro, tu ajoutes la ligne
ActiveWorkbook.Close false

c’est l’option false qui évite que la question soit posée

Bonjour,

Merci pour ton aide

Par contre ça marche bien mais il y a encore un ptit point à régler.

Je reprends la description de ma procédure car je penses avoir oublier une petite chose primordiale pour réaliser mon automatisation de mon application (désolé je débute dans ce genre de développement).

1/Sur mon bureau j’ai créer un raccourci qui fait appel à un fichier excel à l’intérieur de mon fichier excel j’ai créer une feuil qui contient l’ouverture de ma macro avec l’option Private Sub Workbook_Open() ça marche parfaitement.

2/Sur déclenchement de mon raccourci (double clic) une première fenêtre s’ouvre et exécute ma macro celle-ci ouvre une nouvelle fenêtre qui contient un document excel la macro me met à jour la taille de la Police le format de la police la largeur de colonne…etc de mon document.

3/Quand la macro à fini la première fenêtre excel ce trouve fermée automatiquement par les options suivantes:
ThisWorkbook.Saved = True
ThisWorkbook.Close
Le fonctionnement est parfait.

4/Par contre la seconde fenêtre ouverte par la macro et qui contient mon document à la fermeture celle-ci me demande toujours de sauvegarder mes modifications normale puisqu’il y a eu des mises à jour à l’intérieur .

En conclusion je souhaiterai pouvoir fermer cette dernière fenêtre à chaque fois sans sauvegarde donc toujours répondre implicitement non à la question "Voulez-vous enregistrer les modifications apportées à ‘MonFichier’? es-ce possible de faire ceci???

Merci d’avance pour votre aide.

Avant de fermer ton classeur qui contient la macro, tu peux lui demander de fermer l’autre
workbooks(“mon_autre_classeur”).Close false

Edit : toujours pareil : false pour ne pas sauvegarder
Par contre, si tu veux sauvegarder sans que la question te soit posée, tu mets true
Edité le 11/01/2009 à 13:20

Je n’y arrive pas il me demande à chaque fois si je souhaite sauvegarder ou pas avant de fermer mon fichier.

Quand je mets Workbooks(“D:\repertoire\monfichier\document_xls”).Close False

Pour info
Le classeur qui contient ma macro lui est bien fermé automatiquement mais le second me demande toujours "Voulez-vous enregistrer les modifications apportées à ‘D:\repertoire\monfichier\document_xls’? et moi je souhaite fermer sans avoir ce message et sans sauvegarde.

Je te donne les dernières commandes passées de ma macro:

    Workbooks.OpenText Filename:= _
    "D:\repertoire\monfichier\document_xls" _
    , Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
    Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
    TrailingMinusNumbers:=True
Cells.Select
With Selection.Font
    .Name = "Courier New"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
    ActiveWorkbook.Save
End With
Range("A4").Select
Columns("A:A").ColumnWidth = 44.57

Workbooks(“D:\repertoire\monfichier\document_xls”).Close False
ThisWorkbook.Saved = True
ThisWorkbook.Close

RE
J’ai trouvé pourquoi ça ne fonctionné pas j’ai mis le chemin D:… et il faut mettre uniquement le nom du classeur comme indiqué dans ton message donc la commande fonctionne parfaitement.

Par contre la fermeture du document ce fait automatiquement et c’est pas tout à fait ce que je souhaite j’aimerai fermer le classeur manuellement mais ne pas avoir le message ==> Voulez-vous enregistrer les modifications apportées à ‘D:\repertoire\monfichier\document_xls’? donc forcer automatiquement la réponse à non

Il faut alors que tu écrives une macro dans le classeur que tu souhaites fermer manuellement, et l’associes à l’évènement Workbook_BeforeClose
Edité le 11/01/2009 à 17:39

Donc si je comprends je dois faire comme suit

1/Déclenchement de ma macro dans classeur1
2/Ouverture d’un classeur2 qui contient ma macro (Workbook_BeforeClose)
3/Ouverture de mon document à partir du classeur2

Si c’est ca comment définir l’ouverture de mon document à partir du classeur2
et comment déclenché ma seconde macro à partir du classeur2???

1/clic sur l’icone
2/ouverture du classeur 1 -> activation de la macro Worbook_open

actions de la macro :
->> 3/ouverture du classeur 2
->> 4/travail de mise en forme sur le classeur 2
->> 5/fermeture du classeur 1 -> le classeur 2 devient actif

6/travail manuel sur le classeur 2
7/A la fermeture du classeur ->> activation de workbook_close

actions de la macro :
–> 8/positionnement de l’indicateur de sauvegarde
–> 9/fermeture du classeur, ou fermeture de l’application, selon ton besoin

Premièrement merci pour ton aide
Mais j’ai un soucis au niveau du point 7 je ne sais plus ou pas comment activer le workbook_close
aurais tu un ptit exemple car je suis perdus

C’est la même chose que workbook_open, ça s’active au même endroit.
Par contre, je n’ai pas excel sous la main pour vérifier en ce moment ; peut être que l’appellation exacte n’est pas worbook_close.
En tout cas, ça doit y ressembler fortement

Bonjour,

Ecoute je suis dans le brouillard j’essaye désespérément de mettre en pratique ce que tu me dis mais rien à faire je n’arrive pas à déclencher ma macro à la fermeture de ma fenêtre comme tu me la mis dans ton message d’hier .
Message d’hier:
7/A la fermeture du classeur ->> activation de workbook_close

actions de la macro :
–> 8/positionnement de l’indicateur de sauvegarde
–> 9/fermeture du classeur, ou fermeture de l’application, selon ton besoin

Je vais essayer d’expliquer ce que je fais :

1/Exécution de mon raccourci
2/Activation de ma macro1 à partir d’une fenêtre1 (workbook_open) qui me met en forme un fichier nommé Fic1 (Police,taille…etc)
3/Le fichier Fic1 s’ouvre dans une fenêtre2 la mise en forme s’effectue pas de problème elle reste active.
4/La fenêtre1 qui correspond à l’exécution de ma macro (point2) ce referme automatiquement pas de problème.

C’est à partir du prochain point ou j’ai un gros souci

5/Je n’arrive pas à déclencher la macro qui doit me permettre de fermer l’application (Excel) sans avoir aucune demande de sauvegarde.

J’ai créé une macro de ce type :

Sub Workbook_close()

’ Macro enregistrée le 12/01/2009 par

Application.DisplayAlerts = False
Application.Quit
Application.DisplayAlerts = False

End Sub

Cette macro j’aimerai l’activer au moment ou je ferme manuellement le fichier du point3.
Comme tu le dis je dois utiliser le même procédé que Workbook_open du point1 mais je ne sais pas comment faire

Avec Application.Quit, tu ne fermes pas le fichier, tu fermes l’application (Excel).
Bien sûr, Excel va fermer avant le dernier classeur ouvert, mais comme tu n’as rien précisé, il va te demander avant si tu veux le sauvegarder.

La première chose est donc de savoir ce que tu veux fermer

  • le classeur ? (en gardant excel ouvert)
  • l’application ?

Pour fermer le classeur uniquement, c’est identique à ce que tu as fait dans ta première macro.
Pour fermer l’application, il faut d’abord positionner l’indicateur de sauvegarde du classeur
(ThisWorkbook.Saved = True)
puis fermer l’application
(Application.Quit)

Inutile de remettre Application.DisplayAlerts = False en dernière ligne :
d’une part, je pense que c’est true qui serait logique à cet endroit, d’autre part la ligne ne sera jamais exécutée puisque tu auras quitté l’application à la ligne précédente.