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

Macros et VBA Excel Discussion :

Supprimer fichier texte [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Supprimer fichier texte
    Bonjour,
    Je fais des retouches à une appli (dont je ne suis pas l'auteur) qui extrait des données de feuilles XL et produit un fichier texte en utilisant Print #1; comme je suis peu habile en VBA je dois tester régulièrement mes modifications du code. Or, chaque fois que je lance l'appli juste après un test précédent j'ai un message Permission refusée due au fait (je pense) que le fichier texte créé précédemment existe toujours même fermé. Le code s'achève par Close #1. Je dois à chaque fois tout sauvegarder et redémarrer l'ordi = perte de temps. Quelle instruction ajouter pour que le fichier #1 soit éliminé et pas seulement fermé ? J'ai essayé Kill mais j'ai une erreur. Merci d'avance pour tout conseil.
    Cordialement
    touche_a-tout

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, quand tu vas chez le médecin, tu lui dis juste "je suis malade" ou tu précises tes symptômes ?
    Ici c'est pareil, j'ai une erreur ne permet pas vraiment d'aider.
    Le code de la macro et la ligne qui provoque l'erreur, ça serait pas mal.

  3. #3
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut [XL-2016] Supprimer fichier texte
    Salut,
    Tu as raison et je te remercie de prêter attention à mon souci. Le symptôme, c'est "Permission refusée",
    (qui disparaît après un redémarrage",
    la ligne qui provoque l'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open Nom_Dossier & "\" & Nom_Fichier & ".ged" For Output As #1
    et la macro fait environ 3000 lignes, je ne voudrais pas surcharger.
    J'ai pensé que l'idée de supprimer le fichier #1 était assez explicite. Je suis désolé.
    Merci d'avance si ces détails te permettent d'y voir plus clair.
    Cordialement
    touche_a_tout

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Moi ça ne m'aide pas, la ligne où apparaît l'erreur n'est pas forcément la cause de l'erreur, il faudrait voir ce qui amène l'erreur et pour ça il faut le reste du code.
    3000 lignes pour une macro ? Bonjour la maintenance, tu ne pouvais pas la décliner en plusieurs macros plus petites ?
    Exécute en pas à pas pour voir si le chemin et le fichier attendus sont corrects, c'est tout ce que je peux dire avec le minimum d'information fourni.
    Voici de quoi effacer un fichier, vois si tu peux l'insérer quelque part dans ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub DeleteFile(ByVal FileToDelete As String)
      If FileExists(FileToDelete) Then 'Remplacer FileToDelete par le chemin et nom du fichier à supprimer
        ' Suppression de l'attribut en lecture seule, s'il est défini
        SetAttr FileToDelete, vbNormal
        ' Ensuite, suppression du fichier
        Kill FileToDelete
      End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function FileExists(ByVal FileToTest As String) As Boolean
      FileExists = (Dir(FileToTest) <> "")
    End Function

  5. #5
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut [XL-2016] Supprimer fichier texte
    Je vois le sac de noeuds. J'ai dit que je n'étais pas l'auteur de l'appli; ça veut dire qu'elle évolue à des niveaux de VBA que mes pauvres connaissances me rendent inaccessibles et je n'y touche qu'en espérant ne pas tout déglinguer. J'ai une idée approximative de sa structure. Elle contient une procédure sub qui définit une partie introductive et lance 6 procédures Function très similaires entre elles (mais pas identiques), qui produisent le fiichier texte, le tout agrémenté par 26 Function qui fournissent des données à toutes les autres procédures. La sub introductive, sub de lancement en quelque sorte, ne compte que 142 lignes et contient la ligne qui passe en jaune quand apparaît le message d'erreur, ligne 82. Est-ce que je cite ces 142 lignes de code dans un post ou je les mets en annexe ?
    J'espère que ces données suffiront et je te remercie d'avance.
    Bien à toi
    touche_a_tout
    P.S. Je cite tout de même une ligne de commentaire (tout au début de la procédure introductive):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'ferme le fichier #1 précédent
    Apparemment le développeur avait prévu le problème de la "Permission refusée" mais il n'a pas introduit le bout de code correspondant.
    PS2: Merci pour tes 2 fragments de code. Le problème est que je n'ai aucune idée de l'endroit où le fichier #1 va se loger, donc pas moyen de fournir un chemin à ta macro.

    PS3 Pour corser le tout, je n'arrive pas à reproduire l'erreur dont il est question ici, donc je ne peux pas retrouver l'explication que donne Microsoft, mais il est question d'un fichier placé sur un disque protégé en écriture ou lui-même protégé en écriture, d'où l'idée de supprimer ce fichier, mais si la procédure exige le chemin, voir ci-dessus !!

  6. #6
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut [XL-2016] Supprimer fichier texte
    Re,
    J'ai fini par obtenir le message d'erreur (je ne sais pas encore comment). La première explication de Microsft est:

    Vous avez essayé d’ouvrir un fichier protégé en écriture en mode Output ou Append séquentiel. Ouvrez le fichier en mode Input ou modifiez l’attribut de protection en écriture du fichier.
    Je te le donne pour ce que ça vaut.
    Merci
    touche_a_tout

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Vu tes explications, je pense qu'on dépasse le cadre de l'aide de ce forum. A priori, il faudrait décortiquer tout le projet pour voir comment ça fonctionne. Vu ton niveau, et ce n'est pas péjoratif, et le fait que tu n'es pas l'auteur, toute aide à l'aveugle risque d'empirer les choses, d'amener de nouvelles erreurs et sérieusement compliquer la maintenance future. Personnellement je n'ai pas autant de temps qu'il faudrait à te consacrer. Si c'est une application qui tourne en entreprise, il faudra probablement faire appel à des professionnels.

  8. #8
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonsoir,
    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
    20
    21
    22
    23
    24
    'Personnellement je préfère utiliser une routine séparé qui refermer le fichier a coup sur !  
    Property Let FichierTxt(Fichier, Optional AutreOption As Boolean = False, TEXT As Variant)
    With CreateObject("Scripting.FileSystemObject")
            With .OpenTextFile(Fichier, Array(2, 8)(Abs(AutreOption)), True)
                .Write TEXT
                .Close
        End With
    End With
    End Property
    Property Get FichierTxt(Fichier, Optional AutreOption As Boolean = False) As Variant
    With CreateObject("Scripting.FileSystemObject")
        With .OpenTextFile(Fichier)
            FichierTxt = .ReadAll
            .Close
        End With
    End With
    If AutreOption Then FichierTxt = Split(FichierTxt, vbCrLf)
    End Property
    Sub test()
    FichierTxt(Environ("temp") & "\toto.txt") = "test1"  'Ecrire dans un fichier texte en supprimant l'existant
    FichierTxt(Environ("temp") & "\toto.txt", True) = vbCrLf & "test2"   'Ajoute du texte dans un ficher existant
    txt = FichierTxt(Environ("temp") & "\toto.txt") 'Lire le contenu d'in fichier
    Table = FichierTxt(Environ("temp") & "\toto.txt", True) 'Lire le contenu d'un fichier texte et retourne chaque ligne sous forme de table !
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/05/2006, 13h38
  2. Supprimer certaines lignes d'un fichier texte
    Par kek_net dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2006, 11h21
  3. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  4. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  5. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43

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