OVH Cloud OVH Cloud

Impossibilité de fermer un fichier

11 réponses
Avatar
MorMic
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter des
opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls, FileFormat:=xlNormal,
Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False,
CreateBackup:=False
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je veux
exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des objets.

Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel

10 réponses

1 2
Avatar
Pierre Fauconnier
Bonsoir

Non testé... Travaille avec un objet workbook

Dim wb as workbook
Set wb = Workbooks.open...
wb.SaveAs ...
wb.close
Set wb = Nothing


Ok?

--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter des
opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,
Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux
exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des objets.

Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel






Avatar
Patrick Penet
Ajouter :
Application.Quit en dernière ligne

Cordialement
PP


"MorMic" a écrit dans le message de news: 45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter des
opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls, FileFormat:=xlNormal,
Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je veux
exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des objets.

Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel






Avatar
MorMic
Bonsoir Pierre

Cela fonctionne de la même manière mais mon fichier est toujours ouvert
en fin de programme!!!

Merci tout de même pour votre aide

Michel

"Pierre Fauconnier" a écrit dans le
message de news: #
Bonsoir

Non testé... Travaille avec un objet workbook

Dim wb as workbook
Set wb = Workbooks.open...
wb.SaveAs ...
wb.close
Set wb = Nothing


Ok?

--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe

zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter
des


opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,
Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux
exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des
objets.



Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel










Avatar
MorMic
Bonsoir Patrick

Avec cette instruction c'est mon application qui se ferme mais non pas le
fichier que j'ai créé.

Merci quand même pour votre aide

Michel

"Patrick Penet" a écrit dans le message de
news: 45197123$0$21143$
Ajouter :
Application.Quit en dernière ligne

Cordialement
PP


"MorMic" a écrit dans le message de news:
45196176$0$5108$

Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter
des


opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,


Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux


exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des
objets.



Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel










Avatar
MorMic
Je reviens vers vous car grâce aux conseils de Pierre et de Patrick je suis
allé plus loin dans l'analyse de mon problème et en fn de compte le problème
ne vient pas d'où je pensais qu'il vint.
En fait, dans une autre routine j'ai:

Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls)
..........
et c'est après cette routine qu'il faudrait que je ferme le fichier
NomFichierXls, mais comment faut-il le faire ?

Merci

Michel

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter des
opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,

Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux

exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des objets.

Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel






Avatar
Pierre Fauconnier
Je serais tenté de dire

ficbase.close

Mais il faut voir si c'est dans la proc CreationFichier que tu veux fermer
FicBase.

Il serait intéressant que tu utilises le copier-coller plutôt que de saisir
le code dans le message, ce serait plus aisé de comprendre la proc et de te
venir en aide...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"MorMic" a écrit dans le message de news:
4519821d$0$27395$
Je reviens vers vous car grâce aux conseils de Pierre et de Patrick je
suis
allé plus loin dans l'analyse de mon problème et en fn de compte le
problème
ne vient pas d'où je pensais qu'il vint.
En fait, dans une autre routine j'ai:

Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls)
..........
et c'est après cette routine qu'il faudrait que je ferme le fichier
NomFichierXls, mais comment faut-il le faire ?

Merci

Michel

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter des
opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,

Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux

exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des objets.

Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel










Avatar
michdenis
Workbooks(NomFichierXls).close True or False selon que tu veuilles sauvegarder tes modifications


"MorMic" a écrit dans le message de news:
4519821d$0$27395$
Je reviens vers vous car grâce aux conseils de Pierre et de Patrick je suis
allé plus loin dans l'analyse de mon problème et en fn de compte le problème
ne vient pas d'où je pensais qu'il vint.
En fait, dans une autre routine j'ai:

Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls)
..........
et c'est après cette routine qu'il faudrait que je ferme le fichier
NomFichierXls, mais comment faut-il le faire ?

Merci

Michel

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter des
opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,

Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux

exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des objets.

Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel






Avatar
MorMic
J'avais déjà essayé cela, mais j'ai une erreur d'exécution 9 : "l'indice
nappartient pas à la sélection"

Michel

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

Workbooks(NomFichierXls).close True or False selon que tu veuilles
sauvegarder tes modifications



"MorMic" a écrit dans le message de news:
4519821d$0$27395$
Je reviens vers vous car grâce aux conseils de Pierre et de Patrick je
suis

allé plus loin dans l'analyse de mon problème et en fn de compte le
problème

ne vient pas d'où je pensais qu'il vint.
En fait, dans une autre routine j'ai:

Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls)
..........
et c'est après cette routine qu'il faudrait que je ferme le fichier
NomFichierXls, mais comment faut-il le faire ?

Merci

Michel

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter
des


opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,

Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux

exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des
objets.



Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je me
plante une nouvelle fois.

Merci d'avance

Michel











Avatar
MorMic
Pierre, voici l'ensemble des 2 procédures où je manipule les fichiers. Si
cela éclaircit ta lanterne.

Sub CopieBase()
Set wb = Workbooks.Open(NomFichierDbf, ReadOnly:=True) 'Ouvre la base de
données dbf
wb.SaveAs Filename:=NomFichierXls, FileFormat:=xlNormal 'Copie la base
dbf en base de données xls
wb.Close ' Ferme la base de données xls
Set wb = Nothing
End Sub
Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls) ' Charge la base de données xls
dans FicBase
With FicBase.Worksheets(1)
NbCol = .Range("A1").End(xlToRight).Column 'Nombre de colonne dans
la base de données
For x = 1 To NbChamps 'Scrute les champs à remplir de la feuille
active
For i = 1 To NbCol 'Scrute l'ensemble de la base de données xls
ColPos = i
If .Cells(1, ColPos) = Cells(1, x) Then 'Si les entêtes de
colonnes correspondent
Set Cellule = .Cells(1, ColPos)
If x = 1 Then NbRang = Cellule.End(xlDown).Row
'Détermine le nombre de ligne de la base en colonne 1
.Range(.Cells(2, ColPos), .Cells(NbRang, ColPos)).Copy
'Copie la colonne complète
Cells(2, x).PasteSpecial Paste:=xlValues,
Operation:=xlNone, SkipBlanks:úlse, _
Transpose:úlse
Exit For ' Passe au champ suivant
End If
Next i
Next x
End With
FicBase.Close ' Devrait fermer la base de données xls, mais ne la ferme
pas !!!
'Il y a toujours dans l'explorateur de projet une rubrique: "
VBAProject(Tata.xls)"
End Sub

Je ne vois pas comment je pourrai utiliser un copier-coller. Peux-tu
m'éclairer ?

Merci

Michel

"Pierre Fauconnier" a écrit dans le
message de news:
Je serais tenté de dire

ficbase.close

Mais il faut voir si c'est dans la proc CreationFichier que tu veux fermer
FicBase.

Il serait intéressant que tu utilises le copier-coller plutôt que de
saisir

le code dans le message, ce serait plus aisé de comprendre la proc et de
te

venir en aide...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe

zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"MorMic" a écrit dans le message de news:
4519821d$0$27395$
Je reviens vers vous car grâce aux conseils de Pierre et de Patrick je
suis
allé plus loin dans l'analyse de mon problème et en fn de compte le
problème
ne vient pas d'où je pensais qu'il vint.
En fait, dans une autre routine j'ai:

Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls)
..........
et c'est après cette routine qu'il faudrait que je ferme le fichier
NomFichierXls, mais comment faut-il le faire ?

Merci

Michel

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter
des



opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,

Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux

exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des
objets.




Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je
me



plante une nouvelle fois.

Merci d'avance

Michel














Avatar
MorMic
Pierre, c'est la bonne solution!. Le FicBase.Close fonctionne parfaitement
Ma base de données est bien fermée.

Merci encore des ces conseils très positifs

Michel

"Pierre Fauconnier" a écrit dans le
message de news:
Je serais tenté de dire

ficbase.close

Mais il faut voir si c'est dans la proc CreationFichier que tu veux fermer
FicBase.

Il serait intéressant que tu utilises le copier-coller plutôt que de
saisir

le code dans le message, ce serait plus aisé de comprendre la proc et de
te

venir en aide...


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe

zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"MorMic" a écrit dans le message de news:
4519821d$0$27395$
Je reviens vers vous car grâce aux conseils de Pierre et de Patrick je
suis
allé plus loin dans l'analyse de mon problème et en fn de compte le
problème
ne vient pas d'où je pensais qu'il vint.
En fait, dans une autre routine j'ai:

Sub CréationFichier()
Set FicBase = GetObject(NomFichierXls)
..........
et c'est après cette routine qu'il faudrait que je ferme le fichier
NomFichierXls, mais comment faut-il le faire ?

Merci

Michel

"MorMic" a écrit dans le message de news:
45196176$0$5108$
Bonsoir à toutes et à tous.

Je travaille avec Excel 2000 en VBA
J'ai besoin de copier un fichier .dbf en fichier .xls puis d'exécuter
des



opérations pour récupérer les données.
Je procède ainsi:

Sub CopieBase()
Workbooks.Open Filename:=NomFichierDbf, ReadOnly:=True
ActiveWorkbook.SaveAs Filename:=NomFichierXls,
FileFormat:=xlNormal,

Password:="", _
WriteResPassword:="", ReadOnlyRecommended:úlse,
CreateBackup:úlse
ActiveWorkbook.Close
End Sub

A la première exécution du programme, tout va pour le mieux, mais si je
veux

exécuter à nouveau mon programme
j'ai une erreur m'indiquant que le fichier NomFichierXls est toujours
ouvert. En effet, dans l'explorateur de projet
je vois une instance du fichier ouverte.

Je dois avoir un problème de compréhension dans la définition des
objets.




Quelqu'un peut-il m'expliquer comment fermer ce fichier et pouquoi je
me



plante une nouvelle fois.

Merci d'avance

Michel














1 2