Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 [RESOLU] Fermer fichier csv si ouvert

cathodique

XLDnaute Barbatruc
Bonjour,

J'utilise le code ci-dessous pour créer un fichier csv.
code corrigé au post#3
Par inadvertance, j'ai exécuté le code alors que le csv était ouvert le code a planté sur la ligne d'ouverture du fichier séquentiel.
Comment peut-on vérifier que le fichier n'est pas ouvert et dans le cas contraire le fermer?

En vous remerciant par avance.

Bon week-end.
 
Dernière édition:
Solution
Salut, voir par ici ?
Private Function IsFileOpen(filename As String)
Private Function IsFileOpenLight(filename As String) As Boolean
Salut Kiki29 ,

Merci beaucoup. Je rajoute tes codes à mes archives.
Je ne suis pas resté inactif. J'ai trouvé cette solution.
VB:
Sub CSV_separateur_PointVirgule()
    Dim Tableau, ligne As String, i As Long, j As Long, NumFichier As Integer
    Const sSep As String = ";"
    NumFichier = FreeFile
    Tableau = ThisWorkbook.Worksheets("comptes").UsedRange
    'fermer fichier si ouvert
    If FichOuvert("essai.csv") Then Workbooks("essai.csv").Close False
    ' on l'ouvre en mémoire
    Open ThisWorkbook.Path & "\" & "essai.csv" For Output As #NumFichier
    'transfert des données'...

cathodique

XLDnaute Barbatruc
Salut, voir par ici ?
Private Function IsFileOpen(filename As String)
Private Function IsFileOpenLight(filename As String) As Boolean
Salut Kiki29 ,

Merci beaucoup. Je rajoute tes codes à mes archives.
Je ne suis pas resté inactif. J'ai trouvé cette solution.
VB:
Sub CSV_separateur_PointVirgule()
    Dim Tableau, ligne As String, i As Long, j As Long, NumFichier As Integer
    Const sSep As String = ";"
    NumFichier = FreeFile
    Tableau = ThisWorkbook.Worksheets("comptes").UsedRange
    'fermer fichier si ouvert
    If FichOuvert("essai.csv") Then Workbooks("essai.csv").Close False
    ' on l'ouvre en mémoire
    Open ThisWorkbook.Path & "\" & "essai.csv" For Output As #NumFichier
    'transfert des données'
    For i = LBound(Tableau, 1) To UBound(Tableau, 1)
        ligne = Tableau(i, LBound(Tableau, 2))
        For j = LBound(Tableau, 2) + 1 To UBound(Tableau, 2)
            ligne = ligne & sSep & Tableau(i, j)
        Next j
        Print #NumFichier, ligne
    Next i
    Close NumFichier
    MsgBox "terminé!"
End Sub

Function FichOuvert(F As String) As Boolean
'myDearFriend!  -  www.mdf-xlpages.com
    On Error Resume Next
    FichOuvert = Not Workbooks(F) Is Nothing
End Function

Encore merci. Bon week-end.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…