[VBA] Sauvegarder et écraser un Classeur

Clem -  
 Clem -
Bonjour,

Je rencontre actuellement un petit problème lors de la création d'un fichier excel par VBA.
J'ai 2 onglets contenant chacun plusieurs lignes, chacune possédant un "état d'avancement" défini.
je cherche à créer un bouton "importer" permettant d'ouvrir un nouveau classeur (possédant un nom fixé) et d'y entrer dans différents onglets les lignes classées par état.

Jusque là tout va bien, le sub rempli son rôle à merveille. Cependant, l'état caractérisant les différentes lignes change constamment, donc l'interet de ma fonction est, après l'importation, d'avoir un fichier actualisé, donc remplacant celui créé précédemment. J'aimerais ne pas avoir l'apparation du message "Ce fichier existe déja, voulez-vous le remplacer?" qui stoppe le calcul au début...

Mon code est actuellement celui-ci pour la création du fichier:

Application.DisplayAlerts = False
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
xlApp.SheetsInNewWorkbook = 4
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Add
xlBook.SaveAs ("ImportPapet.xls")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.name = "Non Traité"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(2)
xlSheet.name = "En cours de traitement"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(3)
xlSheet.name = "En attente"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(4)
xlSheet.name = "Problème résolu"
Set xlSheet = Nothing
Application.DisplayAlerts = True


J'avais vu que Application.DisplayAlerts permettait de supprimer ce problème, mais ca ne change rien ici :(

Auriez-vous une idée pour résoudre mon petit soucis?
Ou, est-il possible de créer un classeur comme précédemment possédant de base des fonctions vba permettant la suppression de celui-ci à sa fermeture?

Merci!

Cordialement;
Clem

3 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Sub test()
      Dim xlApp As Excel.Application
      Dim xlBook As Excel.Workbook
      Dim xlSheet As Excel.Worksheet
      Set xlApp = CreateObject("Excel.Application")
      xlApp.SheetsInNewWorkbook = 4
      xlApp.Visible = True
      Set xlBook = xlApp.Workbooks.Add
      
      xlApp.Application.DisplayAlerts = False
      
      xlBook.SaveAs ("ImportPapet.xls")
      Set xlSheet = xlBook.Worksheets(1)
      xlSheet.Name = "Non Traité"
      Set xlSheet = Nothing
      Set xlSheet = xlBook.Worksheets(2)
      xlSheet.Name = "En cours de traitement"
      Set xlSheet = Nothing
      Set xlSheet = xlBook.Worksheets(3)
      xlSheet.Name = "En attente"
      Set xlSheet = Nothing
      Set xlSheet = xlBook.Worksheets(4)
      xlSheet.Name = "Problème résolu"
      Set xlSheet = Nothing
      'Application.DisplayAlerts = True
    End Sub
    


    Bonne suite
    0
  2. Clem
     
    Bonjour,

    Tout d'abord, désolé pour le temps de réponse un peu longuet...

    Je viens d'apporter les modifications que vous m'avez proposé, mais j'ai toujours le message demandant confirmation de la suppression de ce fichier... Ce n'est pas si génant que ca, mais c'est surtout pour mon information personnelle que je cherche a comprendre comment marche les DisplayAlerts. Si quelqu'un a une idée, je suis preneur, sinon merci de votre aide :)

    Cordialement,
    Clem
    0
  3. Clem
     
    Bonjour!

    J'ai finalement réussi à régler le problème, même si je n'ai pas tout compris -_-

    Il semble que mettre :

    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:="ImportPapet.xls"
    Application.DisplayAlerts = True

    fonctionne.

    Voila voila, merci encore pour votre aide.

    Cordialement,
    Clem
    0