Vérifier si pluisieurs noms de fichiers semblables existent

[Résolu/Fermé]
Signaler
Messages postés
5
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
14 juillet 2014
-
Messages postés
5
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
14 juillet 2014
-
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

3 réponses

Messages postés
1953
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
12 août 2021
151
Messages postés
5
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
14 juillet 2014

Désolé, ça ne fonctionne pas sous 2010.
Messages postés
24184
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2021
6 898
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
Messages postés
5
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
14 juillet 2014

Bonjour,
je veux récupérer le dernier existant.
Messages postés
24184
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2021
6 898
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
Messages postés
5
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
14 juillet 2014

Ça marche. C'est exactement le résultat recherhcé.
Merci eriiic.