Creer nouveau fichier + nom du fichier ?

Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 2 nov. 2010 à 08:48
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 2 nov. 2010 à 10:25
bonjour,

à un moment du programme je souhaite créer un nouveau fichier txt (je sais faire)
je m'assure d'abord que le fichier existe ou pas sur le HDD
mais j'ai un problème avec le nom à lui donner :

s'il n'existe pas c'est simple je le créé (je sais faire)
et s'il existe déjà alors j'en créé un nouveau avec un chiffre en plus à la fin du nom (je sais faire pour "1")

ce que je ne sais pas faire :

j'aimerai pouvoir créer autant de fichier que possible suivant l'existence ou pas des 2 fichiers précédents,
c'est à dire avec "2" ou "3" ou "4", ou etc... à la fin

mais je ne vois pas comment mettre ça en place, c'est à dire scanner la présence, remonter le nom du plus élevé, et incrémenter le nom en fonction...

merci de m'aiguiller svp


_____________
 (débutant inside)

3 réponses

cs_Fabrice90 Messages postés 18 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 16 octobre 2011 1
2 nov. 2010 à 09:35
Salut,

Je pense que ce code va pouvoir t'aider :

[i]On vérifie si le fichier 'fichier-0.txt' n'existe pas, s'il existe:
on incrémente i et on vérifie si le fichier 'fichier-1.txt' n'existe pas, s'il existe:
...
on incrémente i et on vérifie si le fichier 'fichier-i.txt' n'existe pas, s'il n'existe pas, on le créer et on sort de la boucle while./i

i = 0
sortie = False

Do While sortie = False 
    If not objFSO.FileExists("fichier-" & i & ".txt") Then		'Si le fichier n'existe pas, on le créer
        objFSO.CreateTextFile "fichier-" & i & ".txt"
        sortie = True                                                   'Permet de sortir de la boucle while
    End If
    i = i + 1
Loop


Je l'ai codé directement, je ne l'ai pas testé mais je pense qu'il fonctionne.

Cdlt,
Fabrice
0
BOBO CALIMERO Messages postés 22 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 2 novembre 2010
2 nov. 2010 à 10:17
Personnellement, j'utilise une autre méthode. Je n'ajoute pas un indice à la fin de mon fichier mais la date et l'heure en cours.

Du coup je gère des noms de fichier tels que "Fichier_2010-11-02_10-30-53" (AAAA MM JJ HH MM SS).

J'utilise des variables systèmes (Date et Heure) pour éviter de déclarer et utiliser des variables supplémentaires (comme la variable i mais je suis maniaque !) et des fonctions telles que Date, Year, Month, etc.

J'évite les noms de fichiers doubles grâce à la précision apportée dans le nom de mes fichiers ; Si je sais que je ne crée pas 2 fichiers à la même seconde, alors je précise l'heure à la seconde près !

Sans "remettre en question la réponse" de Fabrice, qui est correcte, je crois qu'on peut simplifier (et s'affranchir de la variable sortie) :

i = 0

Do While objFSO.FileExist("Fichier-" & i & ".txt") = True 'Tant que le fichier existe
    i = i + 1        'Augmente son indice
loop

objFSO.CreateTextFile "Fichier-" & i & ".txt"        'Crée le fichier


--CALIMERO
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
2 nov. 2010 à 10:25
Fabrice90 : je vais essayé ton code merci

BOBO : pas con du tout l'idée de la date

je vais quand même essayer le code de Fabrice (ne serait ce que pour ma culture perso...)

et j'aviserai ensuite.

merci

_____________
 (débutant inside)
0
Rejoignez-nous