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

VB 6 et antérieur Discussion :

[VB6] Fermer proprement des feuilles Excel


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [VB6] Fermer proprement des feuilles Excel
    Bonjour,

    Je suis plutot Java mais pour gerer une feuille excel j'ai créer une petite application qui tourne sous vb6 et excel. N'hesiter pas a me parler comme un debutant .

    Voila mon appli ouvre une feuille (toujours la meme "O_current") . A des fins d'archivage je sauvegrade ma feuille sous des noms different.

    Au bout d'un certain temps, le fichier O_current est decrit comme etant deja ouvert et je ne peux plus le sauvegarder. Les job Excel s'empile dans le gestionnaire des taches et tout par en couilles.

    Le code est une reprise (mal) adapté d'un de vos tutoriaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Form_Load()
        'Ouverture de l'application
        Set appExcel = CreateObject("Excel.Application")
        'Ouverture d'un fichier Excel
        Set wbExcel = appExcel.Workbooks.Open("C:\dam\Utils\VB_Project\Organizer\O_current.xls")
        'wsExcel correspond à la première feuille du fichier
        Set Data = wbExcel.Worksheets(1)
     
        flgChange = False
        pos = "2"
        Call MAJ
        Call MAJ_List
        myFiltre = 0
     
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Unload(Cancel As Integer)
        Call wbExcel.Save
        wbExcel.Close 'Fermeture du classeur Excel
        appExcel.Quit 'Fermeture de l'application Excel
     
        'Désallocation mémoire
        Set Data = Nothing
        Set wbExcel = Nothing
        Set appExcel = Nothing
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub mSaveAs_Click()
        cdSave.Filter = "Excel files|*.xls|All files|*.*"
     
        cdSave.FileName = "O_" & Mid$(Date, 7, 4) & Mid$(Date, 4, 2) & Mid$(Date, 1, 2) & "_" & Mid$(Time, 1, 2) & Mid$(Time, 4, 2) & ".xls"
        On Error GoTo error
        With cdSave
            .CancelError = True
            .ShowSave
        End With
        ' on sauvegradre sous le nom pour l'archivage
        Call wbExcel.SaveAs(cdSave.FileName)
        ' on sauvegarde aussi la curreant au passage
        Call wbExcel.SaveAs("C:\dam\Utils\VB_Project\Organizer\O_current.xls")
     
        Exit Sub
     
    error:
        MsgBox ("Erreur : rien n'a été sauvé" & cdSave.CancelError)
    End Sub

    voila je suis

  2. #2
    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
    Essaie comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Call wbExcel.Save
    DoEvents 
    wbExcel.Close 'Fermeture du classeur Excel 
    DoEvents 
    appExcel.Quit 'Fermeture de l'application Excel 
    DoEvents
    Le dernier DoEvents n'est utile que si tu ré-ouvres Excel derrière (!)

    Tu dis

    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oki j'ai ajouter ca.

    Maintenant j'ai un autre probleme : lorsque je quitte mon application, la fenetre se ferme mais VB6 reste en status "running" comme ci le programme tournait toujours a l'arriere ... Je suis obliger de le stopper manuellement. Ce n'est pas pratique et pas tres propre. Est ce que ca vous dit quelque chose ?

  4. #4
    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
    Comment quittes-tu l'appli ? D'où la fermes-tu ? Depuis une form ? si c'est depuis une form, de quelle façon ?

    A+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je ferme l'appli en cliquant sur la croix. je pense que ca leve un evenement Unload ou je sauvegarde mon fichier en cours et ou je clos l'application excel.

    est ce que je dois mettre les deux derniere ligne pour etre sur de tout vider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Private Sub Form_Unload(Cancel As Integer)
        Call wbExcel.Save
        DoEvents
        wbExcel.Close 'Fermeture du classeur Excel
        DoEvents
        appExcel.Quit 'Fermeture de l'application Excel
     
        'Désallocation mémoire
        Set Data = Nothing
     
        Set wbExcel = Nothing
        Set appExcel = Nothing
     
    End Sub

  6. #6
    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
    Comme je n'ai pas VB6, j'ignore s'il existe un événement queryclose dans les forms
    Si oui, je mettrais ton code dans cet événement

    Tu dis

    A+

    Désolé mais je ne peux pas tester ce que je te dis

  7. #7
    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
    Une questin subsidiaire : Où fais-tu un Unload LaForm ? Je ne crois pas l'avoir vu...

    A+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Ah non je fais absolument pas ca ...


    D'accord donc a la fin d'un programme je dois ecrire

    Unload <nom de ma frame>

    Oki

    je rajoute.

    N'empeche que finalement j'ai toujours mon probleme de "O_Current "qui est dit 'deja ouvert' et qui n'est pas enregistré. Le probleme m'apparait de facon aleatoire. (que du bonheur quoi)

Discussions similaires

  1. [VB6] Ajustement avant impression feuille excel
    Par Julio_del_pueblo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/06/2006, 14h35
  2. [VB6] Fermer proprement excel
    Par jean-pierre96 dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 09/05/2006, 16h17
  3. [VBA] Dissocier des feuilles Excel avec VBA
    Par lezinve dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2006, 16h30
  4. Réponses: 2
    Dernier message: 30/01/2006, 22h19
  5. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

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