Vérifier si pluisieurs noms de fichiers semblables existent
Résolu
36demi
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
36demi Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
36demi Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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
À 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:
- Vérifier si pluisieurs noms de fichiers semblables existent
- Fichiers epub - Guide
- Verifier compatibilite windows 11 - Guide
- Vérifier si mot de passe piraté - Guide
- Renommer des fichiers en masse - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
3 réponses
36demi
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
Désolé, ça ne fonctionne pas sous 2010.
Bonjour,
Sous forme de fonction :
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
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