Creer nouveau fichier + nom du fichier ?

Signaler
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010
-
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010
-
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

Messages postés
18
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
16 octobre 2011
1
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
Messages postés
22
Date d'inscription
vendredi 31 octobre 2003
Statut
Membre
Dernière intervention
2 novembre 2010

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
Messages postés
251
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
2 novembre 2010

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)