[VB6 - Excel] Problème lors de la fermeture du fichier

[Résolu]
Signaler
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006
-
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006
-
Bonjour tlm!

J'ai un petit probleme avec VB6 et Excel... Mon programme prend des data pour les mettres dans excel, jusque la pas de probleme... Mon probleme est lorsque je veux fermer le fichier, il me demande touojurs : Voulez-vous réellement sauvegarder?. Il ne faudrait pas qu'il me demande sa et qu'il sauvegarde automatique.. Je ne suis pas certains si cela est possible... Voici mon codes :

'Chemin du fichier a modifier à chaque installation
Dim repertoire As String
repertoire = "C:\fichier.xls"
'Ouverture de l'application
Set appexcel = New Excel.Application
'Gestion du fichier et ouverture statique
appexcel.Workbooks.Open repertoire
'Visualisation en fond d'ecran la page excel
appexcel.Visible = False

*** ICI JE RENTRE LES DATAS ***

'Fermer le fichier excel
appexcel.Workbooks.Close
'MON PROBLÈME EST ICI

Je cherche donc une facon de fermer mon fichier sans qu'il me pose la question, ou en pouvant répondre automatiquement a la question...

Merci d'avance!

6 réponses

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
5
Excuse moi, j'ai répondu trop vite :
le "appexcel.Workbooks.Close" n'a pas d'arguments.
Si tu l'utilises comme ça, il va fermer tous les fichiers Excels ouverts.

Je pense que la manière la plus propre est d'affecter un objet de type Classeur à chaque fichier que tu ouvres :

Dim l_WorkBook as Object 'As WorkBook si tu as mis Excel dans les références de ton projet)
Set l_WorkBook = appexcel.Workbooks.Open (repertoire)
...
'Exemple d'utilisation de l_Workbook : Remplit la cellule A1
l_Workbook.WorkSheets("Feuil1").Range("A1").Value = "toto"
...
'Fermet le classeur
Call l_WorkBook.Close(True)
'Quitte Excel
appexcel.Quit
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
5
Salut,

Il faut passer le paramètre True à la fonction Close pour qu'il force l'enregistrement. (Pour info : avec False, il ferme sans enregistrer)
Call appexcel.Workbooks.Close(True)
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006

Merci de m'avoir répondu si vite, mais j'ai essayé ce que tu m'as propossé et voici l'erreur :

Run-time error '450':
Wrong number of arguments or invalid property assigment

J'ai touver appexcel.SaveWorkspace mais sa me demande ou le saver parce que le fichier est ouvert en read-only...

Je continu a chercher, si vous pouvez m'aider sa serait très apprécier!!

Merci!
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006

Sa marche mais j'ai un petit probleme... Je dois presque absolument traiter les cases avec (1,1) au lieu de "A1" Parce que j'ai a peu pres 3000 lignes de data et environs 20 colonnes de data... Faque sa va bcps mieu gerer avec (1,1) comme je fesais au début.. Mais bon j'va essayer de regarder sa, mais si tu sais comment faire gene toi pas ;)

Merci bcps!!
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006

Finalement j'ai déja trouvé!!

l_WorkBook.Worksheets(1).Cells(1, 17).Value = "sadasdas"

sé pratiquement la meme chose que tu m'avais donné...

MERCI BCPS!!!
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006

Juste pour etre certain que si quelqu'un retombe sur le sujet, qu'il comprenne bien voici le résultat final :

'Chemin du fichier a modifier à chaque installation
Dim repertoire As String
repertoire = "C:\fichier.xls"
'Ouverture de l'application
Set appexcel = New Excel.Application


Dim l_WorkBook As Workbook 'si tu as mis Excel dans les références de ton projet)
Set l_WorkBook = appexcel.Workbooks.Open(repertoire)


'Visualisation en fond d'ecran la page excel
appexcel.Visible = False


'TRAITER DATA ICI
l_WorkBook.Worksheets(1).Cells(1, 1).Value = "Cycle number" 'un exemple


'Fermet le classeur
Call l_WorkBook.Close(True)
'Quitte Excel
appexcel.Quit

Voila Il faut que le fichier existe et que la référence pour "Microsft Excel X.0 Object Library" soit sélectionné