Renommage et creation de fichier + Instruction IF

Résolu
aqwelea Messages postés 11 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 4 janvier 2008 - 4 janv. 2008 à 12:24
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 15 janv. 2008 à 22:08
Bonjour,

J'ai un petit probleme. J'ai lu quelques posts mais rien ne ressemble a mon probleme.
Je dois preciser egalement que je suis debutant.

Ce que je veux faire :

si txt existe alors


    si old existe
       suppression old
       renommage txt en old
       creation txt

    sinon
    renommage en old
    creation txt


sinon  creation txt

Mon probleme :

Dans mes instructions, seules la premiere ligne est prise en compte :-(

Voici mon code :

'___________________________________________________________________________________________________________________
'      Procédures
'___________________________________________________________________________________________________________________





Sub rename(fichier_checked, fichier_old)
 MsgBox("creation old!")
 Set ofile = ofso.movefile (fichier_checked, fichier_old)
 MsgBox("old cree!")
End Sub



Sub delete(fichier_old)
 MsgBox("suppression old !")
 Set ofile = ofso.DeleteFile(fichier_old)
 MsgBox("old supprime")
End Sub



Sub create(fichier_new)
 MsgBox("creation fichier !")
 Set ofile = ofso.CreateTextFile(fichier_new)
 MsgBox("txt cree !")
End Sub
'___________________________________________________________________________________________________________________
'      Début code
'___________________________________________________________________________________________________________________



 Set ofso = CreateObject("scripting.filesystemobject")
 fichier_checked = "c:\resultat_export.txt"
 fichier_old = "c:\resultat_export.old"
 fichier_new = "c:\resultat_export.txt"
 
 If ofso.FileExists(fichier_checked) Then
   
   If ofso.FileExists(fichier_old) Then
    Call delete(fichier_old)
    Call rename(fichier_checked, fichier_old)
    Call create(fichier_new)
   Else
    Call rename(fichier_checked, fichier_old)
    Call create(fichier_new)
   End If
 Else 
  Call create(fichier_new)
  
 End If


 


Ai-je oublie quelque chose ?

Merci d'avance pour votre aide

ps : j'ai mis des msgbox en peu partout pour le debogage ...


------------------------------------------


Un jour, je serai un grand developpeur ... en tout cas, j'essaye d'y croire ...

4 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 janv. 2008 à 13:28
Personnellement, j'ai juste modifié un tout petit peu tes procédures, puisque le Set ofile = ... n'est pas utile, et j'ai modifié la syntaxe de la fonction .movefile qui n'était pas bonne (pas de parenthèses, contrairement à DeleteFile et CreatetextFile, oui je sais, c'est nul ^^), j'obtiens donc :

Sub rename(fichier_checked, fichier_old)
 MsgBox("creation old!")
 ofso.movefile fichier_checked, fichier_old
 MsgBox("old cree!")
End Sub


Sub delete(fichier_old)
 MsgBox("suppression old !")
 ofso.DeleteFile(fichier_old)
 MsgBox("old supprime")
End Sub


Sub create(fichier_new)
 MsgBox("creation fichier !")
 ofso.CreateTextFile(fichier_new)
 MsgBox("txt cree !")
End Sub

Et mon script fonctionne.

Molenn
3
aqwelea Messages postés 11 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 4 janvier 2008
4 janv. 2008 à 12:26
Oups

je voulais dire dans mon probleme :

Dans mes "if", seule la premiere instruction est prise en compte

Un jour, je serai un grand developpeur ... en tout cas, j'essaye d'y croire ...
0
aqwelea Messages postés 11 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 4 janvier 2008
4 janv. 2008 à 14:02
Merci Molenn

Ca fonctionne nickel

Ca me rassure de voir que je n'etais pas bien loin

Un jour, je serai un grand developpeur ... en tout cas, j'essaye d'y croire ...
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
15 janv. 2008 à 22:08
Bonsoir

Une autre possibilité.
Dim objFso, fichier_checked, fichier_old
Set objFso = CreateObject("Scripting.FileSystemObject")
fichier_checked = "c:\resultat_export.txt"
fichier_old = "c:\resultat_export.old"

'test si fichier_checked et fichier_old existent
If objFso.FileExists(fichier_checked) And _
   objFso.FileExists(fichier_old) Then
   MsgBox "les 2 fichiers existent"
   'fichier_old existe
   'copie overwrite de fichier_checked vers fichier_old
   objFso.CopyFile fichier_checked, fichier_old, True
   'Création overwrite de fichier_checked
   objFso.CreateTextFile fichier_checked, True
ElseIf objFso.FileExists(fichier_checked) Then
   MsgBox "seul fichier_checked existe"
  'fichier_old n'existe pas
  'fichier_checked existe
  'Rename de fichier_checked en fichier_old
   objFso.MoveFile fichier_checked, fichier_old
   'Création fichier_checked
   objFso.CreateTextFile fichier_checked
Else
  'fichier_checked n'existe pas
  'peu importe l'existence de fichier_old
  MsgBox "fichier_checked n'existe pas"
End If
Set objFso = Nothing

Nota:
Si lancement 2 fois de suite ce script, les données sont perdues.

Pour ne pas recopier et renommer un fichier vide:

Dim objFso, fichier_checked, fichier_old
Set objFso = CreateObject("Scripting.FileSystemObject")
fichier_checked = "c:\resultat_export.txt"
fichier_old = "c:\resultat_export.old"

'test si fichier_checked et fichier_old existent
If objFso.FileExists(fichier_checked) And _
   objFso.FileExists(fichier_old) Then
   MsgBox "les 2 fichiers existent"
   'les 2 fichiers existent 
   'si fichier_checked non vide
   If objFso.GetFile(fichier_checked).Size <> 0 Then
      MsgBox "fichier_checked non vide"
      'copie overwrite de fichier_checked vers fichier_old
      objFso.CopyFile fichier_checked, fichier_old, True
      'Création overwrite de fichier_checked
      objFso.CreateTextFile fichier_checked, True
   Else
      MsgBox "fichier_checked vide"
   End if
ElseIf objFso.FileExists(fichier_checked) And _
       objFso.GetFile(fichier_checked).Size <> 0 Then
   MsgBox "seul fichier_checked existe et il n'est pas vide"
  'fichier_old n'existe pas
  'fichier_checked existe et n'est pas vide
  'Rename de fichier_checked en fichier_old
   objFso.MoveFile fichier_checked, fichier_old
   'Création fichier_checked
   objFso.CreateTextFile fichier_checked
Else
  MsgBox "soit le fichier_checked n'existe pas, soit il est vide"
End If
Set objFso = Nothing

jean-marc
0
Rejoignez-nous