Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche dans une liste de fichiers incrémentés

3 réponses
Avatar
cricri
bonjour =E0 tous et encore bravo pour votre boulot!

j'ai un petit probl=E8me que je n'arrive pas =E0 r=E9soudre =E0 vous
exposer :

=E0 partir d'un xlt, je sauve par macro des fichiers xls dans un
repertoire. ceux-ci sont automatiquement incr=E9ment=E9s (incr=E9mentation
+1 ex : fcb-ims231.xls) =E0 partir d'un fichier xls (recapinfo.xls) qui
s'ouvre =E0 l'ouverture du xlt et qui permet =E0 l'utilisateur via un
unserform sur le xlt de modifier le num=E9ro d'enregistrement.

seulement voil=E0 : ce principe marche mais ne garantie pas
l'=E9crasement accidentelle de fichiers.

j'aimerai faire en sorte que dans ce m=EAme fichier recapinfo, je puisse
r=E9ccup=E9rer et extraire le nom de chaques fichiers contenus dans le
repertoire (lui aussi laisser au choix de l'utilisateur =E0 partir d'un
userform), =E7a c'est bon.

Mais comme le nom peut changer et le nombre de fichiers peut-=EAtre
inf=E9rieur =E0 100 comme sup=E9rieur =E0 1000, trier la liste pour
extraire (par ex) les num=E9ros par fonction (vba ou formule) style
droite(.....) ne me convient pas vraiment (vu que j'aimerai r=E9ccuperer
=E0 coup sur le num=E9ro et que lui pour l'inserer dans ma macro de
sauvegarde incr=E9ment=E9e +1

existe-t-il un moyen de lister les noms des fichiers pr=E9sents dans un
dossier pour n'en retirer que le num=E9ro (soit que les chiffres) afin
de r=E9ccup=E9rer dans mon userform et ma macro le chiffre le plus grand
pour v=E9rif???

Si quelqu'un peut m'aider, merci d'avance.

3 réponses

Avatar
anonymousA
bonjour,


une solution possible consisterait à écrire tes fichiers sous la forme
p.e toto_1.xls ou toto 1.xls, en fait toujours avec quelque chose entre
toto et 1.xls.
En effet, une fois ceci fait , on peut utiliser la fonction split (si tu
as Excel 2000 ou +) en association avec la méthode getbasename de
l'objet Filesystemobject.

Exemple: tu as un fichier toto_1.xls dans un répertoire qui s'appelle
C:TATA

si tu écris
Set fso = CreateObject("Scripting.FileSystemObject")

With fso
numincrement = Split(.GetBaseName("C:TATAtoto_1.xls"),
"_")(UBound(Split(.GetBaseName("C:TATAtoto_1.xls"), "_")))
MsgBox numincrement
End With

numincrement est alors égal au chiffre situé après le dernier caractère
"_" de la chaine textuelle renvoyée par fso.getbasename (ici le chiffre
1) et correspondant au nom du fichier sans path et sans extension.

Dans ces conditions, il est bien sur aisé de déterminer quel sera le
prochain nom du fichier.

Bien sur dans la réalité, il faut parcourir l'intégralité des fichiers
d'un répertoire donné ( grace à .FoundFiles.Count de filesearch p.e)et
ne s'interesser qu'aux fichiers dont le nom avant le caractère "_" est
égal à "C:TATAnomracinedufichier" ce que l'on peut faire facilement
grace à if
left(fileserach.FoundFiles(i),26)="C:TATAnomracinedufichier" dans cet
exemple puis passer le nom complet du fichier à la procédure décrite
plus haut et enfin faire un test pour vérifier au cours de la boucle de
parcours des fichiers que le numincrement est bien numérique et qu'on
garde bien le numincrement le + grand.


A+


bonjour à tous et encore bravo pour votre boulot!

j'ai un petit problème que je n'arrive pas à résoudre à vous
exposer :

à partir d'un xlt, je sauve par macro des fichiers xls dans un
repertoire. ceux-ci sont automatiquement incrémentés (incrémentation
+1 ex : fcb-ims231.xls) à partir d'un fichier xls (recapinfo.xls) qui
s'ouvre à l'ouverture du xlt et qui permet à l'utilisateur via un
unserform sur le xlt de modifier le numéro d'enregistrement.

seulement voilà : ce principe marche mais ne garantie pas
l'écrasement accidentelle de fichiers.

j'aimerai faire en sorte que dans ce même fichier recapinfo, je puisse
réccupérer et extraire le nom de chaques fichiers contenus dans le
repertoire (lui aussi laisser au choix de l'utilisateur à partir d'un
userform), ça c'est bon.

Mais comme le nom peut changer et le nombre de fichiers peut-être
inférieur à 100 comme supérieur à 1000, trier la liste pour
extraire (par ex) les numéros par fonction (vba ou formule) style
droite(.....) ne me convient pas vraiment (vu que j'aimerai réccuperer
à coup sur le numéro et que lui pour l'inserer dans ma macro de
sauvegarde incrémentée +1

existe-t-il un moyen de lister les noms des fichiers présents dans un
dossier pour n'en retirer que le numéro (soit que les chiffres) afin
de réccupérer dans mon userform et ma macro le chiffre le plus grand
pour vérif???

Si quelqu'un peut m'aider, merci d'avance.



Avatar
ClémentMarcotte
Bonjour,

Un coup d'expressions régulières:

http://cjoint.com/?gibor5mRNm


"cricri" a écrit dans le message de
news:
bonjour à tous et encore bravo pour votre boulot!

j'ai un petit problème que je n'arrive pas à résoudre à vous
exposer :

à partir d'un xlt, je sauve par macro des fichiers xls dans un
repertoire. ceux-ci sont automatiquement incrémentés (incrémentation
+1 ex : fcb-ims231.xls) à partir d'un fichier xls (recapinfo.xls) qui
s'ouvre à l'ouverture du xlt et qui permet à l'utilisateur via un
unserform sur le xlt de modifier le numéro d'enregistrement.

seulement voilà : ce principe marche mais ne garantie pas
l'écrasement accidentelle de fichiers.

j'aimerai faire en sorte que dans ce même fichier recapinfo, je puisse
réccupérer et extraire le nom de chaques fichiers contenus dans le
repertoire (lui aussi laisser au choix de l'utilisateur à partir d'un
userform), ça c'est bon.

Mais comme le nom peut changer et le nombre de fichiers peut-être
inférieur à 100 comme supérieur à 1000, trier la liste pour
extraire (par ex) les numéros par fonction (vba ou formule) style
droite(.....) ne me convient pas vraiment (vu que j'aimerai réccuperer
à coup sur le numéro et que lui pour l'inserer dans ma macro de
sauvegarde incrémentée +1

existe-t-il un moyen de lister les noms des fichiers présents dans un
dossier pour n'en retirer que le numéro (soit que les chiffres) afin
de réccupérer dans mon userform et ma macro le chiffre le plus grand
pour vérif???

Si quelqu'un peut m'aider, merci d'avance.
Avatar
cricri
PS : encore merci à clément et anonymous. aaahhh sans vous, beaucoup
d'aspirine en plus!!!!
le classeur est parfait, exactement ce je voulais.