Vérifier si pluisieurs noms de fichiers semblables existent

Résolu/Fermé
36demi Messages postés 5 Date d'inscription mercredi 19 mars 2014 Statut Membre Dernière intervention 14 juillet 2014 - 19 mars 2014 à 17:00
36demi Messages postés 5 Date d'inscription mercredi 19 mars 2014 Statut Membre Dernière intervention 14 juillet 2014 - 24 mars 2014 à 19:34
J'ai un code qui permet de sauvegarder un fichier en ajoutant un suffixe lorsque le nom existe déjà.

À l'inverse, lorsque je veux ouvrir un fichier dont le nom est «ABCDEFG» et que j'ignore son suffixe ou s'il en a un.

Avec les versions 1997 et 2003, j'utilisais le code reproduit à la fin de ce message pour faire la recherhce. Avec la version 2010, l'instruction «Set fs = Application.FileSearch» provoque le message « erreur 445 cet objet ne gère pas cet action».

L'expression «Application.FileSearch» semble avoir disparu du language VB dans la version 2010. Merci à l'avance de partage vos connaissance à ce sujet.

Voici l'extrait du code qui pose problème.

Set fs = Application.FileSearch

With fs
.LookIn = FichierChemin
.Filename = FichierNom
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
nbFichier = .FoundFiles.Count
If nbFichier > 1 Then
FichierNomB = FichierNomB & nbFichier & ".xl*"
MsgBox "Ce dossier contient " & .FoundFiles.Count & _
" formulaire(s) semblable(s) à celui-ci. Le fichier " & FichierNomB & " a été sélectionné"
Else
FichierNomB = FichierNomB & ".xls"
End If

Else
MsgBox " Absent"
'FichierNom = FichierNom & ".xls"
End
End If
End With
A voir également:

3 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
19 mars 2014 à 17:08
0
36demi Messages postés 5 Date d'inscription mercredi 19 mars 2014 Statut Membre Dernière intervention 14 juillet 2014
24 mars 2014 à 19:32
Désolé, ça ne fonctionne pas sous 2010.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
19 mars 2014 à 18:52
Bonjour,

Sinon tu peux tester l'existence d'un fichier avec Dir() :
if Dir("C:\toto.xls")="" then msgbox "le fichier est introuvable!"

Je n'irais pas plus loin car je n'ai pas compris si tu voulais récupérer le dernier existant ou avoir le premier nom disponible.

eric
0
36demi Messages postés 5 Date d'inscription mercredi 19 mars 2014 Statut Membre Dernière intervention 14 juillet 2014
19 mars 2014 à 19:24
Bonjour,
je veux récupérer le dernier existant.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 20/03/2014 à 09:37
Bonjour,

Sous forme de fonction :
Sub test()
    ' exemple d'appel
    Dim fich As String
    fich = dernierFichier("D:\tmp\", "test", ".xls")
End Sub

Function dernierFichier(FichierChemin As String, FichierNom As String, Extension As String) As String
    ' retourne le dernier nom indexé utilisé
    ' chaine vide si inexistant
    Dim Fichier As String, i As Long
    Fichier = FichierChemin & FichierNom
    Do
        dernierFichier = Dir(Fichier & IIf(i = 0, "", i) & Extension)
        If dernierFichier <> "" Then i = i + 1
    Loop Until dernierFichier = ""
    i = i - 1
    If i >= 0 Then dernierFichier = FichierNom & IIf(i = 0, "", i) & Extension
End Function

Je pense que tu n'auras pas de mal à l'intégrer.
Ca sera juste un peu plus lent que ta précédente solution.

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
36demi Messages postés 5 Date d'inscription mercredi 19 mars 2014 Statut Membre Dernière intervention 14 juillet 2014
24 mars 2014 à 19:34
Ça marche. C'est exactement le résultat recherhcé.
Merci eriiic.
0